Take-home задание и code review на интервью
↑ 9.2 Финальная подготовка: live coding и вопросы · ← Предыдущая · → Следующая
Зачем это на собесе
Take-home показывает реальный стиль работы: код, структуру, тесты, коммуникацию.
Take-home
Небольшая задача, которую делают дома (обычно 2–4 часа).
Как выполнять
- Прочтите условие дважды, выпишите требования и допущения; задайте вопросы, если можно.
- План и границы (что делаете, что осознанно нет).
- Структура проекта чистая, понятная, без излишеств.
- Работающее решение важнее «вау»; запуск одной командой.
- Тесты на ключевую логику.
- README: как запустить, какие решения приняты, что улучшили бы при большем времени, известные ограничения.
- История коммитов осмысленная.
- Доступность, обработка ошибок, состояния загрузки и пустоты.
- Не копируйте чужой код без понимания; будьте готовы объяснить каждое решение.
Что оценивают
| Критерий | Признаки |
|---|---|
| Корректность | выполнены требования, граничные случаи |
| Дизайн кода | декомпозиция, ответственности, типы |
| Качество | тесты, линтер, ошибки |
| UX | состояния, доступность, адаптивность |
| Коммуникация | README, допущения, компромиссы |
| Соразмерность | без over-engineering |
Ловушки
- переусложнение (зачем Redux для формы);
- нарушение лимита времени: лучше уложиться и описать, что бы улучшили;
- отсутствие запуска инструкции;
- отсутствие тестов, игнорирование требований.
Code review на интервью
Вам дают код (PR) и просят провести ревью.
Подход
- Контекст: что делает, для чего.
- Корректность: ошибки, крайние случаи, гонки, утечки.
- Дизайн: структура, ответственность, связность.
- Безопасность: XSS, секреты, валидация.
- Производительность: лишние ререндеры, запросы.
- Тесты, читаемость, стиль (последним).
- Приоритизация: blocker / suggestion / nit.
- Тон: вопросы и предложения, а не приказы; отмечайте хорошее.
Пример комментариев
[blocker] fetch без обработки ошибки: при 500 UI останется в loading. Предлагаю try/catch и состояние ошибки.
[suggestion] Вынести запрос в composable useOrders: пригодится на странице списка.
[nit] Имя `data2` лучше заменить на `filteredOrders`.
[question] Почему ключ списка — index? Порядок меняется при сортировке.
[+] Хорошо, что валидация вынесена в отдельную функцию.Что типично «зашивают» в тестовый код
Забытый await, мутация props, отсутствие key, v-html с пользовательским вводом, утечка подписки, N+1 запросов, гонки при быстром вводе, неверные зависимости watch, отсутствие отмены запросов, секреты в коде.
Вопросы с ответами
Что важнее: полнота или аккуратность в тестовом задании?
Аккуратный работающий минимум с тестами и README лучше полного, но неаккуратного решения. Опишите, что сделали бы дальше.
Как отреагировать, если ревьюер не согласен с моим решением?
Выслушать, объяснить контекст и компромиссы, предложить данные или прототип, при обоснованности изменить решение.