Веб-разработка

Вопросы на собеседовании: Node.js

15 уроков · 5 разделов · бесплатно, без регистрации

Разбор реальных вопросов с собеседований по Node.js — от event loop и порядка выполнения промисов до middleware в Express, кластеризации и поиска утечек памяти. Каждый урок построен одинаково: сам вопрос, что за ним на самом деле проверяет интервьюер, развёрнутый ответ с примерами кода, типичные ошибки кандидатов и короткая выжимка, которую можно произнести за полминуты. Учебник пригодится и тем, кто готовится к первому собеседованию, и тем, кто идёт на middle или senior и хочет закрыть пробелы в понимании рантайма.

Курс «Вопросы на собеседовании: Node.js» состоит из 5 разделов и 15 уроков: Event loop и асинхронность, Асинхронный код на практике, Модули и устройство рантайма, Веб-сервер и Express и Производительность и эксплуатация. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.

Программа курса

  1. 1 Event loop и асинхронность

    1. Как устроен event loop и какие у него фазы

      Вопрос с собеседования по Node.js: что такое event loop, из каких фаз он состоит и почему setImmediate внутри I/O всегда обгоняет setTimeout.

    2. Macrotask, microtask и process.nextTick

      Разбор классической задачи с собеседования по Node.js: в каком порядке выполнятся setTimeout, Promise.then, process.nextTick и setImmediate.

    3. Почему Node однопоточный, но неблокирующий

      Вопрос с собеседования: как Node.js обрабатывает тысячи соединений в одном потоке, что такое блокирующий код и почему CPU-задачи ломают эту модель.

  2. 2 Асинхронный код на практике

    1. От callback hell к промисам

      Собеседование по Node.js: соглашение error-first callback, чем плох callback hell, как промисифицировать API и почему колбэк не всегда асинхронный.

    2. async/await и обработка ошибок

      Вопросы с собеседования по Node.js про async/await: что возвращает async-функция, где теряются ошибки, unhandledRejection и await внутри forEach.

    3. Promise.all, отмена и таймауты

      Собеседование по Node.js: чем Promise.all отличается от allSettled и race, ловушки параллельного запуска, ограничение конкурентности и отмена через AbortController.

  3. 3 Модули и устройство рантайма

    1. CommonJS против ES-модулей и кэш модулей

      Вопрос с собеседования по Node.js: чем require отличается от import, как работает кэш модулей, что такое циклические зависимости и ловушка exports.

    2. V8, libuv и thread pool

      Собеседование по Node.js: что делает V8, а что libuv, какие операции попадают в thread pool, почему сеть в него не попадает и зачем UV_THREADPOOL_SIZE.

    3. Buffer и потоки Stream

      Вопросы с собеседования по Node.js: зачем нужен Buffer, четыре типа Stream, что такое backpressure и почему pipeline лучше pipe.

  4. 4 Веб-сервер и Express

    1. Middleware: устройство и порядок вызова

      Вопрос с собеседования по Express: что такое middleware, в каком порядке они выполняются, зачем next() и почему возникает ERR_HTTP_HEADERS_SENT.

    2. Роутинг, обработка ошибок и валидация

      Собеседование по Express: порядок маршрутов, централизованный обработчик ошибок, ловушка с асинхронными ошибками и валидация входных данных.

    3. Аутентификация: JWT против сессий

      Вопрос с собеседования по Node.js: как устроен JWT, чем он отличается от серверных сессий, где хранить токен и почему JWT нельзя отозвать.

  5. 5 Производительность и эксплуатация

    1. Кластеризация и worker threads

      Собеседование по Node.js: как задействовать все ядра через cluster, чем worker_threads отличается от кластера и что ломается при нескольких процессах.

    2. Утечки памяти и профилирование

      Вопрос с собеседования по Node.js: как найти утечку памяти, какие причины встречаются чаще всего и какими инструментами снимать heap snapshot и профиль CPU.

    3. Graceful shutdown, кэширование и мониторинг

      Финальные вопросы собеседования по Node.js: корректное завершение по SIGTERM, слои кэширования, структурные логи, метрики и масштабирование сервиса.