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

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 выполняет ваш JavaScript в одном потоке, а ввод-вывод отдаёт операционной системе и забирает результаты колбэками, когда те готовы. Однопоточность значит, что ваш код никогда не выполняется в двух местах одновременно — но ожидание происходит не здесь, поэтому Node дёшево держит тысячи простаивающих соединений. Следствие, которое надо помнить: медленный цикл в вашем коде блокирует все запросы, а не только свой.

2

Чем отличаются колбэк, промис и async/await?

Ответ

Это один механизм на трёх уровнях удобства. Колбэк — функция, вызываемая по завершении, и он плохо вкладывается. Промис — объект, представляющий будущее значение, его можно цеплять в цепочку. async/await — синтаксис над промисами, позволяющий писать код, который выглядит последовательным. Не меняется базовая модель: await не блокирует поток, а уступает управление.

3

Что произойдёт, если забыть await перед промисом?

Ответ

Функция сразу продолжается с промисом в состоянии ожидания вместо значения, дальше по коду возникает неопределённое поведение, а любая ошибка внутри становится необработанным отказом и может уронить процесс. Самая частая форма — запись в базу, которая выглядит успешной, потому что никто не дождался, чтобы узнать о провале. Линтеры это ловят, и правило стоит включить.

4

Как обрабатывать ошибку внутри async-функции?

Ответ

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

5

Чем dependencies отличаются от devDependencies?

Ответ

Первые нужны, чтобы приложение работало, вторые — только чтобы его собрать и протестировать. Разница проявляется, когда продакшн-образ ставится с --omit=dev: инструмент сборки не в том разделе либо раздувает образ, либо ломает сборку. Смежный вопрос — package-lock: его коммитят, потому что именно он делает две установки одинаковыми.

6

Что такое middleware в Express?

Ответ

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

7

Чем process.env отличается от файла конфигурации?

Ответ

Переменные окружения приходят извне кода, поэтому одна и та же сборка работает в стейджинге и проде с разными значениями, а секреты не попадают в репозиторий. Файл конфигурации удобен и версионируется — именно поэтому учётные данные в нём жить не должны. Практичная схема — схема валидации переменных при старте, чтобы отсутствующая падала сразу, а не на первом запросе.

🦎

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

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

Пройти интервью 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 Ruby on Rails🟣Junior .NET Backend Developer🔷Junior C++🟨Junior JavaScript