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

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

Junior · без опыта / до 1 года

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

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

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

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

1

Объясните event loop в Node.js. Какие у него фазы?

Ответ

Event loop по кругу обрабатывает очереди завершённых операций по фазам: таймеры для setTimeout и setInterval, отложенные колбэки, poll для входящего I/O, check для setImmediate и колбэки закрытия. Между каждой фазой Node вычерпывает очередь микрозадач — сначала process.nextTick, затем колбэки промисов. Именно поэтому долгая синхронная функция блокирует все запросы на сервере: пока она не вернётся, не выполнится ничего.

2

В чём разница между process.nextTick() и setImmediate()?

Ответ

process.nextTick ставит колбэк в очередь до перехода event loop к следующей фазе, вперёд микрозадач промисов. setImmediate планирует колбэк на фазу check следующей итерации. Поэтому nextTick всегда срабатывает раньше, а рекурсивные вызовы nextTick могут полностью заморить event loop — из-за чего setImmediate безопаснее как дефолт для откладывания работы.

3

Что такое Promise? Объясните разницу между Promise.all и Promise.allSettled.

Ответ

Promise представляет значение, которое появится позже, и находится в состоянии pending, fulfilled или rejected. Promise.all резолвится, когда завершились все входные промисы, но реджектится сразу на первом отказе, отбрасывая остальные результаты — это подходит, когда для продолжения нужны все. Promise.allSettled всегда резолвится, отдавая статус и значение по каждому элементу, что годится для независимых операций, где одна ошибка не должна отменять остальные.

4

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

Ответ

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

5

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

Ответ

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

6

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

Ответ

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

7

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

Ответ

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

🦎

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

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

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

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

Middle Node.js BackendSenior Node.js BackendВсе вопросы Node.js Backend

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

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🐘Junior PHP Backend🦫Junior Go Backend⚛️Junior React Frontend💚Junior Vue Frontend🅰️Junior Angular FrontendJunior Next.js