Привет, хабр! Что‑то я давно не писал, отбился от рук, а ведь когда‑то мы целый курс машинного обучения на Хабре вели. Расскажу про свой недавний заход по собесам, что спрашивали, какие выводы сделал. Контекст: Applied Machine Learning science (в том числе этот ваш Generative AI), Нидерланды, уровень синьор+. Я долго получал отказы, старался не унывать и в конце таки нашил лычку Staff GenAI Field Solutions Architect в Google Cloud. Тут поделюсь статистикой собесов, полезными ресурсами и, конечно, всякими советами.

Ну и как настоящий продажник и типа блоггер, упомяну, что все это и многое другое я описывал в телеграм‑канале «New Yorko Times». Рекламы там нет, а историй и баек про ML, матан, фэйлы и карьеру — много.

Характер моей работы

Чуть больше контекста: я живу в Нидерландах и переезд не рассматривал, работа была на момент поиска, более того, довольно крутая — Principal ML Scientist в большой корпорации. Титулы не передадут характер моей работы: чистый applied science, мы работали над прототипами, дальше, если у идеи есть потенциал — то в кросс‑функциональных командах с разрабами, продактами, проджектами пихали поделки в прод. В каком‑то смысле белые воротнички, т.к. поддержка решений ложилась не на наши плечи — мы прыгали к следующей идее (скорее всего что‑то с LLM). Так, например, родился и процветает классный проект по поиску фрода в науке (Research Integrity, описывал в телеге тут и тут).

Но я уже сидел почти 4 года в компании и, несмотря на два повышения, хотелось выйти на новый уровень, например, в тир-3 из классического поста Gergely Orosz «The Trimodal Nature of Software Engineering Salaries in the Netherlands and Europe». Так что я искал в основном что‑то типа Applied Science позиций в топовых корпорациях или стартапах.

Собесы

Отслеживать статистику своих собеседований я начал только с июля 2022. И за полгода до конца 2022 воронка была такая: 13 моих откликов, 4 игнора (2 отклика были с рефералами, 2 — без), 6 отказов на входе (из них было 2 реферала), 1 собес сам завалил (Booking), еще один собес показал взаимное отсутствие симпатии (eBay Classifieds) и только в одном месте успешно прошел все собесы (Amazon). Когда я подбил эту статистику и опубликовал, приятель разразился следующим мемом:

Это было неплохой разрядкой после 10-го отказа
Это было неплохой разрядкой после 10-го отказа

Booking.com, Senior ML Scientist, Амстердам

У букинга довольно интересный ML system design, с ярко выраженной бизнес-компонентой. И хоть я в целом знаю, как проходить собесы такого типа, с Букингом все же два раза завалил. Надо активнее готовиться и вычитывать все истории таких собесов, до которых можно дотянуться. Пример диалога:

- При поиске отеля на стартовой Букинга некоторые предложения подсвечиваются меткой «Hot» (представьте фильтр с Сицилией в июле). Как это понятие определить и как предсказывать эту метку?
- Порассуждал про деньги, имеющиеся данные, предложил решать как задачу классификации, передумал. Давайте предсказывать время до того, как будут проданы все места в гостинице. Если оно малО, вешаем метку «Hot»
- А как соберем данные конкретно для такой модели регрессии?
- Обсуждаем данные
- Хорошо, вроде понятно. Но вот мы предсказали, что все номера в июле будут распроданы. Но люди ведь также освобождают номера, и в августе метка «Hot» может быть уже нерелевантной.
- Точно! Предлагаю, как учесть сезонность
- А как убедиться, что модель лучше, чем более простая эвристика?
- Описываю постановку A/B‑теста, время кончается.

В 2018-ом фэйл был еще более красочный:

- Некоторые предложения в выдаче отелей подсвечиваются меткой «Value for Money». Как это определить и как предсказывать?
- Хм.. давайте посмотрим на два признака: цена и рейтинг отеля на букинге. Введем 2 порога и определим «Value for Money» как относительно дешевый отель с относительно неплохим рейтингом.
- Хорошо. А как это предсказывать будем?
- Берем такие‑то признаки отеля и такие‑то признаки клиента. Линейной моделью предсказываем бинарный целевой признак «Value for Money»
- Так, а признаки цена и рейтинг отеля будем включать в модель?
- Да... упс.. правда, они же уже определяют целевой признак

Вовремя не выкрутился, пришел фидбек, что я не понимаю разницу между обычными признаками (а.к.а. предикторами) и целевым :)

Сейчас я бы заложил больше времени и прошерстил бы просто полностью Glassdoor/Blind/LeetCode, наскряпал все вопросы в букинг на такие позиции да еще бы и к знакомым из букинга пристал.

eBay Classifieds, Senior Data Scientist, Амстердам

eBay Classifieds — это не совсем eBay, бизнес скорее похож на Avito, и eBay в какой‑то момент решил его продать холдингу Adevinta. С ними я собеседовался 2 раза и оба раза было взаимное отсутствие симпатии. Я им рассказывал, что ценю творчество и R&D, в ответ слышал что‑то типа того что «херачить надо», как если б это не было ложной дихотомией. И вообще даже моя Ph.D.‑степень выглядела минусом в беседах с этими ребятами. Проскакивало что‑то типа «это бизнес, мы тут о деньгах думаем, это не Ph.D.». Посыл понятен, попрощался вообще без сожаления.

Amazon, Senior Applied Scientist, Люксембург

Вот Amazon прекрасно понимает, что такое Exploration vs. Exploitation, и не только скупает перспективные стартапы, но также содержит немалый штат Applied Scientist‑ов. Тут первично слово «applied», характер работы такой, что ты исследуешь тему, ищешь новые решения (например, как завести нейронки для рекомендаций или как с causal inference убедиться, что увеличение кликов по рекламе действительно вызвано нашими изменениями в алгоритме), а потом катишь это в прод. Вплоть до того, что Applied Scientists тоже умеют в продакшн‑код. За хвалы Амазона можно кучу хейта схватить, но по моему собственному рисечу и общению с ребятами из европейских офисов Амазона сделал вывод, что в Европе все намного приятней, чем в US, делается поправка на work‑life balance, всяких URA (уволить 6% самых слабых) нет и в целом все адекватно, особенно в AWS.

Про собесы в Амазон материалов море, подробно рассказывать не буду. Но вкратце этапы были следующие:

  • на первом пара поведенческих вопросов, простые вопросы на ML depth (что такое эмбеддинг, в чем минусы использования сигмоид‑активации в нейронных сетях, как из BERT‑а получить представление текста), небольшой ML system design (без всяких подвохов, не как у букинга) и кодинг уровня изи‑изи (не сильно сложнее подсчета слов в файле)

  • техническая презентация про свой проект

  • кодинг уровня литкод‑изи

  • приближенный к жизни кодинг в стиле пройтись по файлу с кликами и БД с показами, посчитать CTR в разбивке по странам

  • ML breadth (снова большинство вопросов очень простые, типа чем случайный лес отличается от бустинга или LSTM vs. transformers — какие плюсы/минусы у обоих подходов)

  • ML depth

  • отдельный behavioral

Все прошел, сказали «красава! но но эту позицию мы уже наняли чела». Предложили Эдинбург, отказался, пошел матчиться с другой командой. Фриз, до свидания, приходи снова собеседоваться через год. Что я, кстати, и сделал.

Яндекс, ML engineer, Амстердам

С Яндексом я собеседовался по фану, ради опыта, не ML инженер я вовсе да и платят мало по мнению зажравшихся нидерландских синьоров.

Как и много лет назад, я не прошел, всему виной литкод. На тот момент я был надежно готов только к задачам уровня изи, а вот медиум уже 50/50. Собственно, на задаче в стиле MinStack (напиши структуру данных с операциями вставки, удаления и минимума со сложностью O(1)) я и поплыл чутка, решил, но «с подсказками интервьюера».

Из плюсов – подробная обратная связь. И первый собес на отладку кода трансформера мне понравился.

Uber, Senior Applied Scientist, Амстердам

Две простые задачи с написанием кода уровня «merge 2 sorted lists» и подсчета среднего в растущем списке. Далее вопросы ближе к бизнесу (потом от ex‑DS Lift слышал, что все «таксисты» этот вопрос задают) а‑ля есть гипотеза, что таксисты, у которых долго нет заказов, уходят оффлайн (то есть заканчивают на сегодня), как это проверить?

Фидбека не дождался, пришел ответ, что саму позицию в Амстере решили не открывать.

eBay, Principal Applied Scientist Gen AI, Амстердам

Тут я пошел по рефералу, причем отзывы о позиции были крутые. Generative AI, да что еще надо. Звонок с hiring manager понравился, он мне уже подкинул головоломок в стиле, как бы еще LLM-ки прикрутить к показу рекламы.

Второй собес с Applied Scientist слегка удивил. Чел гонял меня по своей боевой задаче — всякие bi‑encoders и cross‑encoders в задаче семантического поиска, а конкретно — рекомендации релевантных ключевых слов для рекламных объявлений. Там много заковыристых вопросов, например, надо ли эмбеддинги ключевых слов обучать отдельно от эмбеддингов рекламных описаний или вместе. Если вместе — то может, с metric learning, если да, то как. А вот вышел Iphone 20, у нас он начал появляться в описаниях, но в базе ключевых слов такого айфона еще нет, что делать? Я следил за проектом коллег с семантическим поиском, но все же на такие вопросы сложно ответить, если сам руками не пропахал подобное.

Ну и чел ожидал «продакшн‑опыт с RLHF», хех. Очень странное ощущение вызвал собес. Во‑первых, миддл собеседует потенциального принсипала (должность на 2 ступени выше), во‑вторых, спрашивает про такую узкую тему, в‑третьих, у него по сути право вето. Да, по продуманности процесса найма им до конкурента Амазона еще очень далеко.

LLM researcher в стартап, Лондон/ремоут

На бумаге описание выглядело очень круто, вилка роскошная. Сделал домашнее задание (оплачиваемое!) по файнтюнингу LLama-2, пообщался с командой, услышал много комплиментов в свой адрес. Пришла отмаза в стиле «ты у нас не будешь счастлив, мы не хотим тебя перетаскивать с насиженного места». Знакомому ответили примерно то же. Осталось впечатление, что верхнюю границу вилки они приукрасили. Fun fact: среди собеседующих был мой менти.

HFT фонд 1, ML researcher, Амстердам

Никогда бы не стал туда собеседоваться, если б знакомый из Амазона не скинул контакты эйчара и не озвучил вилку. Космос просто! К тому же не требуют опыта HFT.

Пообщался с hiring manager, почти идеально решил алгоритмическую задачу (там немало HFT‑тематики и контекст больших данных, надо аккуратно смотреть, что лезет в память, а что нет, но в целом простая задача как вник — на словари). А вот с ML‑задачей под конец 4-го часа затупил.

Но жалеть особо не о чем, ребята работают по 50–60 часов в неделю, да C++ снова осваивать — такое я, молодой отец, с большим бы трудом потянул.

HFT фонд 2, DL researcher, ремоут

Довольно известный в узких кругах фонд, head of Deep Learning подключился ко звонку из качалки (ребята из ODS поняли, о ком речь). Выдали домашнее задание на отладку PyTorch-кода обучения модели в задаче time series. Все сделал, кучу багов нашел, получил фидбек, что я справился, но кто-то справился лучше. Классика. Опять же, это был бы слишком хардкор для меня, так что двигаем дальше.

Снова Amazon, Applied Scientist, Амстердам

История как год назад, с той лишь разницей, что я не прошел:) Bar raiser‑у не понравилась пара моих ответов про leadership principles и один технический вопрос про p‑value я тоже запорол (проводим кучу экспериментов, каким будет распределение значений p‑value при верности нулевой гипотезы?).

Тут я не сильно жалею, поскольку собирались лоуболить до L5 (миддл). Я конечно понимаю, что Амазон крут, но не с принсипала на миддла же идти, кек.

Fun fact: еще один мой менти прошел все собесы, причем на L6, ситуация как у меня в 2022 — успели нанять другого, попал в бэклог.

Промежуточный вывод при счете 0:10

После кучи собесов и 10-ти отказов я в целом верил в хэппи-энд. Вот концовка тогдашнего поста, когда все мои менти нашли работу, а у меня было 0:10 за душой:

Как поет Би-2, «я двигаюсь дальше». Уж сколько было историй, как в гуглы попадали с n+1-ого раза, надо просто не падать духом и проявлять настойчивость. Ситуация, конечно, непростая. И лэйоффнутых много, и рыночек постепенно поворачивается лицом к работодателю. Но все возможно. Такая вот мотивирующая история фэйлов.

Apple Music, ML Researcher for Recommender Systems, Лондон

Отказали после первого собеса, наняли моего бывшего коллегу, который уже в Лондоне да с большим опытом в рекомендашках. Fair enough.

Aiforia, ML Team lead — выходцы из Алисы и Sber Devices, сейчас на Кипре

Прошел HM‑a (смесь бихейв/технического), далее kaggle‑грандмастер Влад Крамаренко погонял меня по «основам эмэль», что было легким троллингом, таких заковыристых вопросов я давно не видел. Некоторые начинались с затравки «я сам не знаю тут ответ». Но в целом нужен был опыт с голосовыми технологиями, которого у меня совсем нет, так что без вопросов, не прошел.

Replika

Увидел их пост в Вастрик клубе, что ищут фронтендеров, но можно писать и просто так. Написал CTO, пообщались. Не то чтобы прекрасный матч, ребятам нужны исследователи с большим уклоном в инженерию. Для себя сделал вывод, что как бы я ни хотел подсветить Applied Science, не стоит допускать фразы типа «копаться в конфигах» ?

Nvidia, Senior Applied Scientist

Боль и позорище, меня просто укатали в асфальт. Не failed, а failed miserably.

Знакомство сразу типа «че, порох нюхал? на чем DPO гоняешь? Как distributed model parallel делал? Не, не делал, только DDP? Жаль, жаль... А че, 70b модели не трогал?». Интервьюер китаец и очень вежливый, но вайб примерно такой.

Дальше неплохо. Трансформер, NLP, все дела. Архитектуру трансформера вообще почти все спрашивают. Правда, чел лихо делал отсылки ко всяким статьям типа Retro, начитанный. Но я вроде неплохо поддержал беседу.

Посыпался я на первом же вопросе про инжиниринг. В чем отличие хранения переменных в стеке от кучи? И как это связано с локальными/глобальными переменными? Я не то что забыл, думаю, я никогда даже не изучал это. Я вопрос-то распарсил со второго раза. Максимум мог промямлить, что стек появляется при рекурсии. Апогеем собеса стал вопрос №24:

Мой реальный вопрос на собесе с Nvidia
Мой реальный вопрос на собесе с Nvidia

И алгоритмы: задача «8 ферзей». Классика, CS 101, по словам интервьюера. Код писать не надо было, только решение описать. Но я что-то начал лепить то dynamic programming, то бэктрекинг. Хоть сложность факториальную правильно оценил, но все же четко не расписал решение с DFS. Думал это простая задача, база, а это хард.

NVIDIA ищет единорогов, крутых и в рисече, и в инженерии. Могут себе позволить, в описании вакансии Senior Applied Scientist вилка для US 180-333k, и это только base. А акции потолок пробивают. Так что все нормально.

Как грится, лайк если было
Как грится, лайк если было

Cohere, Member of Technical Staff

C этими ребятами прям все понравилось, очень адекватные собесы. Мелкое тестовое на оптимизацию питонячего кода (тут попалась та же задача, что мне Влад Крамаренко давал, так что не зря с ним собеседовался, хех). Вместо литкода –  ML coding, надо было реализовать сэмплирование из упрощенного LLM-декодера (жадное, top-k, top-p). ML system design был прямо про систему оценки LLM, над которой Cohere прямо сейчас работает. Полагаю, они немало идей черпают у кандидатов. И обзор статьи на выбор, тоже про LLM evaluation. В финале поведенческий собес с большим боссом, и как-то искры не проскочило, получил не фидбек, а отмазу какую-то типа “lacked the level of adaptability and speedy execution”.

Snorkel AI, Staff Applied NLP Scientist

Вот к этому варианту я прямо эмоционально прикипел (хоть и совет: не делать так до оффера). Стартап, основанный 5 пхд из Стэнфорда, бурно развивается, единорог. Видение у них довольно стройное: компаниям не нужны монстры с 1.8T параметрами, им нужны специфичные модели под свой домен, затюненные на своих данных (YC согласен: «Request for startups»: small fine‑tuned models as an alternative to giant generic ones). Snorkel топит за подход с programatic data labeling, который экономит время экспертов на разметку, а также вовсю юзает LLM для soft labels. Плюс дистилляция/квантизация — получаем мелкие и мощные модели, в блоге Сноркела полно таких историй (пример).

Тут тоже были очень адекватные собесы: сразу поведенческое, потом ML coding, ML system design и презентация про рисеч‑проект. И вот за последнее я словил фидбек «has shown too much leadership». Причем, все остальные собесы — отлично. Шо бля? Я, конечно, сначала негодовал, но потом понял: «Юпитер, ты сердишься — значит ты не прав» (вики). Надо было уточнить у эйчара, какой архетип стаффа им нужен. Я техлид, а они, видимо, искали решалу, который может в одиночку рвать лидерборды и тащить проекты. Вот так, на горьком опыте, я добавил себе +1 вопрос к эйчарам/HM.

LLM-стартап, VP AI (оффер)

Стартап неизвестный, pre-seed, зато позиция аж VP, можно было бы пойти 6-ым сотрудником, с целым 1% компании. Заманчиво, но я трус и стартап не делаю.

Автор этого шедевра, найдись
Автор этого шедевра, найдись

Собес был довольно необычный — мне заранее прислали док с ~20 вопросами про все что угодно. «Мы LLM‑стартап, почему нас не убьет следующее обновление OpenAI?», «Галлюцинации в нашем деле критичны, что с ними будем делать?», «Как будем встраивать исследовательский отдел в структуру компании?». И вплоть до такого: «Сейчас все гоняются за GPU; может, мы будем умнее и посмотрим на новые чипы?». По всем вопросам предлагалось поделиться своим видением. Пожалуй, самый интересный собес. Изначально CTO хотел потратить полчаса на литкод, но по ходу разговора такой: «ладно, не будем фигней страдать, хорошо беседа идет — high‑bandwidth conversation».

Google Cloud, GenAI Field Solutions Architect (оффер)

В Гугл я зашел с реферала, наконец не заигнорили. По иронии, реферила меня девушка, которой я сам помог уйти из Гугла («Она в Мистрале, а ты — нет»).

Гугл постепенно сошелся к формату 4-х собеседований (это раньше могло быть и по 15–20). У меня были следующие раунды:

  • leetcode + system design

  • Role-related knowledge

  • leadership & googleyness

  • General Cognitive Ability

  • «casual» беседа с менеджером

В первом раунде литкод показался простым, а дизайн — сложным. Дизайн я ботал основательно (к слову о том, что с собесами успех — это на 50% усилия и на 50% удача, все же ни к одной компании я не готовился так долго). У бигтеха можно попросить пару недель на подготовку, обычно к этому нормально относятся. И моки оказались очень полезны, особенно учитывая, что до этого я ни разу не проходил дизайн‑интервью.

Role‑related knowledge — это про LLM и консалтинг, было немало вопросов о том, как описать LLM для клиентов, топ‑менеджеров, инженеров. Технические вопросы показались не сложными (курса «Generative AI with LLMs» и своего опыта с LLM хватило), а вот для вопросов про бизнес‑смекалку и консалтинг не помешала бы практика с бизнес‑кейсами, как в big4 проверяют.

Leadership & googleyness — это, считай, поведенческое собеседование. Несмотря на то, что сам менторю, я прошел 4 мока, узнавал, что именно хотят услышать при собесах на стафф позиции в гугле. Это было дико полезно. По итогу я довольно основательно перелопатил свой story bank. Благо, на собесе не было вопросов с подвохом типа «tell me how you used data to modify your strategy», было более‑менее понятно по вопросу, о каких лидерских качествах речь и какие свои истории рассказывать.

General Cognitive Ability — это open‑ended вопросы в стиле «друг открыл магазин шоколада, посоветуй ему бизнес‑план». Тут есть четкий фреймворк, легко ботается. Мне очень помог вот этот ютуб канал (там же и про переговоры целый плэйлист). Дополнительно я брал консультацию с небольшим моком, где мне посоветовали говорить медленнее.

Ну и «casual» беседа с менеджером — никакая не casual, надо рассматривать как бихейв. О жизни можно потом трепаться, как наймут, на собесе смотрят на сигналы, готовился как к бихейву, заготовил самые крепкие истории.

В целом оцениваю вклад бихейва примерно в 80%. Ага, сам не ожидал, что с гуглом такое может быть. Но тут все же позиция в Sales трек, а не SWE, очень много с клиентами и топ‑менеджерами надо будет общаться, поэтому и такой уклон.

Отвечая на самый предсказуемый вопрос «чё? скока?»: 40 ч/нед.

Статистика по 48 собесам на Applied ML Scientist

Типы собесов

По типу собеседований из 48 событий распределение такое:

  • Поведенческое — 13.5

  • Кодинг — 8.5

  • ML в ширину — 6

  • ML в глубину — 5

  • ML‑кодинг — 4

  • Рисеч‑презентация — 4

  • ML дизайн — 3.5

  • Домашнее задание — 3

  • System design — 0.5

Тут, конечно, надо оговориться, что поведенческие — это что угодно, от бесед за жизнь с менеджером («ну, что делал?») до амазоновских «tell me about a time you took an urgent decision without data». Кодинг — не только пресловутый литкод, больше было даже другого: попарсить данные, посчитать CTR + из области scientific computing (оцени Пи, посчитай доверительный интервал бутстрепом).

И профиль — Applied Scientist, а не SWE, уровня синьор+, поэтому так мало систем‑дизайна и так много поведенческих.

Лиды

Еще меня немало спрашивали про лиды, то есть как я заходил на первый собес. Тут такая стата:

  • Реферал — 7

  • Холодный отклик — 4

  • Написал напрямую HM — 4

  • Рекрутер/HM сам написал — 3

  • OpenDataScience/Singularis.ai — 2

По моему опыту, рефералы все еще работают, хотя на реддите конечно сетуют, что раньше было лучше. Холодные отклики у меня тоже иногда работали, и в целом поработать над резюме надо, но универсально это сложно советовать. Какие‑либо борды кроме LinkedIn я почти не смотрел — попробовал пару, показалось мусором.

Из креативного — иногда писал напрямую рекрутерам или нанимающим менеджерам, тут дело случая, где‑то фаундер читал доклад у нас в компании — написал, в Вастрик‑клубе есть регулярные треды «Ху из хайринг», туда Реплика заглянула с вакансиями на фронтендеров, но написали «если не фронтендер, но хорош — пиши. обсудим». В‑общем, помимо скролинга ленты LinkedIn фантазию надо подключать.

По источникам рефералов: хорошая экселька висит в DS‑сообществе singularis.ai в канале career, вижу треды с рефералами в Blind и slack Rands — можно попробовать, но кажется, спрос на рефералы там огромен, а о предложении сложно судить.

Что спрашивали

Хотел еще стату подбить по вопросам, что вообще спрашивали. Но я все‑таки не все логировал. Из того что запомнилось:

  • кодинг на позиции Applied Science — в целом уровня изи, это порадовало, медиум всего один раз (с Яндексом), хард тоже один раз, но код не надо было писать (Нвидиа)

  • раза 4 на ML breadth спрашивали про p‑value, это надо и зазубрить, и понимать

  • на ML breadth с уклоном в NLP почти все лезут в устройство трансформера и внимания

  • бихейв заковыристый только у Амазона. С другим бигтехом тоже было много поведенческих собесов, но ни разу вопросы на ставили в тупик. В большинстве случаев это все же «расскажи про проекты, которыми гордишься», могут спросить еще про фэйл или конфликт

  • ни разу (!) меня не спросили про слабости. Показалось даже, что важность вопроса переоценена либо у меня bias и повезло с собеседующими.

Ресурсы в помощь

Поведенческие собеседования

Тут главное — расписать story bank (не пожалеть на это времени) и пройти моки. Вот хороший пост.

  • IGotAnOffer — блог со статьями от подбора вопросов на MLE в Мету до «Why Amazon?» и как рассказывать про свои фэйлы и конфликты

  • Если посидеть, спокойно послушать, почему все это важно — видео Jackson Gabbard

  • Гайд от interviewing.io — вольный пересказ Amazon Leadership Principles

  • И главное — моки и реальные собесы. Причем моки могут быть полезнее — тебе расскажут прям про подноготную, на реальных собесах еще поди получи внятную обратку. Я приставал напрямую к людям из желаемой компании, но есть и платформы: та же interviewing.io (писал как‑то кулстори про brilliant jerk, который не мог ни один бихейв‑собес пройти, а сейчас в OpenAI), еще слышал хорошие отзывы про Exponent.

Кодинг

Казалось бы, что тут нового скажешь. Я тоже писал, как пстра освежить литкод. Neetcode roadmap и Leetcode Premium — это да. Но я повторюсь про моки. Live‑coding это вообще непростое дело: надо думать, писать код, слушать и складно говорить. А все одновременно! Такое надо практиковать. Вот правда, люди не могут внятно озвучивать свой код — идет аа…эээ… ууу.. и прочие бабуинские хмыкания. Для моков по литкоду — тот же interviewing.io, но есть и вариант для простых ребят — pramp, там peer2peer.

ML в ширину

  • mlcourse.ai (я тащил этот курс). Не, серьезно, я как тот дед, читающий свои учебники, перед собесами пролистываю mlcourse.ai. Bias‑variance, бустинг vs бэггинг, где там в градиентном бустинге градиенты — все это до сих пор вовсю спрашивают (тот же Amazon на Applied Scientist).

  • По NLP есть курс‑жемчужина — NLP For You Лены Войты. Плюс посты Jay Alammar про архитектуру трансформера.

  • У Дьяконова я подсмотрел вот эти конспекты «Illustrated Machine Learning» + еще подборка Daily Dose of Data Science хороша.

  • Наконец, есть драфт книги Chip Huyen «Machine Learning Interviews», там все от видов специализаций в ML до переговоров и списков вопросов по ML, кодингу и матану.

ML в глубину

Тут особо нечего посоветовать, оно из рабочего опыта все идет. Разве что можно эрудицию развивать чтением блогов а‑ля ML in the Wild. У Evidently есть подборка из целых 450 штук (этот же совет и для ML дизайна ниже). Я читаю 2–3 блога о компании, куда собеседуюсь, и еще 2–5 — наиболее близких к описанию вакансии.

ML-кодинг

Специально не готовился, так что все тот же совет — моки.

Рисеч-презентация

Тут тоже каких‑то ресурсов нет под рукой. Совет — уточнить у эйчара или HM, что хотят услышать: хардкор по теории, инженерии или еще что. Чтоб не словить «too much leadership», как я.

ML дизайн

Да, тут есть популярные книги, но реалистично, перед собесом — это не книга нужна. Из всех ресурсов я выделю вот эту репу. Там и шаблон из 9 пунктов, которому можно следовать (problem → metrics → data → etc). И типичные кейсы разбираются, уже форматированные по шаблону.

Домашнее задание

Про take home сколько уже срачей только не было (писал как-то про плюсы-минусы). Я не вставал в позу и 3 домашки сделал. Одна просто классная была на instruction fine‑tuning LLM, еще одна очень легкая, 3-я — наоборот, сложная, запорол.

System design

Наконец, system design, не путать с ML‑дизайном, собесы совершенно разные. System design я ботал с нуля, за пару недель, часов 30 наверное заложил. Заботал все перечисленные ресурсы, от и до:

  • гайд все тех же interviewing.io

  • System Design Primer (классика)

  • книга «System Design Interview» — страниц на 200, куча картинок и схем, быстро читается

  • курс Neetcode (платно, некоторые видео на ютубе есть)

Суть собесов: марафон, гигиена кукухи и контролируемая лотерея

Списки ресурсов это здорово, но закончить я б хотел на самом важном — психологической составляющей долгосрочного поиска работы. Полно историй на LI/Glassdoor/Blind/etc, как чел страдал‑хромал, потом таки устроился в компанию мечты. Часто истории приправлены списками вопросов (или ресурсами, как у меня) — это полезно. Видел хорошие советы, что это лотерея и просто keep going, несмотря на фэйлы. Поддерживаю, но кажется, надо дополнить. И вроде по тем историям, что я читал, недостаточно говорят о психологической составляющей такой авантюры как X собесов с Y компаниями (48/18 у меня). Я не эксперт в чем‑либо касающемся психотерапии и mental health, ни разу не выгорал, но все же поделюсь советами, которые помогали мне:

  • Марафон: забег по собесам надо сразу рассматриваться как марафон. Да, повезти может и раньше, но на всякий случай лучше настроиться на год и десятки собесов.

  • Гигиена кукухи: спорт/медитация - все что помогает. Хоть я и не выгорал по-настоящему, тут с собесами звенели первые звоночки, вся эта хурма лезла в голову, начал посреди ночи просыпаться, обдумывать. Уже даже перестал чай на ночь пить, чтоб не просыпаться и не бежать ссать в 4 утра, чтоб потом валяться бревном, обдумывать это все. Исключайте очевидно нездоровые практики, одна молодая мать с грудным ребенком ботала с телефона в уме медиум-задачки на литкоде, поняла, что оно того не стоит.

Картинку упёр у Бориса
Картинку упёр у Бориса
  • Контролируемая лотерея: крылатая фраза, что собесы — это лотерея и numbers game. Все так, можно душно добавить прилагательное: контролируемая. То есть за счет упорной работы все же можно повышать вероятность того, что тебе в этой лотерее повезет. Мне кажется, называть собесы просто лотереей неконструктивно — снимает с тебя ответственность и имеет некий вайб фатализма. Нет, все же собесы, это на 50% удача, на 50% — твоя усердная работа.

  • (тяжело) не привязываться эмоционально к потенциальному варианту, пока не получил оффер. Очень сложно представить себя уже «там», обломаться и возвращаться к своим баранам и тем же задачам, даже если они интересные. Сам это нарушил со Snorkel, как‑то взял да настолько поверил в этот вариант, что лишка привязался.

  • (не универсальный совет): я сразу верил в лучшее. Когда видишь, что отваливаются крутые варианты на самом последнем этапе, невольно думаешь о той самой лотерее и что не может все время не везти. Рано или поздно повезет. Совет не универсальный, так как есть куда более тяжелые ситуации, чем моя, например, срочный поиск работы для визы, клиническая депрессия от постоянных неудач или фатальное отсутствие приглашений даже на разговор с эйчаром. Кстати, один психологический трюк мне папа подсказал, пока еще был жив, а я на физтехе учился. Перед типичным экзаменом на завал, допустим, по теорфизике, я ботал днями напролет с ощущением, что лох и все равно завалят на первом же вопросе. Папа давал такой совет: «Смотри, ты нормальный парень, значит, лет через 5 нормально закончишь физтех. Каждый год его заканчивают тысячи ребят, ты ничем не хуже. Значит, отматывая назад, завтрашний экзамен ты нормально сдашь. Ну, может, с пересдачи, но сдашь». Эдакий working backwards, только за много лет до книжки Амазона, которую каждый попугай прочитал. Это аналогия, у меня она работала скорее на подкрепление в стиле «в конечном счете мне повезет, значит, это вполне может быть и этот вариант с ядреным завтрашним собесом».

  • Не запариваться с обратной связью. «Во мне что‑то не так», «почему они взяли другого» — вот тут можно очень глубоко и надолго провалиться в ненужную рефлексию. Да, они взяли другого, это нормально. Может, у него опыта больше, может еще что, да банально по локации взять туземца — типичное дело. Как пример, Apple отшил меня после первого собеса, который я, как казалось, отлично прошел. Вакансия в Лондоне была, и в итоге они взяли моего бывшего коллегу: он уже в Лондоне и с чуть большим опытом в рекомендашках, явно лучше подходит. Ну и стоило ли мне днями‑ночами рефлексировать, почему меня не позвали дальше. Нет (благо, на тот момент я уже это понял и просто двигал дальше).

Заключение

Надеюсь, в моих советах не так много survivorship bias, как в меме про лотерейные билеты.

xkcd "Survivorship bias"

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

Удачи!

Комментарии (18)


  1. Lord_Alzov
    16.07.2024 09:57
    +3

    Пример диалога:

    - При поиске отеля на стартовой Букинга некоторые предложения подсвечиваются меткой  "Hot" (представьте фильтр с Сицилией в июле). Как это понятие определить и как предсказывать эту метку?
    - Порассуждал про деньги, имеющиеся данные, предложил решать как задачу классификации, передумал. Давайте предсказывать время до того, как будут проданы все места в гостинице. Если оно малО, вешаем метку "Hot"
    - А как соберем данные конкретно для такой модели регрессии?
    - Обсуждаем данные
    - Хорошо, вроде понятно. Но вот мы предсказали, что все номера в июле будут распроданы. Но люди ведь также освобождают номера, и в августе метка "Hot" может быть уже нерелевантной.
    - Точно! Предлагаю, как учесть сезонность
    - А как убедиться, что модель лучше, чем более простая эвристика?
    - Описываю постановку A/B-теста, время кончается.

    Дак это простейшая задача, просто, что бы понять, понимаешь ты вообще, чем нужно заниматься и каки реальные задачи у бизнеса или нет. Сейчас беда в том, что везде готовятся к leetcode и теории, но бизнесу нужно РЕШАТЬ БИЗНЕС ЗАДАЧИ, а не мучать алгоритмы и углубляться в теории распределения.

    LLM-стартап, VP AI (оффер)

    Стартап неизвестный, pre-seed, зато позиция аж VP, можно было бы пойти 6-ым сотрудником, с целым 1% компании. Заманчиво, но я трус и стартап не делаю.

    А вот это интересно, давно собес был? Дай контакты компании, тебе уже не нужно, а мне нужно.


    1. jandevel
      16.07.2024 09:57

      Для меня удивительно, что в этой "простейшей", как вы выразились, задаче, плывет сам собеседующий.

      Но вот мы предсказали, что все номера в июле будут распроданы. Но люди ведь также освобождают номера, и в августе метка "Hot" может быть уже нерелевантной.

      В этом вопросе у него самого отсутствует понимание метки "Hot" в контексте функционала букинга. Так как, если я правильно понял, метка привязывается к определенным параметрам поиска, к примеру 2 - 5 июля или 7-13 августа. И нас совершенно не интересует в данном случае, что будет после этих дат.


      1. yorko Автор
        16.07.2024 09:57

        Не стал бы прямо утверждать, что собеседующий «поплыл». Диалог пересказан примерно, по памяти. Скорее если что не так, мой косяк.


    1. yorko Автор
      16.07.2024 09:57
      +1

      Простейшая задача или нет - вопрос субъективный. Мне эти вопросы показались сложными, так как они сильно специфично про бизнес букинга. Поэтому и готовиться надо было активнее (честно описал свой фэйл - любимое).

      про решение бизнес-задач согласен.

      А вот это интересно, давно собес был? Дай контакты компании, тебе уже не нужно, а мне нужно.

      Собесы пару месяцев назад были. Но к сожалению, ребята решили не нанимать VP AI, пока не потянут.


    1. slonopotamus
      16.07.2024 09:57
      +8

      Когда я пользовался букингом, пришёл к выводу что Hot не означает ничего. Просто жалкая попытка манипуляции, как и "это объявление щас смотрят ещё N человек, торопись". Если бы Hot означала что-то полезное, при наведении на неё мышки вылазил бы тултип "Hot означает вот это вот".


      1. yorko Автор
        16.07.2024 09:57

        Полагаю, такие манипуляции работают. В денежном смысле. А то что UX страдает - видимо, пофиг, на деньгах не так сказывается. Либо не могут померять, как это влияет на отток (правда, нетривиально). Все как с чат-ботами.


  1. CrazyElf
    16.07.2024 09:57
    +8

    Меня давно занимает загадка: зачем Яндекс настолько на алгоритмы задрачивается. Может я просто пока в таких компаниях ещё не работал, но чтобы считать умение ботать алгоритмы самым главным умением работника - это как-то странновато. В реальной работе это только одно из умений, и не самое важное.


    1. cheshirskins
      16.07.2024 09:57
      +2

      Мне кажется, что здесь вопрос скорее в лояльности. Возможно такой программист и не будет лучшим во всех ситуациях, но он точно способных и с поставленной задачей справится, но, что самое главное, он специально готовился для компании, поэтому будет удобен, по крайней мере в первое время.


      1. jandevel
        16.07.2024 09:57
        +5

        но он точно способных и с поставленной задачей справится

        Более чем спорное утверждение в контексте ML домена.


        1. cheshirskins
          16.07.2024 09:57

          В контексте ML я могу лишь предполагать, поэтому, скорее всего, действительно ошибаюсь. Тем не менее, задачки с leetecode и тому подобное что-то вроде универсального показателя. Такой показатель хоть и дает большую погрешность, но для крупной компании это, наверное, не такая проблема. Мне не верится, что выпускник какого-нибудь МФТИ, который успешно решает алгоритмические задачки, в итоге не сможет нормально справится с любой другой задачей в IT, особенно если он будет частью большого IT-комьюнити.


          1. yorko Автор
            16.07.2024 09:57
            +4

            Провалиться в литкод-срач очень легко, и я ожидал, что это будет обсуждаться под постом про собесы.

            Для себя лично я так решил: задачи в стиле литкод хороши, если они уровня Easy. Отсеять людей, впервые увидевших питон/алгоритмы/IDE. Отсеять самозванцев - отлично. Подсчет слов в файле, посл-то Фибоначчи - все сойдет. У таких вопросов высокая «разрешающая способность», т.е. они эффективны по отсеву неподходящих кандидатов на единицу времени интервьюера.

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


            1. cheshirskins
              16.07.2024 09:57
              +2

              Согласен с вами. Однако, по личному опыту, для джуна сейчас требуется leetecode уровня middle помимо прочего. До сеньеров инцерция ещё не дошла, но лучше быть готовым))


              1. yorko Автор
                16.07.2024 09:57
                +1

                Кажется, наоборот, на блайнде полно историй, как от синьоров SWE в бигтехе требуют литкод хард, что близко к абсурду.


      1. ris58h
        16.07.2024 09:57

        и с поставленной задачей справится

        С какой? Написать алгоритм? Редко вижу в issue-tracker такие задачи.


  1. kozlov_de
    16.07.2024 09:57

    Зачем так нервничать?

    Кукушка никуда не денется


  1. fenom82
    16.07.2024 09:57
    +1

    Ваш system design отличался от такого же для swe? Удивило что заботали не привлекая кабанчика коеппмана или чего то более специализированного


    1. yorko Автор
      16.07.2024 09:57

      Честно, не знаю, это был мой первый в жизни собес по SD :) но по всему похоже на то, что у SWE, задача была очень близкая к стандартным.

      Ну кабанчик - это оверкилл. Это уже реально специализированная профессиональная литература. Мне для погружения в тему хватило упомянутых ресурсов.


  1. McKinseyBA
    16.07.2024 09:57

    в телеграм‑канале «New Yorko Times».

    Крутой канал. Не думал, что это напишу когда-нибудь, но в данном случае - крутой. И статья отличная, удачи вам!