Каждый фронтенд-разработчик хоть раз сталкивался с неадекватными вопросами на собеседованиях: алгоритмы на доске, задачи из учебников, размытые требования. В итоге компании месяцами ищут сотрудников, а кандидаты тратят время впустую. Давайте разберём, как проводить собеседования, чтобы действительно найти нужного специалиста.
Шаг 1. Требования-абстракции: выберите ключевые навыки
Некорректный вариант: «Требуется Senior JS-разработчик с 5+ годами опыта». Почему это не подходит: Неясно, какие навыки важны и что будет делать разработчик.
Оптимальный вариант: «Ищем специалиста, который:
Оптимизирует рендеринг длинных списков в React.
Работает с legacy-кодом на jQuery.
Настраивает мониторинг производительности (Lighthouse)».
Как это сделать:
Определите 3 ключевые проблемы вашего проекта.
Для каждой проблемы сформулируйте конкретный навык, который поможет её решить.
Пример:
Проблема: Сайт тормозит при прокрутке длинных списков.
Навык: Оптимизация рендеринга в React.
Ну и связывайте как-то описание вакансий и то, что нужно будет в работе.


Шаг 2. Вопросы для викторины: переведите теорию в практику
Неправильный вариант: «Что такое Virtual DOM?» (Ответ можно легко найти в интернете за 10 секунд).
Правильный вариант: «Почему этот компонент ререндерится при изменении не связанных пропсов? Как это исправить?»
Формат хорошего вопроса:
Опишите реальную проблему из вашего проекта, дайте контекст (код или ситуацию), спросите о подходе к решению.
Пример:
Проблема: В нашем проекте компонент чата ререндерится слишком часто, что приводит к лагам.
Контекст: Вот код компонента.
Вопрос: Почему компонент ререндерится при изменении state, не связанного с отображаемым содержимым? Как это исправить?
Шаг 3. Продажа розовых пони: будьте честны о проекте
Неправильный пример: «У нас современный стек и интересные задачи». (Хотя на деле — поддержка устаревшего кода).
Правильный пример: «Наш проект:
Основной стек: React 18, TypeScript.
30% кода — jQuery (постепенно заменяем).
Главная проблема: таблицы с 10 000+ строк тормозят при скролле».
Зачем это нужно:
Кандидаты сразу понимают, подходят ли им условия.
Экономит время всем участникам.
Шаг 4. Искусственные задачи: давайте реальные кейсы
Неправильный пример: «Напишите QuickSort на доске».
Правильный пример: «Оптимизируйте этот компонент чата:
Найдите причину лагов при скролле.
Предложите решение. (Можно гуглить).
Пример задачи:
Задача: Оптимизируйте компонент чата, чтобы он не лагал при скролле длинных сообщений.
Время на решение: 30–60 минут.
Почему это работает:
Экономит время: Вы сразу видите реальные навыки кандидата.
Снижает стресс: Кандидаты решают практическую задачу, а не абстрактные вопросы.
Улучшает найм: Вы находите тех, кто решит именно ваши проблемы.
Реальный опыт
Немножко историй из жизни: мои собеседования в качестве технического интервьюера начались с фулстек JS разработчиков, и я спрашивал то, что видел на YouTube и из личного опыта. Море теории, совсем чуть-чуть кода, и то в духе «что будет в консоли» или «поправьте один баг в коде из 6 строчек». Итог таких собеседований — почти 50 интервью для поиска одного кандидата, в среднем одно интервью длилось полтора часа, и у кандидата не было возможности показать себя, большой чек-лист вопросов и оценка «хорошо», «нормально», «плохо». Сейчас в моих собеседованиях вообще нет этого чек-листа, и теория появляется во время решения практической задачи на рефакторинг или написания модуля, появился в коде useMemo, задал вопрос, что это, зачем и почему без него не те ощущения. Иногда кандидаты даже не обращали внимания на мои вопросы, думая, что это просто диалог, обычный диалог двух адекватных разработчиков, а не «гения-интервьюера» с «жалким кандидатом», как это обычно ощущается. Сейчас мой рекорд — это найденный кандидат за 7 собеседований, и 3 из них это «гении», которые использовали микронаушники, нейросети и черт пойми что еще. А время собеседования сократилось до 30-40 минут, некоторые собеседования заканчивались через 15 минут из-за того, что кандидат просто не умел решать нужные задачи, а с кандидатами, которых потом принимали на работу, разговор длился около часа.
Про обратную связь
Это уже немного вне рамок нашей темы, но я считаю это очень важным, оставляйте обратную связь, если понимаете, что кандидат не прошел, скажите почему, в диалоге или сообщением рекрутеру, которое будет переслано кандидату, способ доставки тут не так важен. Стандартные отписки в духе «мы предпочли более подходящего кандидата» только демотивируют, если человек при оптимизации неправильно использовал методы кеширования, сообщите ему об этом, хороший разработчик станет лучше после этой обратной связи, и у него не будет вопросов, почему его не взяли, а будет возможность стать лучше.
Итог
Проводить собеседования — это не просто навык, а искусство. Главное — быть честным, давать реальные задачи и фокусироваться на ключевых навыках.
А как вы проводите собеседования? Сталкивались с вопросами вроде «напишите бинарный поиск на доске»? Поделитесь в комментариях.
Больше подобного контента в Telegram: https://t.me/frontend_nomagic Скоро тут появится чек-лист для проведения хорошего собеседования.