Вопросы на собеседовании: Node.js
Разбор реальных вопросов с собеседований по Node.js — от event loop и порядка выполнения промисов до middleware в Express, кластеризации и поиска утечек памяти. Каждый урок построен одинаково: сам вопрос, что за ним на самом деле проверяет интервьюер, развёрнутый ответ с примерами кода, типичные ошибки кандидатов и короткая выжимка, которую можно произнести за полминуты. Учебник пригодится и тем, кто готовится к первому собеседованию, и тем, кто идёт на middle или senior и хочет закрыть пробелы в понимании рантайма.
Курс «Вопросы на собеседовании: Node.js» состоит из 5 разделов и 15 уроков: Event loop и асинхронность, Асинхронный код на практике, Модули и устройство рантайма, Веб-сервер и Express и Производительность и эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Event loop и асинхронность
- Как устроен event loop и какие у него фазы
Вопрос с собеседования по Node.js: что такое event loop, из каких фаз он состоит и почему setImmediate внутри I/O всегда обгоняет setTimeout.
- Macrotask, microtask и process.nextTick
Разбор классической задачи с собеседования по Node.js: в каком порядке выполнятся setTimeout, Promise.then, process.nextTick и setImmediate.
- Почему Node однопоточный, но неблокирующий
Вопрос с собеседования: как Node.js обрабатывает тысячи соединений в одном потоке, что такое блокирующий код и почему CPU-задачи ломают эту модель.
- Как устроен event loop и какие у него фазы
2 Асинхронный код на практике
- От callback hell к промисам
Собеседование по Node.js: соглашение error-first callback, чем плох callback hell, как промисифицировать API и почему колбэк не всегда асинхронный.
- async/await и обработка ошибок
Вопросы с собеседования по Node.js про async/await: что возвращает async-функция, где теряются ошибки, unhandledRejection и await внутри forEach.
- Promise.all, отмена и таймауты
Собеседование по Node.js: чем Promise.all отличается от allSettled и race, ловушки параллельного запуска, ограничение конкурентности и отмена через AbortController.
- От callback hell к промисам
3 Модули и устройство рантайма
- CommonJS против ES-модулей и кэш модулей
Вопрос с собеседования по Node.js: чем require отличается от import, как работает кэш модулей, что такое циклические зависимости и ловушка exports.
- V8, libuv и thread pool
Собеседование по Node.js: что делает V8, а что libuv, какие операции попадают в thread pool, почему сеть в него не попадает и зачем UV_THREADPOOL_SIZE.
- Buffer и потоки Stream
Вопросы с собеседования по Node.js: зачем нужен Buffer, четыре типа Stream, что такое backpressure и почему pipeline лучше pipe.
- CommonJS против ES-модулей и кэш модулей
4 Веб-сервер и Express
- Middleware: устройство и порядок вызова
Вопрос с собеседования по Express: что такое middleware, в каком порядке они выполняются, зачем next() и почему возникает ERR_HTTP_HEADERS_SENT.
- Роутинг, обработка ошибок и валидация
Собеседование по Express: порядок маршрутов, централизованный обработчик ошибок, ловушка с асинхронными ошибками и валидация входных данных.
- Аутентификация: JWT против сессий
Вопрос с собеседования по Node.js: как устроен JWT, чем он отличается от серверных сессий, где хранить токен и почему JWT нельзя отозвать.
- Middleware: устройство и порядок вызова
5 Производительность и эксплуатация
- Кластеризация и worker threads
Собеседование по Node.js: как задействовать все ядра через cluster, чем worker_threads отличается от кластера и что ломается при нескольких процессах.
- Утечки памяти и профилирование
Вопрос с собеседования по Node.js: как найти утечку памяти, какие причины встречаются чаще всего и какими инструментами снимать heap snapshot и профиль CPU.
- Graceful shutdown, кэширование и мониторинг
Финальные вопросы собеседования по Node.js: корректное завершение по SIGTERM, слои кэширования, структурные логи, метрики и масштабирование сервиса.
- Кластеризация и worker threads