За 2022 год мы провели 230+ собеседований и взяли 6 senior-инженеров. Ни одно собеседование не включало задачу на инверсию бинарного дерева. Расскажем, как устроен процесс и что мы реально проверяем.
Что мы хотим увидеть в senior
- Опыт в проде на проектах сравнимого масштаба и сложности.
- Способность принимать архитектурные решения с учётом trade-off, а не «лучшая практика говорит».
- Ясное мышление под давлением: расскажет ли он вам, чего не знает, или будет блефовать.
- Коммуникация с не-инженерами: умеет ли объяснить технический выбор продакту/заказчику.
- Честность с собой: рефлексирует ли свои прошлые ошибки или валит вину на «бывшую команду».
Структура процесса
Скрининг (30 минут, видео)
Просим рассказать про самый сложный инженерный проект последних двух лет. Слушаем, копаем по trade-off. На этом отсеиваем тех, кто работал «вообще» и не помнит подробностей.
Техническое интервью (90 минут)
Берём реальную задачу с одного из наших проектов (анонимизированную). Не «напишите код», а «как бы вы это спроектировали». Обсуждаем 60 минут вместе, последние 30 - пишем псевдокод или схему. Проверяем глубину.
Pair-coding (90 минут, опционально)
Если по техническому остались сомнения, делаем парную сессию: даём небольшой репозиторий и задачу, кодим вместе час, обсуждаем подход. Лучшая проверка реальной работы.
Финал с фаундером (45 минут)
Не про код. Про мотивацию, ожидания, культурный fit. На этой стадии проваливают 1 из 5 кандидатов - обычно по культурным моментам.
Чего мы сознательно не делаем
- Не даём LeetCode-задачи.
- Не даём тестовое на 20+ часов «дома». Если делаем тестовое - оно занимает 2–3 часа и оплачивается.
- Не задаём вопросы вида «расскажите про разницу между abstract class и interface».
- Не делаем процесс длиннее 4 этапов.