This media is not supported in your browser
VIEW IN TELEGRAM
FAANG Master, теперь в 3D
13👍11😱1
This media is not supported in your browser
VIEW IN TELEGRAM
Пингвины из-за тарифов вынуждены искать новую работу.
😁20🙈1🙊1
Кандидат решил оптимально все задачи, но я его зареджектил

Кандидат собеседовался на позицию ML. Обе задачи решил оптимальным способом, код также был оптимальным. Правильно назвал space и time complexity. Тем не менее я его зареджектил.
На этапе тестирования, он был очень поверхностным, не нашел несколько опечаток. Также называл какие-то бессмысленные тест кейсы, а нужные не проверял.
На прямые уточняющие вопросы отвечал что-то вообще мало связанное с моим вопросом.

Отреджектил по verification и communication. Закралось подозрение, что он или читерил или плохо представляет, что такое тестирование. Также подозрительным был communication. После написания кода он мог его обьяснить, но до не мог ответить на уточняющие вопросы по решению. Хотя он сразу начал писать оптимальное решение.
🔥21
The Woodpecker Method

Этот метод был предложен шахматистом. По его утверждению, этот метод помог ему стать гроссмейстером в шахматах.

Метод похож на тот, который использовал я для подготовки к алгосам: https://t.me/faangmaster/571

Он также предлагает периодическое повторение уже решенных задач, вместо постоянного решения новых. И каждое новое повторение происходит быстрее и быстрее, в течении все более короткого времени.

Т.е. вместо постоянного решения случайных задач на литкоде(например, дейликов), лучше периодически повторять одну и ту же репрезантативную выборку задач.

https://youtu.be/O1keZYdPgD0?si=PdxBLt6LRryvCud-
👍28🤔3
On the Biology of a Large Language Model

Ученые из компании Anthropic (которая делает Claude) периодически публикуют работы, которые исследуют то, как LLM думают, рассуждают, как можно сделать их безопасными.

Очередная интересная работа: On the Biology of a Large Language Model. Они использовали новый метод - Attribution Graphs. Он позволяет более понятно и наглядно показать, как в реальности LLM приходит к ответу на запрос.
Например, для запроса: Fact: the capital of the state containing Dallas is
В LLM активируется кластера фич, которые отвечают за каждое отдельное слово: capital, state, Dallas.
Далее capital и state активируют фичу "say capital", которая активируется, когда нейросеть хочет предсказать столицу. Фича Dallas активирует фичу Texas. И наконец фича "say capital", Dallas, Texas активируют фичу "say Austin", которая предсказывает Austin следующим словом.
Аналогично, нейросеть работает при сложении. Она не размышляет в виде формальных логических законов арифметики. А также работает ассоциативно (интуитивно). Но если ее попросить объяснить, как нейросеть додумалась до ответа - она ответит совсем другое! Она ответит то, что мы хотим услышать, а не то, как она в реальности дошла до ответа. Про это есть отельное исследование, где исследуется CoT (chain of thought). Это когда модель проводит рассуждения. И оказывается, что то, что она выводит в качестве рассуждения - это не совсем то, как она в действительности рассуждает внутри.
Видео в тему статьи:
https://www.youtube.com/watch?v=-wzOetb-D3w

https://youtu.be/mU3g2YPKlsA?si=acOhiF5o19DChonN
👍10😁31🙉1
FAANG Master
The Woodpecker Method Этот метод был предложен шахматистом. По его утверждению, этот метод помог ему стать гроссмейстером в шахматах. Метод похож на тот, который использовал я для подготовки к алгосам: https://t.me/faangmaster/571 Он также предлагает периодическое…
Вообще, я понял, что неявно использовал этот подход много раз. В нём, вероятно, нет ничего нового — многие его применяют. Впервые это произошло во время подготовки к экзаменам после 9 класса. Так я учил билеты к устным экзаменам. Сначала запоминал каждый отдельно — это было долго и медленно. Для запоминания и проверки я воспроизводил материал вслух. Затем повторял сразу много билетов методом воспроизведения и сравнения с оригиналом, исправляя ошибки или дополняя то, что забыл. Так я делал примерно три раза. На третий раз воспроизведение стало быстрым, точным и лёгким. Все экзамены я сдал на отлично.
Второй раз это было летом, после 9-го класса. Я тогда поступил в специализированный Лицей, с уклоном в физику. На лето нам задали ~100 задач по физике из очень хорошего задачника среднего уровня. Что в нем было хорошего - в нем были подробные решения типовых задач. Это его роднит с книгой Cracking The Coding Interview. Мне никто не говорил как их решать, какой метод использовать. Я просто интуитивно применил ~тот же подход, только к задачам. Вначале разобрался с решениями этих 100 задач. Было долго и медленно. Потом повторил их уже с минимальными подсказками второй раз. А потом и третий раз. Как только мы пришли с каникул, в первые же дни нам провели калибровочную контрольную. По ее результатам я был второй в классе. Хотя до этого мой потолок был - районная олимпиада по физике. А в классе были призеры области и участники заключительного этапа. Меня сразу определили в сильную подгруппу и узкий круг тех, кого готовили на олимпиаду по физике. В тот же год я занял 3е место в своей области по физике. На следующий год я прошел на заключительный этап. В сборную страны я не претендовал, но я относительно поздно начал (всего 1.5 года подготовки в сумме).
Далее так же я готовился к вступительным в топовый вуз страны. Тогда не было ЕГЭ и вступительные экзамены были сложными. Про физику я не переживал, а вот математику пришлось быстро и сильно прокачивать. Я применил аналогичный метод. Я отксерил вступительные задачи и их решения из журнала Квант за последние 10-15 лет. И применил тот же подход из 3 повторений. В итоге я поступил в топовый вуз. Аналогичным образом я сдавал экзамены.
И наконец, когда я передумал быть физиком и стал программистом и в какой-то момент решил попасть в FAANG, то не зная ничего лучше - применил тот же подход уже далеко не в школьном или студенческом возрасте. И это сработало.
Я не говорю, что это единственный, оптимальный или применимый для всех метод. Но для меня он работал. Как минимум он хорошо подходит для обучения нейросети у меня в голове.
🔥32👍4
Краткий пересказ прошлой недели
😁31🤣8
Краткий туториал по Java Script
😁224🌚2
Войны этнических кланов в FAANG/BigTech

FAANG/BigTech — это большие, глобальные компании. Их продукты работают в большинстве стран мира. Они нанимают таланты со всего земного шара. В этих компаниях работают люди с разным культурным бэкграундом. Команды стараются делать смешанными — чтобы в каждой были представлены люди из разных стран и культур. Это должно помогать избегать перекосов и создавать сбалансированные команды. Но это — в теории.

На практике всё иначе: этнические китайцы и индусы — самые многочисленные группы. Более того, менеджеры (не всегда осознанно) чаще нанимают в команду людей своей этнической группы. Китайские менеджеры чаще продвигают китайцев, индийские — индусов, русскоговорящие — русскоговорящих. Это не всегда происходит из-за предвзятости. Часто люди одной культуры проще находят общий язык, быстрее обсуждают технические детали и лучше друг друга понимают. Поэтому коллега из «своих» может казаться более компетентным.

Нередко можно наблюдать конфликты между китайскими и индийскими командами внутри одного или соседних оргов — даже если они сидят в одном офисе.

Оценка перформанса и промоушены сильно зависят от менеджера. Поэтому выгоднее работать в команде, где менеджер — твоей культуры.
👍29🤔10😁5
Только что позвонил робот

На рабочий телефон позвонил робот и сообщил, что сработал алерт. Он назвал его полное название и предложил выбрать одно из нескольких действий, например, acknowledge и т.д.

А как у вас происходит уведомление, если что-то падает(paging, banana phone)?
😁12👍5
Подключился к митингу и 10 минут смотрел как индус едет на машине в офис в менло парк

Больше никого не было. Смотрел в тишине. Он подключился из машины.
🤣31😁16🆒3
Собеседовал кандидата, не понял, как он на full loop попал

На full loop процент прохождение кодинг части собеса, обычно, сильно выше, чем на screen. Более того, те, кто не проходят, все равно показывают хоть какой-то перфоманс и могут просесть по части осей или по конкретной задаче.
Этот кандидат не смог решить ни одной задачи оптимальным способом. Он предлагал только брутфорс решения.

Посмотрел, какие задачи у него спрашивали на скрине - там были 2 простые задачи на массивы.

Я всегда спрашиваю задачи на 2 разные темы и разные структуры данных и разные подходы в решении. И почти все, кто прошел скрин со мной, проходят кодинг часть на full loop. Может ~5% не прошли потом.
👍277
Топ вещей, которые меня удивили, когда я пришел работать в Facebook

До Facebook у меня было 13 лет опыта, в том числе 3.5 года опыта в Amazon. Казалось, что меня уже ничем не удивить, но достаточно много вещей меня удивили.

1) On-demand машины и cloud коммитов. Мы не чекаутим код локально. Мы открываем среду разработки, нажимаем кнопку для подключения к машине в облаке, и код в локальной среде разработке отображается так, как будто он не в клауде, а локально. Подключение занимает несколько секунд и у вас за эти несколько секунд up-to-date код. Более того, ваши коммиты, которые вы еще не запушили и делали их на другой машине в другой день - отображаются и вы можете их зачекаутить нажатием одной кнопки.
2) Монорепа. Несмотря на огромное число команд(тысячи) и огромное число продуктов, тут очень ограниченное число репозирориев. Большая часть фейсбука в одном репозитории. Т.е. десятки тысяч разрабов коммитят в один репозиторий.
3) Реально работающий CI/CD. Несмотря на монорепу и тысячи коммитов в день в одну репу - ваш код окажется в проде за несколько часов после code review.
4) Слабое покрытие тестами. Покрытие тестами небольшое. В Амазоне в нашей команде было 97%. Тут над тестами меньше запариваются. При этом число багов не очень большое.
5) Монолиты. Большая часть фейсбука и большая часть инсты - это монолиты. Понятное дело, что вспомогательные вещи вынесены в отдельные сервисы(периодические джобы, ETL) и слои с хранилищами(файловые для видео, картинок, кэш, база, nosql и т.д.), но основная часть бизнес логики в монолитах. Все это в комбинации с монорепой и CI/CD очень впечатлило.
6) Не используются электронные письма для коммуникации. Тут есть Facebook Workplace, которые похож на внутренную соцсеть. Есть чаты, группы, видеозвонки, стриминг. Люди вместо писем пишут посты. Люди лайкают, репостят, пишут комментарии.
7) Встроенные мемы в код ревью тул. Вместо тестов, описания изменения кода и комментариев, можно вставлять мемы, что часто и происходит. Вместо плана тестирования вставляют какой-нибудь мем.
8) Регулярные Q&A с Цукербергом. Для тех, кто в главном офисе - можно присутствовать физически. В других - можно удаленно сидеть на стриме. Можно задавать вопросы и т.д.
9) Крутые внутренние тулы. Легко искать и навигироваться по коду, писать запросы, строить дашборды и метрики и много всего другого.
👍47🤣3
😁33🤣11🔥43🙉2👍1
This media is not supported in your browser
VIEW IN TELEGRAM
Vibe coding идет хорошо, осталось сделать vibe debugging.
Угадайте изначальный промт.
😁20🔥5👍4
Задача с собеседования в Meta, Bloomberg: Вертикальный обход бинарного дерева

Задача.
Дано бинарное дерево. Нужно обойти дерево вертикально. Т.е. столбец за столбцом. В рамках одного столбца элементы должны быть сверху вниз.

Для элементов, которые в одном столбце и одной строке, в результате они должны быть слева направо.

Ссылка на leetcode: https://leetcode.com/problems/binary-tree-vertical-order-traversal

Решение.

Решение описал тут: Вертикальный обход бинарного дерева. 314. Binary Tree Vertical Order Traversal.
👍1842
Задача с собеседования в Amazon и Google: Valid Sudoku

Задача.

Определить, является ли корректным заполнение доски Судоку размером 9×9. Проверять нужно только заполненные клетки по следующим правилам:

- Каждая строка должна содержать цифры от 1 до 9 без повторений.

- Каждый столбец должен содержать цифры от 1 до 9 без повторений.

- Каждый из девяти блоков размером 3×3 должен содержать цифры от 1 до 9 без повторений.

Ссылка на leetcode: https://leetcode.com/problems/valid-sudoku

Решение.

Решение описал тут: 36. Valid Sudoku.

Код решение:

public boolean isValidSudoku(char[][] board) {
int rows[] = new int[9];
int cols[] = new int[9];
int squares[][] = new int[3][3];
for (int i = 0; i < board.length; i++) {
for (int j = 0; j < board[i].length; j++) {
if (board[i][j] == '.') {
continue;
}
if (board[i][j] < '1' || board[i][j] > '9') {
return false;
}
int index = board[i][j] - '0' - 1;
int value = 1 << index;
if ((rows[i] & value) > 0) {
return false;
}
rows[i] |= value;
if ((cols[j] & value) > 0) {
return false;
}
cols[j] |= value;

if ((squares[i/3][j/3] & value) > 0) {
return false;
}
squares[i/3][j/3] |= value;
}
}
return true;
}
👍113🤯1
Простой вопрос с собеседование на Java программиста

Как внутри устроен HashSet?

Ответ:
Под капотом это HashMap, в котором ключи - это объекты, которые мы хотим хранить в HashSet, а значения - объект класса Object.

Конкретно,

конструктор:

public HashSet() {
map = new HashMap<>();
}


Добавление:

    // Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();


public boolean add(E e) {
return map.put(e, PRESENT)==null;
}
👍18🥱62
Бессмысленные поведенческие собеседования в маленькие и средние компании

Я проходил поведенческие собеседования во все типы компаний, от стартапов на начальной стадии до компаний вроде Amazon и Facebook.

Раньше я считал, что это просто разговор о жизни и опыте. Но после прохождения поведенческих собеседований в FAANG я понял, что они гораздо более структурированы: у них есть чётко определённый и ограниченный перечень вопросов, а также понятные ожидания и критерии оценки.

И после поведенческих собесов в FAANG я поучаствовал в поведенческих собесах в не FAANG компании и понял что почти никто понятия не имеет как собеседовать и как оценивать. Многие спрашивают вопрос вроде: расскажи ченить про свой опыт. Это достаточно бессмысленный вопрос и вы на него получите такой же бессмысленный ответ. Все пытаются услышать какой-то опыт, который совпадает с тем как и что делает данная компания или команда. Но это можно узнать прочитав резюме + надо задавать конкретный вопрос, про какой-то опыт. Т.к. у человека может быть десяток-сотня проектов за карьеру и нужно понять, что вы хотите услышать. Но если ваша цель только в том, чтобы услышать ровно такой же опыт и такой же стиль работы, то зачем кандидату вообще нужна ваша компания, если он ровно над тем же и так же работает в другом месте.
И если ты выбрал не тот пример, который хочет услышать интервьюер, то это может быть прямым путем к реджекту. Хотя интервьюер не задавал четких вопросов. Т.е. это по сути бросание монетки.
Более того, собеседующие не имеет четких критериев оценки. Они просто смотрят на соответствие опыта и стиля работы (cultural fit) по их мнению.

FAANG компании же задают конкретные вопросы, на которых они хотят услышать пример, где вы продемонстрировали то или иное поведение или оказались в конкретного типа ситуации и какое поведение вы продемонстрировали. Также спрашивают конкретные примеры, которые помогают понять ваш уровень по масштабу проектов, масштабу конфликтов, масштабу direction, который вы задавали.
👍24
Получается ли у вас копить деньги работая программистом?

Расскажу как это было у меня.

Первые 9 лет карьеры у меня прошли в Москве. От интерна/джуна до тим лида. Первые несколько лет я работал part-time. В пике я зарабатывал $3500 gross в месяц. С учетом инфляции это $4600 или 380k рублей на современные деньги в месяц до уплаты налогов.
Мог ли я что-то откладывать тогда? Да, но не значительные суммы. Примерная математика: $3.5k в месяц это $42k в год. После налогов это $36.5k в год. Расходы: аренда однушки $7.2k в год, $10k еда, транспорт и другие текущие расходы, $5k - пару отпусков за границей в год, $5k - электроника, одежда, развлечения, рестораны и т.д. Итого примерно $27k расходов в год. $36.5k-$27k = $9.5k в год. Т.е. в пике я мог откладывать порядка $10k в год. С учетом инфляции это $13k в год или 1 миллион рублей на современные деньги.
Все это было в пике. Первые несколько лет я зарабатывал сильно меньше. В итоге за первые 9 лет карьеры (част из которых была парт тайм) я смог накопить ~$50k. С учетом инфляции это $66k или 5.5 миллионов рублей.

Когда я переехал в Германию, то я сначала ушел в минус. Нужно было снимать квартиру, покупать мебель и т.д. За год я примерно вышел в ноль.

За время работы в Amazon за 3.5 года я смог накопить более 100k евро. В учетом инфляции это $140k на современные деньги (11.5 миллионов рублей на современные деньги).

В Facebook я смог откладывать все деньги полученные с продажи акций. Это около $1.2M (После уплаты налогов это $600k или 50 миллионов рублей).

Получается ли у вас что-то откладывать?
🔥21👍8