Подготовка к собеседованию
Backend Node.js: вопросы и ответы на собеседовании
Практические вопросы по Node.js, асинхронности, HTTP, базам данных и проектированию backend-сервисов.
Node.js и JavaScript
4 вопросовКак работает event loop в Node.js?middle
Node.js выполняет JavaScript в одном основном потоке, а операции ввода-вывода передаёт системным механизмам и libuv. После завершения callbacks и microtasks возвращаются в очереди event loop.
Чем Promise отличается от callback?junior
Promise представляет будущее значение и позволяет строить цепочки через then/catch или async/await. Это уменьшает вложенность и централизует обработку ошибок по сравнению с callback-стилем.
Когда нужен worker_threads?senior
Worker threads подходят для CPU-bound задач: обработки изображений, криптографии или сложных вычислений. Для обычного I/O они не нужны, потому что Node.js уже выполняет его асинхронно.
Что такое backpressure в Node.js?senior
Backpressure возникает, когда источник производит данные быстрее, чем потребитель успевает их обработать. Потоки Node.js сигнализируют готовность через write и drain, что позволяет ограничить память.
HTTP и API
3 вопросовКак проектировать идемпотентный endpoint?middle
Повторный одинаковый запрос не должен создавать дополнительный эффект. Для POST обычно используют idempotency key и сохраняют результат первой операции, а PUT делают заменяющим обновлением ресурса.
Как обрабатывать ошибки в Express?middle
Используют централизованный middleware ошибок, передают туда исключения из async-обработчиков и возвращают единый формат ответа. В логах сохраняют correlation id, но не секреты и персональные данные.
Как выбирать коды HTTP-ответов?junior
2xx обозначают успех, 3xx — перенаправление, 4xx — ошибку запроса или прав, 5xx — проблему сервера. Один и тот же доменный конфликт должен иметь стабильный код и формат ошибки.
Архитектура и данные
3 вопросовКогда выбрать PostgreSQL, а когда Redis?middle
PostgreSQL — основное долговечное хранилище с транзакциями и связями. Redis подходит для кэша, rate limit, короткоживущих сессий и очередей, но не должен быть единственным источником важных данных.
Как обеспечить повторную обработку сообщения?senior
Обработчик делают идемпотентным: сохраняют уникальный ключ события, проверяют его перед изменением и подтверждают сообщение только после фиксации результата. Повторы считаются нормальным сценарием.
Что логировать в backend-сервисе?middle
Время, уровень, route, latency, correlation id и безопасные параметры операции. Пароли, токены и полные персональные данные в логи не попадают.
Как использовать этот список
Сначала ответьте своими словами, затем раскройте пояснение. Отдельно подготовьте примеры из проектов: на собеседовании важно не только знать определение, но и объяснить, где вы применяли подход на практике.
Посмотреть другие профессии →