Как я проходил собеседования на Machine Learning Engineer

 Публичный пост
29 ноября 2022  2451
Оффер в FAANG

Привет!

Это статья с 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 часов решал и делал мок интервью.

Это решенные задачи + еще штук 10-15 с других сервисов
Это решенные задачи + еще штук 10-15 с других сервисов

Подготовку организовал так: прохожу карточку с литкода, читаю теорию, пробую решать задачи. Если задача дольше 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 и как делаем стартап.

Связанные посты
8 комментариев 👇

О, привет!
Читал утром твой другой пост на ODS ) Как информационные круги пересекаются.

  Развернуть 1 комментарий

@AndreyAnokhin, привет! Да, выкладывал ссылки про литкод и еще в канале про рекомендательные системы переписывался про, то как ранжировщик для умной ленты завести по красивому)

  Развернуть 1 комментарий
Dmitry Kabanov Research Software Engineer 29 ноября 2022

А где лекции для курса https://stanford-cs329s.github.io/? Вроде бы, на самой странице их нет.

  Развернуть 1 комментарий

@DmitryKabanov, все ссылки есть в syllabus, но они почему-то скрыли этот раздел.
https://stanford-cs329s.github.io/syllabus.html

  Развернуть 1 комментарий

@ibragim, Спасибо!

  Развернуть 1 комментарий

Сохранил, спасибо

  Развернуть 1 комментарий

Если не идти в FAANG, спрашивают ли алгоритмы выше литкодовского easy?

  Развернуть 1 комментарий

@koritsky, у меня выборка не очень большая, компаний 10. Обычно не спрашивают, но если собеседующий или СТО ex-FAANG, то вероятность алго медиумов становится выше. У меня как-то медиум по динам. программированию спросили.

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб