Собеседования в ML

Собеседования в ML

Evgenii Pishchik


Введение

В конце апреля 2024 года я решил сменить место работы и начал проходить собеседования в различных IT-компаниях на позицию Machine Learning Engineer в области Computer Vision. В данном посте я хочу поделиться своим опытом прохождения собеседований и всеми деталями, которые, на мой взгляд, важны для успешного и приятного продолжения карьеры.

Поиск вакансий

В первую очередь я решил для себя выписать список компаний, куда я потенциально хотел бы пойти / которые мне посоветовали.

Я подавал только на вакансии команд, основное направление которых - Computer Vision на уровни Middle, Senior. Всем советую сразу понять, чего вы хотите от команды и изучить, чем занимаются команды, куда вы будете собеседоваться, т.к. иногда лучше сразу отказаться, чем тратить свое и чужое время и по итогу не пойти из-за отсутствия интереса к задачам / направлению.

Для поиска подходящих вакансий я использовал два основных ресурса:

  • Отклики на вакансии через HeadHunter / сайт компании.
  • Прямое общение через контакты с HR (в т.ч. LinkedIn).

Я бы советовал писать напрямую HR / либо через любые другие контакты, если такая возможность присутствует. По моим наблюдениям, шанс, что ваше резюме не проскипают и пригласят на прохождение этапов собеседования, выше, если писать напрямую.

Но при этом я все равно отправлял отклики на HeadHunter / через сайты компаний. У меня так получилось, что несколько команд пригласили меня сами через резюме на HeadHunter (возможно в системе HR видят, что я подавал в другую команду в их компанию и даже, если сама команда куда я откликался не ответила, то они могут позвать на собеседование к себе в команду).

Статистика по приглашениям:

  • Прямой контакт с HR: 5
  • Команда нашла через резюме на HeadHunter: 2
  • Отклик на HeadHunter: 1
  • Отклик через сайт компании: 1

Структура собеседований

Собеседования состояли из нескольких основных этапов:

  • Общение с HR: причины ухода, ожидания от команды, зарплатные ожидания и т.д.
  • Алгоритмическая секция: решение 2-3 алгоритмических задач уровня easy / middle (редко hard, но мне такие не попадались).
  • Техническая секция: вопросы по ML / DL, специализированные вопросы по домену, в котором работает команда.
  • ML System Design: секция, где необходимо рассказать, как ты будешь выстраивать дизайн ML системы для решения определенной задачи, часто поставленная задача взята из набора задач, которыми занимается команда.
  • Cultural Fit: редкая секция для моего уровня, сам я до этой секции не дошел, поэтому сказать ничего не могу, только в одной команде такая секция должна была быть.

Секции, которые всегда присутствуют: общение с HR и техническая секция, остальное зависит от команды и компании. Технических секций обычно от 1 до 3.

Секция ML System Design была для меня самой необычной и сложной, т.к. раньше я такие секции не проходил. Тут важно уметь смотреть на картину целиком, что кажется проще, чем является на самом деле. Собственно, эта секция очень сильно влияет на итоговый грейд в компании.

Алгоритмическая секция: многие, в т.ч. и я, не любят эту секцию, но она встречается очень часто (как одна из первых) и служит чисто для отсева (на мой взгляд). Если идти в крупные зарубежные компании, то там почти всегда есть такая секция (может быть даже не одна).

Финальная секция

Обычно, после того, как вы прошли все этапы собеседования, вас приглашают на секцию "Финал". Фактически это знакомство и общение с командой. Команда узнает, что ты хочешь видеть в компании / команде, что тебя мотивирует, а что является красным флагом и т.п.

На этой секции важно (нужно!) как можно больше задавать вопросов про взаимодействие в команде / между командами, особенности работы в компании, инфраструктуру и т.д.

Если у вас произошел коннект, то дальше уже идет оффер и дальнейшие действия, про которые рассказывать здесь не буду, т.к. это не является целью данной публикации.

Ключевые факторы выбора команды

Выделите для себя несколько пунктов, которые являются ключевыми при выборе между различными офферами от команд. Так вам будет проще определиться (можно даже табличку завести где-нибудь и писать баллы от 1 до 5).

Для себя я выделил следующие ключевые факторы:

  • Задачи: домен, сложность, необычность.
  • Уровень моей ответственности, свобода развития направлений / задач в команде.
  • Заработная плата и премии.
  • Формат работы: удаленная работа, гибрид, full-time офис.
  • Репутация и культура компании.
  • Бонусы от компании: ДМС, скидки, развитие сотрудников.
  • Заинтересованность команды / компании в твоем найме.

Красные флаги

Если компания / команда делает что-то, что противоречит вашим принципам или просто вы считаете неадекватным, то стоит такой компании / команде отказать.

Понятно, что в каждой компании есть свои проблемы, и это абсолютно нормально, но если есть моменты, которые для вас категорически недопустимы, в таком случае не стоит и начинать сотрудничество (это в т.ч. относится к этапам собеседований).

Для себя по ходу прохождения собеседований я выбрал следующие красные флаги:

  • Договорились на один уровень зарплаты, а предлагают на порядок ниже.
  • Продвигают переработки (в т.ч. неоплачиваемые).
  • Некорректно общаются, переходя на личности и используя "едкие" высказывания в чей-либо адрес.
  • Необъективно принижают ваши достижения (возможно, с целью занижения зарплаты).
  • Задают вопросы / задачки, которые вообще никак не относятся к позиции, куда собеседуешься (Арбуз массой 20 кг содержал 99% воды. Когда он немного усох, то стал содержать 98% воды. Какова теперь масса арбуза?).
  • Задачи, которые решает команда, не совпадают с теми, которые вы обсуждали с HR / были написаны в вакансии.

Они абсолютно субъективные и могут для вас и не быть критичными, привожу их просто как пример. Некоторые из них не стоит использовать прямо как жесткое "нет", но стоит держать в уме как "минус в карму".

Советы

Мои субъективные советы, которые помогут со спокойствием и комфортом проходить собеседования:

  • Практикуйтесь: когда сходите на 3-4 секции, к вам придет уверенность и понимание, чего от вас хотят, и прохождение собеседований будет казаться как что-то обыденное.
  • Освежите знания: для прохождения многих секций не обязательно заучивать материал, важно уметь правильно рассуждать и применять навыки, которые у вас уже есть, если вы не пытаетесь пройти на позиции на два грейда выше, то этого должно быть достаточно, но при этом важно вспомнить то, что вы знаете и используете, т.к. детали забываются.
  • Алгоритмы: очень не хочется, но надо прорешать определенный банк задач каждого типа (сортировки, поиск, деревья, двойные указатели и т.п.), т.к. зачастую алгоритмы проходятся только знанием того, как определенный тип задачи решается и подгонкой текущей задачи под шаблон кода для данного типа задач.
  • Понимание ожиданий от секции: вы должны четко понимать, чего от вас хотят на каждой секции, будет странно если вы на секции ML System Design вместо построения ML системы будете рассказывать про свой опыт.
  • Не расстраивайтесь: успешное прохождение собеседования - это тоже своего рода удача, главное сделать максимум от себя и, возможно, вы сможете пройти со второй попытки или пройдете в другое место.

Курьезные случаи

Собрал некоторую подборку забавных моментов (зачастую они не очень приятные), чтобы вы знали, что процесс собеседований не идеален, курьезы могут случаться, и это надо принять как данность.

  • Фидбэк, который оставил собеседующий, не соответствовал реальным ответам на собеседовании, часть деталей ответов была "опущена", из-за чего возникало ощущение, что ответа вообще не было, хотя ответ был верным на 60-80%, часть ответов была искажена и т.д. Не претендую на то, что я отвечал идеально, и меня завалили, но было не очень приятно получить фидбэк, где мои ответы искажены, либо "опущены".
  • Три раза называл зарплатные ожидания на различных секциях, а по итогу предложили все равно на порядок меньше.
  • На финалах спросили задачку на логику совсем не по теме (аналогично примеру задачки про арбуз).
  • Прошел две технических секции и позвали на финал, где должно было быть общение с командой, а по итогу после общения начали проводить секцию ML System Design (считаю, что не очень красиво так делать без предупреждения).

Банк вопросов

Банк вопросов, который я собрал во время прохождения собеседований, можно найти по ссылке.

Итог

Надеюсь вам было интересно и полезно прочитать данную публикацию. Удачи в прохождении собеседований!


Report Page