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

Middle Node.js BackendПитання на співбесіді Node.js

Middle · 2–4 роки досвіду

Співбесіда Node.js крутиться навколо event loop, асинхронних патернів, Express або NestJS і наслідків однопотокового рантайму. Нижче — найчастіші питання з еталонними відповідями. Middle: глибше розуміння, оптимізацію та реальні робочі ситуації.

Спробувати — без реєстрації
Готуємо питання…

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

Event loop та його фази
Проміси й async/await
Streams і buffers
Express / NestJS
Middleware та обробка помилок
JWT і автентифікація

7 питань рівня Middle з відповідями

1

Чому важка обчислювальна операція небезпечна в Node і що з цим робити?

Відповідь

Бо вона займає єдиний потік, що обслуговує всі запити: двосекундне обчислення змушує кожного паралельного користувача чекати дві секунди. Варіанти — винести у worker thread, в окремий процес або чергу, або змінити алгоритм. Пастка в тому, що на слабкому трафіку в розробці все виглядає нормально, а під навантаженням зʼявляється обрив за затримками.

2

Навіщо потрібні потоки (streams) і коли їх відсутність шкодить?

Відповідь

Вони дозволяють обробляти дані шматками, а не тримати цілком у памʼяті. Читання гігабайтного завантаження через readFile виділяє гігабайт на кожен паралельний запит — так сервіс помирає на трьох одночасних завантаженнях. Pipe тримає памʼять сталою незалежно від розміру файлу. Backpressure — та частина, яку пропускають: якщо приймач повільніший за джерело, непрокачаний потік буферизує, доки процесу не скінчиться памʼять.

3

У вас витік памʼяті на проді. Як його шукати?

Відповідь

Спершу підтвердити: зростаюча купа, яка не повертається після збирання сміття, а не нормальна пилка. Далі зняти два знімки купи з різницею в хвилини під навантаженням і порівняти утримані обʼєкти — диф зазвичай прямо називає винуватця. Звичні причини: зростаючий кеш без витіснення, слухачі, що додаються на кожен запит і не знімаються, і замикання, які утримують великий обʼєкт.

4

Що дає кластеризація і чого вона не дає?

Відповідь

Вона запускає по процесу на ядро, щоб використовувалася вся машина, а не один потік, і ОС розподіляє зʼєднання. Не дає вона спільного стану: усе, що було в памʼяті, тепер існує в кожному воркері, тому внутрішньопроцесні кеші розходяться, а сесії ламаються, доки не переїдуть у Redis. І повільний обробник вона не лагодить — лише множить кількість місць, де може бути повільно.

5

Як уникнути N+1 з ORM у Node?

Відповідь

Так само, як усюди: помітити в журналі один запит на елемент і завантажити повʼязані рядки одним. У Prisma це include, у Sequelize eager loading, сирий join працює завжди. Специфічна для Node пастка — await усередині циклу for, який серіалізує виклики, здатні йти разом: Promise.all лагодить затримку, але не кількість запитів.

6

Що перевіряти, коли Node-сервіс сповільнюється під навантаженням?

Відповідь

Чи заблоковано event loop — на це прямо відповідає метрика його затримки, а здогади ні. Якщо цикл у порядку, час іде у зовнішній виклик: база, чужий API, і часта причина — вичерпаний пул зʼєднань. Логи середньої затримки це ховають, перцентилі ні: вичерпання пулу живе саме в p99.

7

Як тестувати код, що ходить у зовнішній API?

Відповідь

Перехоплювати на рівні HTTP чимось на кшталт nock, а не мокати власний клієнт, щоб тест перевіряв справжню збірку запиту й розбір відповіді. Одну реальну відповідь записати як фікстуру і звірятися з нею. Мок власної обгортки перевіряє, що ваш мок збігається з вашим моком — тому такі набори лишаються зеленими, доки інтеграція ламається.

🦎

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

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Middle Node.js Backend →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — Node.js Backend

Junior Node.js BackendSenior Node.js BackendУсі питання Node.js Backend

Інші спеціалізації

🔍Middle QA Manual🤖Middle QA AutomationMiddle Java Backend🐍Middle Python Backend🐘Middle PHP Backend🦫Middle Go Backend💎Middle Ruby on Rails🟣Middle .NET Backend Developer🔷Middle C++🟨Middle JavaScript