Это статья с 21-ой ссылкой о подготовке к собеседованиям на позиции Machine Learning Engineer. Статью собрал на основе заметок из своего канала в тг.
Контекст
Cейчас я отвечаю за ML в стартапе, раньше обучал болталки в сбердевайсах. В конце января взял саббатикал, чтобы отдохнуть, поучиться новому, посмотреть что еще нравится и сменить работу. В сбердевайсы в итоге уже не вернулся, в феврале-марте готовился к собеседованиям, начал собеседования в апреле, а с мая вышел в новое место.
Получил пару офферов (некоторые дошли уже во время работы): компания в Европе, пара стартапов из Англии и Азии, Яндекс. Начал процессы в Meta, Google, Amazon (тут большое спасибо рефералам), но параллельно с новой работой устал собеседоваться и остановил все. В итоге сошелся с ребятами с которыми был самый короткий собес (пообщались с СТО и партнером из фонда): сильная тех команда, четкий фонд за спиной, шанс построить с нуля весь ML и full-remote. Забавно, что для этого оффера подготовка не пригодилась 😅
![С частью команды зимуем на Бали, пока все нравится С частью команды зимуем на Бали, пока все нравится](https://habrastorage.org/getpro/habr/upload_files/404/dd8/124/404dd8124684f452d7f31d9a5a76b93e.jpg)
Полученные навыки
с нуля подтянул алгоритмы до уровня прохождения алго этапов. Правда, я не собеседовался по алгоритмам в гугл, там харды дают – не прошел бы.
разобрался с Machine Learning System Design, помимо собеседований помогает и в работе тоже.
подкачал английский, пока собеседовался и готовился к вопросам по behavioral.
Виды этапов собеседований, которые мне попадались и как к ним готовился
Алгоритмическая секция. Решал карточки с литкода и делал мок-интервью. Тут писал подробнее.
Machine Learning System Design (как будешь ML задачу решать со старта до прода). CS 329S, буклеты, видео от fb + мок-интервью. Собрал попутно такой гитхаб страничку.
Вопросы по ML теории. Стандартные: метрики, разобрать модель, написать пару формул. Учебник по ML от шада почитал и освежил в памяти что-то погуглив конкретные темы.
Дают код, надо найти и исправить ошибки. Из того, что поинтереснее: дали код обучения языковой модели с расписанными трансформер блоком и аттеншеном. Специально не готовился, но можно полистать реализации from scratch.
Вопросы по темам: питон, ML, CS, NLP.
Рассказываешь о своем опыте и с тобой погружаются вглубь и в особенности реализаций. Данные как размечали, как модели проверяли, как выкатывали. Тут просто более развернуто рассказал про пункты из CV.
Behavioural- стандартные вопросы, заранее заготовил ответы по STAR на распространенные вопросы. Смотрел карточки литкода про behavioural и придумывал ответы себе.
Задачи на логику и по математике (теор вер, статистика). Не готовился к такому.
Просто за жизнь и опыт пообщаться, сходить в бар.
Примеры вопросов из этапа с общением.
Какая последняя статья понравилась? О чем? Почему понравилась?
Что будешь делать в первый рабочий день?
Какой факап был самый жесткий?
Алгоритмические собеседования
Олимпиадным программированием я не занимался, образование у меня вообще медицинское, поэтому все необходимые знания брал из интернета. Литкод я +- 8 недель 5 дней в неделю часа по 2-5 часов решал и делал мок интервью.
![Это решенные задачи + еще штук 10-15 с других сервисов Это решенные задачи + еще штук 10-15 с других сервисов](https://habrastorage.org/getpro/habr/upload_files/c11/d2c/a2c/c11d2ca2cdba9fa3a22f6ebf0d2df388.png)
Подготовку организовал так: прохожу карточку с литкода, читаю теорию, пробую решать задачи. Если задача дольше 15 минут не решается, смотрел разбор и решение. Накидывал основные пункты решения и заводил anki карточки по сложным. Конкретные решения задач и код не запоминал, скорее именно пытался овладеть подходом. И постоянно устраивал себе пробные интервью. На литкоде есть раздел для этого.
Раздел литкода с теорией: основные темы разобраны норм + есть практика в виде задачек. Для некоторых задач есть формальные доказательства решений и скорости (У меня правда на собесе такое только 1 раз спрашивали).
Есть переводы статей labuladong. Оформлена в виде глав. Некоторые темы разобраны лучше, чем на литкоде, например, логика разделения на паттерны бинарного поиска.
Список задач, покрывающий основные темы. Удобная сортировка по темам, сложности и компаниям + можно отмечать прогресс.
Данный список включает в себя задачи из списка blind-75 и с курса на educative.
Решения задач, если где-то застряли можно посмотреть у NeetCode. Объяснения оч четкие и приятный английский. Изложение более интуитивно понятные, чем решения на литкоде и можно посмотреть за ходом мыслей.
Если кто хочет более фундаментальной подход, вот курс Седжвика (но задания на джаве там). Его часто советуют, я сам не смотрел, прочитал только пару глав у Скиены
Этап собеседования Machine Learning System Design
Этот этап попадался в 9 из 10 компаний. Задача - полностью спроектировать ML решение. От определения задачи и метрик, заканчивая деплоем и оптимизацией.
Здесь важный момент. Время собеседования ограничено. Поэтому с одной стороны важно не растекаться по дереву, с другой стороны важно покрыть все этапы решения ML задачи, а в некоторые даже погрузиться вглубь, чтобы показать что шарите.
В этом помогает четкая структура ответа:
1. Problem definition and requirement clarification. Определение задачи и оценка требований.
2. Data. Источники данных, какая разметка, как выглядит сэмпл.
3. Evaluation. Какие метрики, сравнение с бейзлайном.
4. Features and model. Препроцессинг, варианты моделей.
5. Online eval, deploy. Выкатка + АБ.
6. Further actions. Как дебажить/обновлять/улучшать/ускорять/итд модель.
Каждый из этапов более подробно разобран в репе ML design primer.
![Учебная парта выглядела так, за спиной еще был флипчарт - удобная штука в хозяйстве, если место позволяет. Учебная парта выглядела так, за спиной еще был флипчарт - удобная штука в хозяйстве, если место позволяет.](https://habrastorage.org/getpro/habr/upload_files/064/56e/824/06456e824ae24e54e4e0e2551df31ed8.jpg)
Порядок подготовки
Посмотреть видео fb, яндекса, полистать гитхаб ml design primer.
Сделать себе пробный собес попробовать задизайнить систему из списка.
Почитать пару разборов из технических блогов компаний или инженеров. Например, тут или тут
Делать моки (mock-interview). Это когда вы созваниваетесь и устраиваете друг-другу пробный собес. Моки можно искать в этом чате.
Получаете фидбек с мока и идете качать слабые места, читаете еще статьи или главы из 329s.
Общие советы
Параллельно с работой у меня никогда не было ни сил, ни желания готовиться к собеседованиям и проходить их. Поэтому тема с саббатикалом и уходом с работы мне подошла больше.
Задавать вопросы – это хорошо, но на MLSD я старался делать предположения, а не спрашивать что-то в духе “а вот насколько быстро и стабильно должна работать модель?”
Для алгоритмов и MLSD нужно понимать тайминги ваших ответов. На MLSD этапе обычно вас собеседует человек, у которого 100% после вашего собеса стоит встреча, а вам нужно успеть все сказать и подать нужные сигналы.
Ищите чаты, где люди делятся опытом и проводят моки. Так вы будете понимать, что вас ждет. Еще есть большое сообщество по подготовке faang-interview
Справиться с волнением помогает больше мокаться и собеседоваться, в какой-то момент волнения становится заметно меньше. Можно даже без напарника просто самому себе устраивать пробный ЕГЭ так сказать.
Чтобы не перегореть: здоровый сон, выходные, спортзал.
P.S.
Если вдруг статья полезная - подписывайтесь на мой канал. Там пишу про собесы, machine learning и как делаем стартап. Последний пост как раз про, как составить резюме и где искать вакансии.