Какие задачи давать кандидатам на разных уровнях?
Что проверяют
Такой вопрос задают кандидату в тимлиды или сеньоры, которому предстоит самому проводить собеседования. Интервьюер хочет понять, чем, по-вашему, отличаются уровни и умеете ли вы строить проверку, которая даёт одинаковую оценку у разных интервьюеров. Следом спросят: «Как оценивать решение, чтобы это не было делом вкуса?»
Как отвечать
Главная мысль: задачи для разных уровней отличаются не объёмом, а тем, что проверяют.
- junior: основы JavaScript (замыкания,
this, промисы, event loop), работа с DOM и событиями, вёрстка на flex и grid. Живая задача примерно на полчаса: список с загрузкой черезfetch, состояниями загрузки и ошибки, илиdebounceдля поля поиска; - middle: компонент на React или Vue с состоянием и эффектами, форма с валидацией, гонка запросов и её решение через
AbortController, типизация на TypeScript, тест на Testing Library. Важно, как кандидат рассуждает о переиспользовании и граничных случаях; - senior: проектирование фронтенда целиком, то есть устройство состояния и кеширования данных, выбор между SSR и клиентским рендером, разбиение бандла, метрики Core Web Vitals (LCP, INP, CLS). Хорошо работает ревью заранее подготовленного PR с ошибками: видно, что человек замечает и как объясняет.
Под каждую задачу заранее пишется рубрика: что считается «хорошо», «достаточно» и «не прошёл», какие подсказки допустимы. Домашнее задание ограничивайте несколькими часами и объясняйте критерии заранее, иначе сильные кандидаты просто откажутся. Задачи берите из реальной работы команды, а не из олимпиад.
Где спотыкаются
Для сеньора усложняют алгоритмическую задачу. Сложный алгоритм не показывает умения проектировать и договариваться о компромиссах.
Проверяют знание мелочей: «что выведет этот код с тремя setTimeout». Это меряет подготовку к собеседованиям, а не умение работать.
Оценивают без рубрики. Тогда один интервьюер ставит «сильный», другой «слабый», а решение о найме зависит от того, кому достался кандидат.