Питання на співбесіді з Node.js (Middle) з відповідями
75 запитань для співбесіди з теми Node.js (Middle) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Який список показує основні фази event loop у Node.js у правильному порядку?
- 2.У якому порядку буде виведення?
- 3.Що виконається першим усередині колбека вводу-виводу (наприклад, у
fs.readFile)? - 4.Чим небезпечні рекурсивні виклики
process.nextTick? - 5.Що за замовчуванням обробляє пул потоків libuv?
- 6.Обробник запиту 2 секунди виконує важкий для CPU цикл. Що відбувається з іншими запитами?
- 7.Що з цього може заблокувати event loop?
- 8.Як виміряти, наскільки завантажений event loop?
- 9.Що робить
timer.unref()? - 10.Що робить
await setTimeout(1000), імпортований зnode:timers/promises? - 11.Навіщо віддавати файл на 2 ГБ через стріми, а не через
readFile? - 12.Які чотири базові типи стрімів є в Node.js?
- 13.Що таке backpressure у стрімах?
- 14.Чому
stream.pipeline()кращий за ланцюжок.pipe()? - 15.Як читати readable-стрім рядок за рядком або шматок за шматком через
async/await? - 16.Що таке
Buffer? - 17.Чим
Buffer.alloc(10)відрізняється відBuffer.allocUnsafe(10)? - 18.Що поверне
Buffer.from("привіт").length? - 19.Що таке
objectModeу стрімах? - 20.Як стиснути файл gzip за допомогою стрімів?
- 21.Що станеться, якщо
EventEmitterзгенеруєerror, а слухачаerrorнемає? - 22.На що зазвичай вказує попередження
MaxListenersExceededWarning? - 23.Як дочекатися однієї події як проміса?
- 24.Чим операційні помилки відрізняються від помилок програміста?
- 25.Навіщо передавати
cause, коли кидаєте помилку повторно? - 26.Для чого в Node.js використовують
AbortController? - 27.Чому кожен вихідний HTTP-запит повинен мати таймаут?
- 28.Як оголосити middleware для обробки помилок в Express?
- 29.Що змінилося в Express 5 для
async-обробників маршрутів? - 30.Чи важливий порядок викликів
app.use()в Express? - 31.Для чого
express.Router()? - 32.Яка ключова особливість Fastify порівняно з Express?
- 33.Навіщо валідувати вхідні дані на сервері, якщо фронтенд уже їх перевіряє?
- 34.Які HTTP-методи ідемпотентні за визначенням?
- 35.Як добре повертати помилки API в єдиному форматі?
- 36.Як роздавати папку статичних файлів в Express?
- 37.Як треба зберігати паролі?
- 38.Що гарантує підпис JWT?
- 39.Який поширений недолік JWT порівняно із серверними сесіями?
- 40.Які атрибути cookie допомагають захистити сесійну cookie?
- 41.Чому в SQL-запитах треба використовувати параметри, а не склеювання рядків?
- 42.Що робить middleware
helmet? - 43.Навіщо обмежувати частоту запитів до ендпоінта входу?
- 44.Як згенерувати криптографічно стійкий випадковий токен?
- 45.Як порівнювати секретний токен із запиту зі збереженим?
- 46.Навіщо Node.js-застосункам пул з'єднань із базою даних?
- 47.Що таке проблема N+1 запитів?
- 48.Коли потрібна транзакція в базі даних?
- 49.Що таке ORM, як-от Prisma чи TypeORM?
- 50.Яка можливість Node.js дає працювати із SQLite без встановлення пакетів?
- 51.Для чого потрібні worker threads?
- 52.Чим
child_process.execвідрізняється відchild_process.spawn? - 53.Що робить
child_process.fork()? - 54.Що робить модуль
cluster? - 55.Як замокати функцію у вбудованому тест-раннері?
- 56.Як протестувати ендпоінти Express-застосунку, не запускаючи справжній сервер на фіксованому порту?
- 57.Яка функція
node:assertпорівнює об'єкти за вмістом? - 58.Що The Twelve-Factor App радить щодо конфігурації?
- 59.Що має зробити Node.js-сервер, отримавши
SIGTERM? - 60.Навіщо в логах ID запиту?
- 61.Які дані ніколи не можна писати в логи?
- 62.Чому в Dockerfile для Node.js-застосунку
package.jsonі lock-файл копіюють раніше за код? - 63.Для чого ендпоінт перевірки стану на кшталт
/health? - 64.Що робить поле
exportsуpackage.json? - 65.Чи може CommonJS-код у сучасному Node.js зробити
require()ES-модуля? - 66.Що виражає поле
enginesуpackage.json? - 67.Що таке npm workspaces?
- 68.Чим ризиковані скрипти
postinstallу залежностях? - 69.Коли Server-Sent Events (SSE) кращі за WebSocket?
- 70.Яка складність WebSocket, коли інстансів сервера кілька?
- 71.Навіщо черга задач, як-от BullMQ, для надсилання листів після реєстрації?
- 72.Для чого використовують
AsyncLocalStorage? - 73.Чому HTTP keep-alive важливий для сервісу, який часто звертається до інших API?
- 74.Чому для великих таблиць пагінація курсором часто краща за
OFFSET? - 75.Що таке шаблон cache-aside з Redis?