Как готовиться к собеседованиям на Machine Learning Engineer
Готовимся к собеседованию на позицию Инженера машинного обучения: какие вопросы проработать и какие ресурсы использовать.
3К открытий4К показов
Это статья с 21-ой ссылкой о подготовке к собеседованиям на позиции Machine Learning Engineer. Статью собрал на основе заметок из своего канала в тг.
Контекст
Cейчас я отвечаю за ML в стартапе, раньше обучал болталки в сбердевайсах. В конце января взял саббатикал, чтобы отдохнуть, поучиться новому, посмотреть что еще нравится и сменить работу. В сбердевайсы в итоге уже не вернулся, в феврале-марте готовился к собеседованиям, начал собеседования в апреле, а с мая вышел в новое место.
Получил пару офферов (некоторые дошли уже во время работы): компания в Европе, пара стартапов из Англии и Азии, Яндекс. Начал процессы в Google, Amazon (тут большое спасибо рефералам), но параллельно с новой работой устал собеседоваться и остановил все. В итоге сошелся с ребятами с которыми был самый короткий собес (пообщались с СТО и партнером из фонда): сильная тех команда, четкий фонд за спиной, шанс построить с нуля весь ML и full-remote. Забавно, что для этого оффера подготовка не пригодилась.
Полученные навыки
- С нуля подтянул алгоритмы до уровня прохождения алго этапов. Правда, я не собеседовался по алгоритмам в гугл, там харды дают — не прошел бы.
- Разобрался с 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 часов решал и делал мок интервью.
Подготовку организовал так: прохожу карточку с литкода, читаю теорию, пробую решать задачи. Если задача дольше 15 минут не решается, смотрел разбор и решение. Накидывал основные пункты решения и заводил anki карточки по сложным. Конкретные решения задач и код не запоминал, скорее именно пытался овладеть подходом. И постоянно устраивал себе пробные интервью. На литкоде есть раздел для этого.
Раздел литкода с теорией: основные темы разобраны норм + есть практика в виде задачек. Для некоторых задач есть формальные доказательства решений и скорости (У меня правда на собесе такое только 1 раз спрашивали).
Есть переводы статей labuladong. Оформлена в виде глав. Некоторые темы разобраны лучше, чем на литкоде, например, логика разделения на паттерны бинарного поиска.
Список задач, покрывающий основные темы. Удобная сортировка по темам, сложности и компаниям + можно отмечать прогресс.
Данный список включает в себя задачи из списка blind-75 и с курса на educative.
Решения задач, если где-то застряли, можно посмотреть у NeetCode. Объяснения оч четкие и приятный английский. Изложение более интуитивно понятные, чем решения на литкоде и можно посмотреть за ходом мыслей.
Если кто хочет более фундаментальный подход, вот курс Седжвика (но задания на джаве там). Его часто советуют, я сам не смотрел, прочитал только пару глав у Скиены.
Этап собеседования Machine Learning System Design
Этот этап попадался в 9 из 10 компаний. Задача — полностью спроектировать ML решение. От определения задачи и метрик, заканчивая деплоем и оптимизацией.
В этом помогает четкая структура ответа:
- Problem definition and requirement clarification. Определение задачи и оценка требований.
- Data. Источники данных, какая разметка, как выглядит сэмпл.
- Evaluation. Какие метрики, сравнение с бейзлайном.
- Features and model. Препроцессинг, варианты моделей.
- Online eval, deploy. Выкатка + АБ.
- Further actions. Как дебажить/обновлять/улучшать/ускорять/итд модель.
Каждый из этапов более подробно разобран в репе ML design primer.
Порядок подготовки
- Посмотреть видео яндекса, полистать гитхаб ml design primer.
- Сделать себе пробный собес попробовать задизайнить систему из списка.
- Почитать пару разборов из технических блогов компаний или инженеров. Например, тут или тут.
- Делать моки (mock-interview). Это когда вы созваниваетесь и устраиваете друг другу пробный собес. Моки можно искать в этом чате.
- Получаете фидбек с мока и идете качать слабые места, читаете еще статьи или главы из 329s.
Общие советы
Параллельно с работой у меня никогда не было ни сил, ни желания готовиться к собеседованиям и проходить их. Поэтому тема с саббатикалом и уходом с работы мне подошла больше.
Задавать вопросы — это хорошо, но на MLSD я старался делать предположения, а не спрашивать что-то в духе «а вот насколько быстро и стабильно должна работать модель?»
Для алгоритмов и MLSD нужно понимать тайминги ваших ответов. На MLSD этапе обычно вас собеседует человек, у которого 100% после вашего собеса стоит встреча, а вам нужно успеть все сказать и подать нужные сигналы.
Ищите чаты, где люди делятся опытом и проводят моки. Так вы будете понимать, что вас ждет. Еще есть большое сообщество по подготовке faang-interview.
Справиться с волнением помогает больше мокаться и собеседоваться, в какой-то момент волнения становится заметно меньше. Можно даже без напарника просто самому себе устраивать пробный ЕГЭ так сказать.
Чтобы не перегореть: здоровый сон, выходные, спортзал.
P.S.
Если вдруг статья полезная — подписывайтесь на мой канал. Там пишу про собесы, machine learning и как делаем стартап. Последний пост как раз про, как составить резюме и где искать вакансии.
3К открытий4К показов