AI
prepair.app
Пройти интервью →
EnglishРусскийУкраїнська
🟢

Senior Node.js Backendвопросы на собеседовании Node.js

Senior · 5+ лет опыта

Собеседование Node.js крутится вокруг event loop, асинхронных паттернов, Express или NestJS и последствий однопоточного рантайма. Ниже — самые частые вопросы с эталонными ответами. Senior: архитектуру, трейд-оффы, менторство и принятие решений.

Темы для подготовки

Event loop и его фазы
Промисы и async/await
Streams и buffers
Express / NestJS
Middleware и обработка ошибок
JWT и аутентификация

7 вопросов уровня Senior с ответами

1

Как обрабатывать ошибки в async/await? Что произойдёт при unhandled rejection?

Ответ

Ожидаемые вызовы оборачивают в try/catch либо вешают .catch на возвращённый промис. В Express ошибка, брошенная внутри async-обработчика, не перехватывается фреймворком, если её не передать в next(), поэтому обычно используют обёртку или express-async-errors. Необработанный реджект в современных версиях Node по умолчанию завершает процесс, и это осознанное поведение — состояние процесса неизвестно, его нужно перезапустить.

2

Что такое streams и когда их использовать вместо чтения файла целиком?

Ответ

Streams обрабатывают данные порциями, поэтому расход памяти не зависит от размера полезной нагрузки, а первый байт можно отдать до того, как прочитан последний. Чтение двухгигабайтного файла в Buffer съедает память и задерживает ответ; при использовании pipe тот же файл течёт прямо клиенту. Ещё streams композируются через pipe или pipeline, позволяя выстроить цепочку распаковки, преобразования и вывода с автоматической обработкой backpressure.

3

Что такое middleware в Express? Как работает next()?

Ответ

Middleware — это функция, принимающая запрос, ответ и next, которая выполняется в порядке регистрации и образует конвейер. Вызов next() передаёт управление следующему middleware; если его не вызвать и не отправить ответ, запрос повиснет. Передача аргумента в next() перепрыгивает к обработчику ошибок, который распознаётся по наличию четырёх параметров.

4

Как Node обрабатывает CPU-интенсивные задачи? Что такое worker threads?

Ответ

Так как JavaScript выполняется в одном потоке, тяжёлое вычисление блокирует все ожидающие запросы. Worker threads выполняют JavaScript в параллельных потоках внутри того же процесса, обмениваясь сообщениями и разделяемыми буферами, что подходит для хеширования, обработки изображений или парсинга. Альтернативы — вынести работу в отдельный сервис или очередь задач; кластеризация лишь добавляет процессы и не ускоряет один запрос.

5

Что такое JWT? Где его хранить и какие есть риски?

Ответ

JWT — это подписанный токен с набором утверждений, позволяющий серверу аутентифицировать запрос без похода за сессией. Хранение в localStorage делает его уязвимым к XSS; хранение в куке с httpOnly, Secure и SameSite закрывает XSS, но требует защиты от CSRF. Более глубокий компромисс — отзыв: stateless-токен действителен до истечения срока, поэтому в чувствительных системах используют короткоживущие access-токены с refresh-токенами и серверным списком отозванных.

6

В чём разница между require и import? Что такое CommonJS и ESM?

Ответ

CommonJS require синхронен, разрешается в рантайме и может вызываться условно внутри функции. ESM import статичен, поднимается наверх и анализируется до выполнения, что открывает tree shaking и top-level await. Формат пакета задаётся через "type": "module" или расширения .mjs и .cjs; ESM может импортировать CommonJS, а обратное требует динамического import(), потому что require не умеет загружать асинхронный граф модулей.

7

Как реализовать graceful shutdown?

Ответ

По SIGTERM перестают принимать новые соединения через server.close(), дают завершиться текущим запросам, а затем закрывают пулы БД, консьюмеров очередей и таймеры перед выходом. Таймаут принудительно завершает процесс, если что-то зависло, чтобы контейнер не застревал. Без этого деплой рвёт запросы на середине и может оставить транзакции или сообщения очереди в несогласованном состоянии.

🦎

Прочитать ответы недостаточно

На собеседовании ты говоришь вслух под давлением. Кем задаст эти же вопросы, оценит каждый ответ и покажет, что именно подтянуть.

Пройти интервью Senior Node.js Backend →
Бесплатно · 3 интервью в месяц

Другие уровни — Node.js Backend

Junior Node.js BackendMiddle Node.js BackendВсе вопросы Node.js Backend

Другие специализации

🔍Senior QA Manual🤖Senior QA AutomationSenior Java Backend🐍Senior Python Backend🐘Senior PHP Backend🦫Senior Go Backend⚛️Senior React Frontend💚Senior Vue Frontend🅰️Senior Angular FrontendSenior Next.js