Это статья с 21-ой ссылкой о подготовке к собеседованиям на позиции Machine Learning Engineer. Статью собрал на основе заметок из своего канала в тг

Контекст

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 с других сервисов

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

    Если вдруг статья полезная - подписывайтесь на мой канал. Там пишу про собесы, machine learning и как делаем стартап. Последний пост как раз про, как составить резюме и где искать вакансии.