Мок-интервью по Node.js: что прогнать вслух перед настоящим собеседованием

Собеседование по Node.js — не викторина по JavaScript с серверной тематикой. Интервьюер проверяет прежде всего одно: понимаете ли вы, что ваш код делит один поток со всем остальным в процессе, и пишете ли вы код, который это уважает. Ниже — цикл так, как он идёт на самом деле, раунд за раундом, с ответами, за которые дают баллы.
Раунд первый: event loop
«Объясните event loop». Баллы приносит не заученная схема фаз, а следствие. Node выполняет ваш JavaScript в одном потоке; ввод-вывод делегируется платформе, а его завершение возвращается коллбэком в очередь. Значит медленная синхронная функция тормозит не один запрос, а все запросы процесса. Фазы назовите, если спросят (timers, pending callbacks, poll, check, close), и знайте, что process.nextTick и микрозадачи промисов вычерпываются между фазами, раньше setImmediate.
Дальше обычно спрашивают: «а что делать с тяжёлой CPU-работой?» Отвечайте лестницей — убрать из пути запроса, worker threads, разбить на куски или отдать в очередь отдельному процессу. Любой из вариантов верен; проваливает не выбор, а незамеченная проблема.
Раунд второй: асинхронные паттерны
Коллбэки → промисы → async/await и почему каждый шаг случился. Свободно владейте Promise.all против allSettled против race, знайте, что происходит с необработанным rejection и почему await внутри цикла часто — случайный баг производительности. Ждите переписывания вживую: «вот пирамида коллбэков, сделайте читаемо» или «эти пять запросов идут последовательно, сделайте параллельно».

Раунд третий: стримы и backpressure
Классический сценарий: обработать CSV на два гигабайта в контейнере с 512 МБ памяти. Прочитать файл в строку — провальный ответ. Стримы с pipeline() — проходной, а упоминание backpressure, когда читатель притормаживает, потому что писатель не успевает, отмечает вас как человека, который делал это в проде, а не читал об этом.
Раунд четвёртый: ошибки и надёжность
Как вы обрабатываете отклонённый промис в хендлере Express или Fastify, почему непойманное исключение должно завершать процесс, а не проглатываться, graceful shutdown по SIGTERM и разница между операционной ошибкой (таймаут базы — ретрайте) и ошибкой программиста (undefined is not a function — чините). Таймауты, ретраи с backoff и circuit breaker на исходящих вызовах — часть этого же ответа.
Раунд пятый: масштабирование и деплой
Cluster mode или несколько контейнеров, чтобы занять все ядра; отсутствие состояния, чтобы инстансы были взаимозаменяемы; Redis для общего состояния и кеша; очередь для всего медленного. Затем вопрос про наблюдаемость: как вы узнаете, что p95 удвоилась в прошлый вторник? Упоминание структурированных логов, метрик и трейсинга стоит одного предложения, а доверия добавляет много.
Раунд шестой: дизайн-вопрос
Большинство Node-циклов заканчивается чем-то вроде «спроектируйте сокращатель ссылок», «спроектируйте rate limiter» или «спроектируйте сервис уведомлений». Идите по порядку: API, хранилище, режимы отказа, масштаб. Проговаривайте трейд-оффы вслух — оценивают рассуждение, а не схему.
Как это прогонять
Прочитайте темы один раз, закройте вкладку и произнесите каждый ответ вслух, будто вас спросили. Объяснение event loop должно занимать около девяноста секунд без запинок. Если не занимает — вот вам первая тренировочная сессия. Полное мок-интервью бэкендера от начала до конца, на языке реального собеседования, превращает список узнаваемых тем в ответы, которые вы выдаёте по требованию.
Часто задаваемые вопросы
- Что чаще всего спрашивают на собеседовании по Node.js?
- Event loop, и особенно его следствие: ваш JavaScript выполняется в одном потоке, поэтому блокирующая работа тормозит все запросы процесса. Сразу за ним — асинхронные паттерны, обработка ошибок и один вопрос по system design.
- Как отвечать на «что делать с CPU-тяжёлой работой в Node?»
- Убрать её из пути запроса. Варианты: worker threads, нарезка работы на куски, чтобы петля дышала, или вынос в очередь с отдельным обработчиком. Названный трейд-офф между ними ценится выше, чем молча выбранный один вариант.
- Нужен ли TypeScript на собеседовании по Node.js?
- Большинство команд, нанимающих на Node в 2026-м, работают на TypeScript, так что ждите хотя бы вопросов про типы: дженерики, unknown против any, как типизировать границу API. Глубокая типовая гимнастика требуется редко.
- Как провести мок-интервью по Node.js?
- Выберите роль бэкенд-разработчика, задайте уровень и отвечайте голосом. Прогоняйте объяснение event loop, пока оно не будет занимать около девяноста секунд без запинок, затем переходите к стримам, ошибкам и дизайн-вопросу.
Комментарии · 0 комментариев
Войдите, чтобы оставить комментарий или оценку.
Войти →Комментариев пока нет. Будьте первым.