Питання на співбесіді з Node.js (Senior) з відповідями

75 запитань для співбесіди з теми Node.js (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.

Пройти цей тест
  1. 1.Як організована купа V8 для збирання сміття?
  2. 2.Контейнер має 2 ГБ пам'яті, але процес Node.js падає з «JavaScript heap out of memory» десь на 1,4 ГБ. Що перевірити?
  3. 3.Який шаблон - класична причина витоку пам'яті в Node.js-сервері?
  4. 4.Як знайти, що саме витікає в процесі Node.js?
  5. 5.Чому замикання може несподівано утримувати пам'ять?
  6. 6.Що таке приховані класи (shapes) у V8 і чому вони важливі?
  7. 7.Що process.memoryUsage() повідомляє як rss?
  8. 8.Для чого WeakRef і FinalizationRegistry НЕ підходять?
  9. 9.Як знайти функції, що найбільше навантажують CPU, в умовах, близьких до продакшену?
  10. 10.p99 затримки висока, а середнє навантаження CPU низьке. Що може бути причиною?
  11. 11.Що зазвичай змушує повільний регулярний вираз блокувати Node.js-сервер (ReDoS)?
  12. 12.Чому JSON.stringify великої відповіді може стати вузьким місцем і що допомагає?
  13. 13.Коли збільшення UV_THREADPOOL_SIZE справді допомагає?
  14. 14.Чому dns.lookup може бути прихованим вузьким місцем для вихідних HTTP-запитів?
  15. 15.Як добре передати великі двійкові дані між worker threads без копіювання?
  16. 16.Чому сервер має використовувати пул worker threads, а не створювати новий воркер на кожен запит?
  17. 17.За балансувальником (наприклад, AWS ALB з idle timeout 60 с) клієнти іноді отримують 502. Яка поширена причина?
  18. 18.Чому server.close() може не завершитися під час graceful shutdown?
  19. 19.Як сервер має обмежувати розмір тіла вхідних запитів?
  20. 20.Від чого захищає server.requestTimeout?
  21. 21.Що змінює HTTP/2 для Node.js API, яким користуються браузери?
  22. 22.Що таке undici у Node.js?
  23. 23.Що дає асинхронний генератор у pipeline?
  24. 24.Що контролює highWaterMark?
  25. 25.Як стріми Node.js взаємодіють із Web Streams (ReadableStream)?
  26. 26.Обробляючи стрім завантаження, ви викликаєте асинхронну функцію для кожного шматка, не чекаючи її. Який ризик?
  27. 27.Що таке prototype pollution?
  28. 28.Як безпечно віддати файл, який користувач запитує з каталогу uploads?
  29. 29.Ваш API завантажує URL, який надав користувач (наприклад, для прев'ю посилань). Від якої атаки треба захиститися?
  30. 30.Що робить модель дозволів Node.js (--permission)?
  31. 31.Що найбільше допомагає проти шкідливих версій пакетів (атак на ланцюжок постачання)?
  32. 32.Чому eval (або new Function) на даних користувача небезпечний навіть у «пісочниці» на кшталт vm?
  33. 33.Від якої проблеми рівня HTTP, окрім багів застосунку, треба захищати Node.js API?
  34. 34.Чому процес Node.js у контейнері має працювати не від root?
  35. 35.Навіщо додавати випадковий jitter до експоненційного backoff при повторах невдалих викликів?
  36. 36.Що робить circuit breaker?
  37. 37.Яку проблему розв'язує шаблон transactional outbox?
  38. 38.Черга повідомлень доставляє повідомлення «щонайменше один раз». Що мають робити споживачі?
  39. 39.Що таке cache stampede і як йому запобігти?
  40. 40.Який алгоритм обмеження частоти дозволяє короткі сплески, зберігаючи середню швидкість?
  41. 41.Чому довгу або CPU-важку роботу варто винести зі шляху HTTP-запиту?
  42. 42.Як не дати повільній залежності покласти весь сервіс (шаблон bulkhead)?
  43. 43.Чому команда може обрати модульний моноліт замість мікросервісів для нового Node.js-продукту?
  44. 44.Що OpenTelemetry дає Node.js-сервісам?
  45. 45.Які метрики складають метод RED для моніторингу сервісу?
  46. 46.Для чого diagnostics_channel?
  47. 47.Що таке діагностичний звіт (--report-on-fatalerror, process.report.writeReport())?
  48. 48.Процес Node.js не завершується після закінчення головного скрипта. Яка зазвичай причина?
  49. 49.Чому uncaughtException + «залогувати й працювати далі» - поганий шаблон?
  50. 50.Що дозволяють хуки кастомізації модулів (module.register, registerHooks)?
  51. 51.Що таке «dual package hazard»?
  52. 52.Що таке Node-API (N-API)?
  53. 53.Що таке Single Executable Applications (SEA) у Node.js?
  54. 54.Що дає Node.js-коду оголошення using (explicit resource management)?
  55. 55.Як Node.js обробляє enum і namespace, коли запускає TypeScript з вирізанням типів?
  56. 56.Чому ізоляція тестів важлива в node --test і як вона працює за замовчуванням?
  57. 57.Для чого корисний запуск зі знімка (--build-snapshot)?
  58. 58.Запускаючи Node.js у Kubernetes, чи варто використовувати модуль cluster усередині кожного пода?
  59. 59.Чому горизонтально масштабований Node.js-сервіс має бути stateless?
  60. 60.Який головний компроміс між round-robin у cluster і розподілом з'єднань силами ОС?
  61. 61.Як не дати одному тенанту чи клієнту вичерпати спільний Node.js API?
  62. 62.Сервіс на кожен запит викликає три API і може пережити збій одного. Який підхід доречний?
  63. 63.Як DataLoader розв'язує проблему N+1 у GraphQL-сервері?
  64. 64.Коли gRPC доречніший за REST/JSON?
  65. 65.Як ключі ідемпотентності роблять POST-запити безпечними для повторів?
  66. 66.Як розвивати публічний API, не ламаючи наявних клієнтів?
  67. 67.Чому процесу Node.js потрібна стратегія для SIGINT/SIGTERM, коли він працює як PID 1 у контейнері?
  68. 68.Як розумно запускати задачі за розкладом (cron) у Node.js-сервісі з кількома інстансами?
  69. 69.Чому AsyncLocalStorage може втрачати контекст усередині деяких бібліотек і що це виправляє?
  70. 70.Клієнт від'єднується, поки ваш обробник виконує повільний запит до бази. Як не витрачати роботу даремно?
  71. 71.Ви масштабуєтеся до 40 інстансів, кожен із пулом на 20 з'єднань, і PostgreSQL починає відхиляти з'єднання. Що допоможе?
  72. 72.Два запити одночасно читають запис, змінюють і зберігають його, і одне оновлення губиться. Як цьому запобігає оптимістичне блокування?
  73. 73.Що означає load shedding для перевантаженого Node.js-сервісу?
  74. 74.Як розгорнути нову версію Node.js API, не втрачаючи запитів?
  75. 75.Сервіс виконує важку обробку зображень чи відео. Який підхід найрозумніший у Node.js-стеку?