100 запитань та відповідей по темі:

Node — Шпаргалка

1. Що таке Node.js?

Node.js — це середовище виконання JavaScript на сервері, побудоване на рушії V8.

2. Яка основна перевага Node.js?

Немасивна, подієва архітектура і асинхронність роблять його ефективним для високонавантажених додатків.

3. Як встановити Node.js?

З офіційного сайту nodejs.org або через менеджери пакетів (nvm, brew).

4. Що таке npm?

Node Package Manager — менеджер пакетів для Node.js.

5. Що таке модуль у Node.js?

Файл або набір файлів, який експортує функції, об’єкти чи змінні.

6. Як імпортувати модуль?

За допомогою require('module') або import у ES-модулях.

7. Що таке global object?

Об’єкт, доступний у будь-якому модулі Node.js без імпорту (global).

8. Що таке process?

Об’єкт, що надає інформацію про поточний процес Node.js і дозволяє взаємодіяти з ним.

9. Як отримати аргументи командного рядка?

Через process.argv.

10. Що таке модуль fs?

Модуль для роботи з файловою системою.

11. Як прочитати файл синхронно?

fs.readFileSync('file.txt', 'utf-8')

12. Як прочитати файл асинхронно?

fs.readFile('file.txt', 'utf-8', callback)

13. Що таке callback?

Функція, передана в іншу функцію для виконання після завершення операції.

14. Що таке promise?

Об’єкт, який представляє завершення або невдачу асинхронної операції.

15. Як використовувати async/await?

Позначаємо функцію як async і використовуємо await перед промісами.

16. Що таке event loop?

Цикл подій, який обробляє асинхронні операції в Node.js.

17. Що таке buffer?

Об’єкт для роботи з двійковими даними.

18. Що таке stream?

Об’єкт для обробки даних по частинах (readable, writable, duplex, transform).

19. Що таке module.exports?

Об’єкт, який експортує функції або змінні з модуля.

20. Що таке require?

Функція для імпорту модулів CommonJS.

21. Як створити HTTP сервер?

За допомогою модуля http.createServer().

22. Що таке middleware?

Функція, яка обробляє запит перед передачею до наступної функції у стеку.

23. Що таке Express.js?

Фреймворк для побудови веб-серверів у Node.js.

24. Як обробити маршрути в Express?

Через app.get('/route', handler), app.post тощо.

25. Що таке npm package.json?

Файл конфігурації проекту, що містить залежності та скрипти.

26. Що таке nodemon?

Утиліта для автоматичного перезапуску сервера при зміні коду.

27. Що таке cluster?

Модуль для запуску кількох процесів Node.js для використання всіх ядер CPU.

28. Що таке process.env?

Об’єкт для доступу до змінних середовища.

29. Що таке crypto?

Модуль для криптографічних операцій (хеші, шифрування).

30. Що таке EventEmitter?

Клас для роботи з подіями та підписками на них.

31. Як підписатися на подію EventEmitter?

Через emitter.on('event', callback) або emitter.once.

32. Що таке readable stream?

Потік, з якого можна читати дані частинами.

33. Що таке writable stream?

Потік, в який можна записувати дані частинами.

34. Що таке duplex stream?

Потік, який одночасно читає і записує дані.

35. Що таке transform stream?

Дуплекс-потік, який змінює дані під час проходження через нього.

36. Як обробляти помилки у потоках?

Підпискою на подію 'error' (stream.on('error', callback)).

37. Що таке buffer pool?

Попередньо виділена пам’ять для буферів, щоб уникнути частих алокацій.

38. Що таке process.nextTick?

Метод для планування колбеку на наступну ітерацію циклу подій перед промісами.

39. Що таке setImmediate?

Запускає колбек на наступній ітерації event loop, після I/O подій.

40. Як працює timers module?

Надає setTimeout, setInterval, setImmediate для відкладеного виконання коду.

41. Що таке cluster.fork()?

Метод для створення нового процесу Node.js у кластері.

42. Що таке IPC у Node.js?

Міжпроцесна комунікація для обміну повідомленнями між процесами.

43. Що таке child_process?

Модуль для запуску інших процесів з Node.js.

44. Як використовувати exec?

Через child_process.exec('command', callback) для запуску команд shell.

45. Як використовувати spawn?

Через child_process.spawn('command', args) для потокової роботи з процесом.

46. Що таке cluster master?

Головний процес, який створює і контролює воркер-процеси.

47. Що таке worker?

Процес у кластері, що обробляє запити.

48. Як підключати Express middleware?

Через app.use(middlewareFunction).

49. Як обробляти JSON запити у Express?

За допомогою app.use(express.json()).

50. Як підключати статичні файли у Express?

app.use(express.static('public'))

51. Що таке routing params?

Динамічні частини URL, які можна отримати через req.params.

52. Що таке query params?

Параметри URL після ?, доступні через req.query.

53. Що таке cookie-parser?

Middleware для обробки cookie в Express.

54. Що таке session?

Механізм збереження стану користувача між запитами.

55. Що таке CORS?

Cross-Origin Resource Sharing — політика доступу до ресурсів з інших доменів.

56. Як обробляти помилки у Express?

Через middleware з чотирма параметрами (err, req, res, next).

57. Що таке helmet?

Middleware для безпеки HTTP заголовків.

58. Що таке morgan?

Middleware для логування HTTP запитів.

59. Що таке dotenv?

Модуль для завантаження змінних середовища з файлу .env.

60. Що таке body-parser?

Middleware для парсингу тіла запиту (JSON, URL-encoded).

61. Що таке WebSocket у Node.js?

Протокол для двостороннього зв’язку між сервером і клієнтом у реальному часі.

62. Який модуль використовується для WebSocket?

Наприклад, ws або socket.io.

63. Що таке socket.emit?

Метод для відправки події від сервера до клієнта або навпаки.

64. Як обробляти події socket.on?

За допомогою socket.on('event', callback) для отримання подій.

65. Що таке REPL у Node.js?

Read-Eval-Print Loop — інтерактивна консоль Node.js для виконання коду.

66. Як використовувати REPL?

Запустити командою node без аргументів у терміналі.

67. Що таке global.setTimeout?

Метод для відкладеного виконання коду через певний час.

68. Що таке global.setInterval?

Метод для циклічного виконання коду через заданий інтервал.

69. Як обробляти uncaughtException?

Через process.on('uncaughtException', callback) для глобального перехоплення помилок.

70. Як обробляти unhandledRejection?

Через process.on('unhandledRejection', callback).

71. Що таке REPLServer?

Клас Node.js для створення кастомних REPL-консолей.

72. Що таке setImmediate vs setTimeout?

setImmediate виконується після I/O, а setTimeout після заданого часу.

73. Як використовувати fs.promises?

Через const fs = require('fs').promises для асинхронної роботи з файлами з промісами.

74. Що таке readFileSync vs readFile?

readFileSync — синхронне читання, блокує event loop, readFile — асинхронне.

75. Що таке writeFileSync vs writeFile?

Аналогічно, синхронне і асинхронне записування файлів.

76. Що таке path module?

Модуль для роботи з шляхами файлів і директорій.

77. Як об’єднати шляхи у Node.js?

Через path.join('dir', 'file.txt').

78. Як отримати розширення файлу?

Через path.extname('file.txt').

79. Що таке os module?

Модуль для отримання інформації про операційну систему.

80. Як отримати кількість ядер CPU?

require('os').cpus().length

81. Що таке cluster для масштабування?

Використання кількох процесів для обробки запитів на всіх ядрах CPU.

82. Як працює EventEmitter.emit?

Запускає усі колбеки, підписані на певну подію.

83. Що таке process.argv?

Масив аргументів командного рядка.

84. Як дізнатися версію Node.js?

node -v або process.version

85. Як отримати platform?

process.platform повертає ОС, наприклад 'win32' або 'linux'.

86. Що таке require.cache?

Об’єкт, який кешує модулі, щоб не підвантажувати їх повторно.

87. Як очистити кеш модуля?

Через delete require.cache[require.resolve('module')]

88. Що таке globalThis?

Глобальний об’єкт, доступний у будь-якому контексті.

89. Що таке crypto.randomUUID?

Метод для генерації унікального UUID.

90. Що таке worker_threads?

Модуль для паралельного виконання коду у фонових потоках.

91. Як створити worker thread?

Через new Worker('file.js') з модуля worker_threads.

92. Як обмінюватися даними з worker?

Через postMessage та події 'message'.

93. Що таке performance module?

Модуль для вимірювання продуктивності коду.

94. Як використовувати perf_hooks?

Через const { performance } = require('perf_hooks') і performance.now().

95. Що таке inspector?

Модуль для відладки Node.js через Chrome DevTools.

96. Як підключити inspector?

Запуском Node.js з --inspect або --inspect-brk.

97. Що таке domains (deprecated)?

Модуль для обробки помилок у групах асинхронних операцій, застарілий.

98. Як захищати Node.js додатки?

Використовувати helmet, rate-limit, перевірку даних і HTTPS.

99. Що таке process.memoryUsage?

Метод для отримання статистики використаної пам’яті Node.js.

100. Як оптимізувати Node.js додаток?

Профілювання, використання асинхронного коду, кешування, кластеризація, оптимізація запитів і I/O.