Собеседовал кандидата, который меня пытался впечатлить знанием C++

Кандидат очень опытный, опыта больше чем у меня. Во время решения задач больше внимания уделял тому, как можно напихать больше крутых фич из C++ в решение задачи. Отвлекался на все подряд и постоянно отходил от основной цели - придумать алгоритм и его написать. В итоге не смог решить ни одну задачу. При написании кода глубоко уходил во второстепенные вещи и не смог никак продвинуться.
На таких собеседованиях не проверяется знание всех прикольных фич в языке. Проверяется, в первую очередь, способность конвертировать идеи в работающий код. Этого не произошло. Дальше простейшего цикла человек не продвинулся.
😢34😁17👍5
Почему сотрудники Google и Meta получают на порядок больше, чем в Amazon?

Если зайти на https://www.levels.fyi/?compare=Google,Amazon,Facebook&track=Software%20Engineer
то складывается впечатление, что разница между Amazon и Google/Meta для одного и того же уровня небольшая.
Но дело в том, что это стартовые оферы, которые вы получаете при найме на работу. Дальше Google и Meta каждый год дает своим сотрудникам refreshers. Это дополнительные акции, которые рассчитаны на 4 года с момента получения.

Например, ваш изначальные офер был: base: $216k, bonus: $32k, RSU на 4 года: $880k.
Дальше после первого года работы вам дадут еще $200k * performance. Например, ваш перфоманс был EE (exceed expectation). Тогда вы получите еще $200k * 1.25 = $250k на следующие 4 года к уже имеющимся $880k. Т.е. у вас уже будет $880k+$250K.
Аналогично после второго, третьего и т.д. года работы.

Итого за 4 года только акций вы получите: $880k + $250k * (3/4) + $250 * (2/4) + $250k * (1/4) = $1.255M если акции за 4 года не изменяются в цене. Обычно они еще растут в 2-4 раза за 4 года. Итого, можно получить очень много денег. В Amazon или Microsoft рефрешеры несравнимо хуже, чем в Google или Meta.

Например, в моем случае, мой изначальный офер был $360k акций на 4 года. По факту, я получил $1.2M за 4 года в виде только акций (не считая зп и бонусы). Одна из причин - рост акций после получения рефрешера в начале 2023 года.
10👍8
Шутки шутками, но я на этих шутках потерял за 1.5 месяца $64k (5.3M рублей) NW(net worth).
😢13🤣111
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