Привет!
Это статья с 21-ой ссылкой о подготовке к собеседованиям. Собеседовался на позиции Machine Learning Engineer
Статью собрал на основе заметок из своего канала. https://t.me/c0mmit
Контекст
Cейчас я отвечаю за ML в стартапе, раньше обучал болталки в сбердевайсах. В конце января взял саббатикал, чтобы отдохнуть, поучиться новому, посмотреть что еще нравится и сменить работу. В сбердевайсы в итоге уже не вернулся, в феврале-марте готовился к собеседованиям, начал собеседования в апреле, а с мая вышел в новое место.
Получил пару офферов (некоторые дошли уже во время работы): компания в Европе, пара стартапов из Англии и Азии, Яндекс. Начал процессы в Meta, 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 решение. От определения задачи и метрик, заканчивая деплоем и оптимизацией.
Здесь важный момент. Время собеседования ограничено. Поэтому с одной стороны важно не растекаться по дереву, с другой стороны важно покрыть все этапы решения 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.
Порядок подготовки.
- Посмотреть видео fb, яндекса, полистать гитхаб ml design primer.
- Сделать себе пробный собес попробовать задизайнить систему из списка.
- Почитать пару разборов из технических блогов компаний или инженеров. Например, тут или тут
- Делать моки (mock-interview). Это когда вы созваниваетесь и устраиваете друг-другу пробный собес. Моки можно искать в этом чате.
- Получаете фидбек с мока и идете качать слабые места, читаете еще статьи или главы из 329s.
Общие советы:
- Параллельно с работой у меня никогда не было ни сил, ни желания готовиться к собеседованиям и проходить их. Поэтому тема с саббатикалом и уходом с работы мне подошла больше.
- Задавать вопросы – это хорошо, но на MLSD я старался делать предположения, а не спрашивать что-то в духе “а вот насколько быстро и стабильно должна работать модель?”
- Для алгоритмов и MLSD нужно понимать тайминги ваших ответов. На MLSD этапе обычно вас собеседует человек, у которого 100% после вашего собеса стоит встреча, а вам нужно успеть все сказать и подать нужные сигналы.
- Ищите чаты, где люди делятся опытом и проводят моки. Так вы будете понимать, что вас ждет. Еще есть большое сообщество по подготовке faang-interview
- Справиться с волнением помогает больше мокаться и собеседоваться, в какой-то момент волнения становится заметно меньше. Можно даже без напарника просто самому себе устраивать пробный ЕГЭ так сказать.
- Чтобы не перегореть: здоровый сон, выходные, спортзал.
P.S.
Если вдруг статья полезная - подписывайтесь на мой канал https://t.me/c0mmit
Там пишу про собесы, machine learning и как делаем стартап.
А где лекции для курса https://stanford-cs329s.github.io/? Вроде бы, на самой странице их нет.
Если не идти в FAANG, спрашивают ли алгоритмы выше литкодовского easy?
Сохранил, спасибо