Backend Flashcards

1
Q

Що такеMiddleware?

A

Це функція, яка приймає як аргументи об’єкти request і response, а також callback-функцію next(). Вона може використати об’єкт response, щоб повернути статус і результат, або передати виконання наступному middleware. Також є middleware-обробники помилок. У цьому випадку першим аргументом додасться помилка.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Які бувають стріми?

A

Стрім — це інтерфейс для роботи з даними по частинам. Ми не маємо доступу до цих даних відразу, і вони не зберігаються в пам’яті. Завдяки цьому стріми зручно використовувати для роботи з великими файлами. При відправленні файлу в запиті, використовуючи stream.pipe(res), ми не засмічуємо пам’ять вмістом файлу та уникаємо зайвої операції зчитування файлу перед його відправленням.

Види стрімів:

  • read (на читання)
  • write (на запис)
  • duplex - одночасно на читання та запис, наприклад, TCP-сокет
  • transform - це duplex-стрім, який використовується для трансформації даних, наприклад, стиснення.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Що таке child process?

A

За допомогою модуля child process можна створювати дочірні процеси та запускати команди операційної системи.

exec — виконує команду в оболонці, результат у пам’яті (callback: stdout, stderr).
spawn — створює процес для команди з потоками stdout.on(‘data’), stderr.on(‘data’), on(‘close’).
execFile — напряму виконує файл без оболонки (callback: stdout, stderr).
fork — створює процес Node.js з IPC: on(‘message’), send().

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Graphql Query vs Mutation

A

Якщо за один запит виконуємо кілька query, вони виконуються паралельно, а mutations — послідовно.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

RabbitMQ exchange types

A

Direct — routing key має точно збігатися.

Fanout — будь-яка черга, прив’язана до exchange, отримуватиме повідомлення.

Topic — routing key має збігатися повністю або частково; * — будь-яке слово, # — будь-яка кількість слів.

Headers — при біндінгу черги вказуємо, повідомлення з яким header приймати.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Worker Threads in Node.js

A

Worker Threads дає можливість виконання CPU-інтенсивних задач без блокування основного потоку в окремих потоках. Вони мають доступ до спільної пам’яті через SharedArrayBuffer, що мінімізує накладні витрати на передачу даних. Спілкування відбувається через postMessage для надсилання даних і .on callback для отримання відповідей.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Async Hooks in Node.js

A

Async Hooks — це інструмент для відстеження асинхронних операцій: дозволяє логувати, моніторити продуктивність, і трасувати запити. В основі інтерфейсу події: init (створення ресурсу), before та after (початок і завершення виконання), destroy (видалення), promiseResolve (завершення промісу).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly