Проектирование теста по кодированию для frontend-разработчика, отражающего реальную работу
Что на самом деле требуется от frontend-разработчиков
Большая часть работы frontend-разработчика — это не алгоритмы. Это:
- Чтение незнакомого дерева компонентов и определение, где находится состояние
- Интеграция ответа API в UI без нарушения граничных случаев (загрузка, ошибка, пусто)
- Написание CSS, который остаётся функциональным, когда контент длиннее, чем предусмотрено дизайнером
- Умение определить, когда переотрисовка — причина проблемы производительности
- Знание того, когда добавить зависимость, а когда нет
Вопрос LeetCode о реверсировании бинарного дерева не фильтрует ничего из этого. Более того, он исключает кандидатов, которые отлично справляются с реальной работой, но не интересуются алгоритмическими головоломками.
Тест на 90 минут, который измеряет реальные навыки
Дайте кандидату небольшое неработающее React-приложение с тремя проблемами:
- Тонкая ошибка. Список перерисовывает все строки при одном изменении, потому что проп key — это индекс массива. Список работает с задержкой при количестве элементов >100, но это не сразу очевидно.
- Неполная функция. Форма, которая отправляет данные, но не обрабатывает состояния загрузки и ошибки.
- Проблема со стилем. Макет карточки, который ломается, когда заголовок длиннее 40 символов.
Попросите исправить все три. Предоставьте работающее приложение, кодовую базу и свободу добавлять библиотеки (или нет).
Это измеряет реальные навыки: чтение незнакомого кода, распознавание паттернов, суждение о том, когда добавить зависимости, вкус в CSS, полнота в обработке граничных случаев.
Критерии оценки
Оценивайте четыре измерения, от 1 до 4 каждое:
- Диагностика ошибки. Определили ли они причину перед исправлением? Или просто залатали симптом?
- Полнота обработки граничных случаев. Загрузка, ошибка, пусто — покрыли ли они все без подсказок?
- Качество кода. Наименование, структура, выбор зависимостей.
- Коммуникация. Оставили ли они комментарии или краткую записку с объяснением компромиссов?
Опытные кандидаты обычно получают 3–4 балла по всем четырём измерениям. Тест не обязательно должен быть сложным, чтобы хорошо различать кандидатов — он должен быть реальным.
Как проводить тест, чтобы результаты не просочились
- Чередуйте 3–4 варианта неработающего приложения.
- Назначайте кандидатам случайным образом выбранный вариант.
- Используйте сигналы целостности ClarityHire по нажатиям клавиш и согласованности кода, а также сигналы целостности, чтобы кандидат, который скопировал исправление откуда-то ещё, был отмечен для проверки рецензентом на последующем звонке.
- Всегда дополняйте тест 30-минутным следующим этапом, где кандидат объясняет свои изменения. Если они не могут объяснить собственные изменения, оценка снижается соответственно.
Что никогда не делать
- Домашние задания на 4 часа. Вы потеряете своих лучших кандидатов компаниям, которые уважают их время.
- Открытые задания вроде «создайте клон X». Разброс слишком велик; критерии оценки не работают.
- Тесты, требующие настройки локальной среды с нуля. Используйте размещённую IDE, чтобы время настройки было нулевым.
Правильный frontend-тест занимает 90 минут, отражает реальный рабочий тикет, и выдаёт оценку по критериям, которую вы можете защитить на встрече с обратной связью. Это основа любой воронки найма frontend-разработчиков.