Співбесіда з Node.js розробником. 255 запитань для Junior, Middle і Senior

Node.js — найпопулярніша вебтехнологія серед розробників, згідно з останнім дослідженням Stack Overflow. Це програмне середовище з відкритим кодом, яке дає змогу запускати програми, написані JavaScript.

Цей стек має попит і в класичному сервісному та продуктовому IT, і в геймдеві. DOU опитав технічних фахівців, тимлідів і CTO та склав орієнтовний список запитань для співбесіди на посаду Node.js розробника.

Більше матеріалів у рубриці — за посиланням.

Аби швидко перейти до бажаного грейду, скористайтесь рубрикатором:

— Junior
— Middle
— Middle/Senior
— Senior

💡 Junior

Node.js

1.Що таке Node.js?
2.Які основні переваги та недоліки використання Node.js?
3.Для яких завдань Node.js не підходить?
4.Які в Node.js головні компоненти?
5.Яким чином Node.js сервер здатен обробляти одночасно багато паралельних запитів від клієнтів, маючи лише один thread?
6.Чи можливо використовувати кілька потоків (threads)? За допомогою яких модулів це реалізовано?
7.Node.js інтерпретує чи компілює код програми?
8.Як зчитувати великі файли за допомогою Node.js?
9.Що таке libuv i v8? Яке їхнє призначення?
10.Яка різниця між microtasks і macrotasks? Наведіть приклади таких завдань.
11.Що таке стрим (stream)?
12.Які види стримів ви знаєте?
13.Що таке event loop? З яких компонентів складається і як працює?
14.Що таке логування і моніторинг?
15.Чим відрізняється моноліт від мікросервісу?
16.В чому різниця між такими ключовими словами мови, як string і String?

Express.js

17.Для чого використовують middleware?
18.Як переходити з однієї middleware в іншу?
19.Як пріоритизувати middleware?
20.Як організувати error handler?

JavaScript

21.Що таке асинхронність і асинхронний код?
22.Яка відмінність між var, let і const? Чому варто використовувати const, якщо змінна не буде змінюватися далі в коді?
23.Як відкласти виконання функції на конкретний час?
24.Які ви знаєте способи оголошення функції?
25.Що таке анонімна функція?
26.Наведіть приклади функції, що самовикликається.
27.У чому різниця між function expression і function declaration?
28.Як з JS масиву чисел отримати інший масив, де залишаться тільки числа понад 10? Яку функцію масиву для цього використовувати?
29.Як видалити елемент масиву та об’єкта?
30.Для чого призначений тип void?
31.Де і для чого використовують super()?
32.Для чого потрібен this і в яких випадках його використовувати?
33.Що таке NaN і як його використати?
34.Що таке NPM? Які аналоги ви знаєте?
35.В чому переваги і недоліки NPM проти Yarn/PNPM?
36.Які методи Promise API ви знаєте? Яка різниця між ними?
37.Наведіть структуру HTTP request/response.
38.Що таке new Set() і new Map()?
39.Що таке логічний оператор && та || і чим відрізняються ці оператори від логічного оператора «??».

Бази даних

40.Для чого потрібні бази даних у застосунках?
41.Що таке ORM і для чого її використовують?
42.Що таке міграція даних? Для чого вона потрібна?
43.Що таке транзакція?
44.Як оновити значення колонки в таблиці?
45.За допомогою чого можна відфільтрувати таблицю Users за параметром віку?

WEB

46.Що таке Cross-Origin Resource Sharing (CORS)? Де трапляється?
47.Як отримати помилку CORS у консолі розробника?
48.Назвіть основні HTTP-методи RESTful або CRUD застосунків.
49.Що таке DNS?

HTML + CSS

50.Які способи центрування елемента по горизонталі і вертикалі ви знаєте?
51.Як звернутися до всіх посилань, у яких в атрибуті в кінці посилання href є «.com»? Як приховати такі посилання?
52.Чи можна через HTML + CSS зробити фіксацію кліку? Наведіть приклад.
53.Що таке «схлопування»?
54.Якою буде відстань між цими двома елементами:

<div style=”display: block”>
  <div style=”margin-bottom: 25px”>AAA</div>
  <div style=”margin-top: 21px”>BBB</div>
</div>

Чи зміниться відповідь, якщо змінити display: block на display: flex?
55.Чому розробники рекомендують записувати під’єднання перед закриттям body? Що буде, якщо прописати JS-код в head?
56.Для чого використовують атрибут defer і async у тегу script?
57.Що таке атрибут tabindex? Де його використовують?

Практичні завдання

58.Наведіть приклад коду для визначення, чи в змінній myNumber число буде кратне 11 (true, якщо так; false, якщо ні)
59.Як скопіювати масив у нову змінну без прив’язки за ключем?
60.Що буде виведено в консоль?
const trees = ["xyz", "xxxx", "test", "ryan", "apple"];
delete trees[3];
console.log(trees.length);
console.log(trees[3]);
61.Вам дано: const source = [1, 2, 3, 5, 1, 5, 9, 1, 2, 8]. Створіть масив, в якому не буде дублікатів, і масив, в якому будуть тільки дані, які дублювалися.
62.Дано:
const obj = {
    name: "Vova",
    secondName: "Simba",
    age: 15,
    parents: {
        mother: {
            name: "Natali",
            secondName: "Simba",
            age: 38
        },
        father: {
            name: "Oleg",
            secondName: "Simba",
            age: 45,
            job: "driver"
        }
    }
};
Задача: методом деструктуризації оголосіть змінні motherName, motherSecondName, motherAge, motherJob, fatherInitials (об’єкт з ім’ям і прізвищем батька, без віку та посади). Якщо немає роботи (job), вкажіть значення ’unemployed’.
63.Чи є відмінність запису створення функцій? Якщо є, то яка?
function makeFunc() {}
let myFunc = function(); 
64.Що таке опціональний ланцюжок в JS (?.)
let array;
array?.slice(1,3)
if (array?.length) {
array.slice(1,3)
}
65.Напишіть асинхронний мапінг «.map()» об’єкта з використанням callback. Зверніть увагу на те, що функція callback асинхронна, asyncObjectMap має повернути об’єкт, а не promise.
function asyncObjectMap(obj, callback) {
    // код
}
await asyncObjectMap({ qwe: 123, fds: 32 }, async (x) => x * 2)
// => { qwe: 246, fds: 64 }

💡 Middle

Node.js

66.Назвіть переваги Node.js, якщо порівнювати з іншими технологіями для розробки серверних застосунків.
67.Для яких задач ви використали б кілька процесів/потоків (processes/threads)?
68.У чому полягає різниця паралельного та асинхронного програмування на прикладі серверних застосунків?
69.Які типи асинхронних операцій здатен виконувати Node.js?
70.Які модулі Node.js ви знаєте? Яке їхнє основне призначення?
71.Яка різниця між операційними помилками та помилками програміста?
72.Які сервіси можна використати для моніторингу і логування?
73.Що таке libuv? Назвіть його складові.
74.Які існують шаблони розподілених транзакцій?
75.Чи можливо програмно контролювати виділення і звільнення пам’яті в Node.js програмі?
76.Поясніть, що таке Garbage Collector.
77.Що означає «витік пам’яті» процеса? Як цьому запобігти?
78.Як налагодити heap out of memory?
79.Як налаштувати кешування?
80.Які є варіанти використання модулів child_process, worker_threads і cluster?
81.Яка різниця у використанні ES modules і CommonJS модулів?
82.Для чого і як використовують клас EventEmitter з базового модуля ’node:events’?
83.Скільки ядер процесора залучені при виконанні Node.js програми за замовчуванням?
84.Що таке middleware? Якщо ми пишемо свій middleware, чому саме там, чому не в коді сервісу?
85.Що таке EventEmitter в Node.js?
86.Яке призначення файлу package.json для Node.js проєктів?
87.Як можна за допомогою Node.js app прочитати файл з логами із файлової системи? Як прочитати файл, який займає понад 300 мегабайтів?
88.Поясніть цикл подій у Node.js.
89.Що таке і навіщо потрібен Thread Pool (Worker Pool)?
90.SIGTERM vs SIGINT: які їхні переваги та недоліки?
91.Що таке backpressure у контексті стримів? Як з цим боротись?
92.Для чого потрібні stream.PassThrough і pipe (pipeline)? Наведіть приклади використання.
93.Як використовувати події ’data’, ’end’, ’error’, ’finish’ у стримах Node.js?
94.Як обробити помилки при роботі зі стримами в Node.js?
95.Наведіть приклади роботи зі стримами різних типів.
96.Чи працювали ви з pino?

NestJS

97.Як описати приєднання до бази даних?
98.Як реалізувати свій декоратор валідації?

JavaScript

99.Чому в JavaScript не рекомендують робити довгих обчислень у runtime?
100.Чи гарантовано setTimeout викличе функцію через заданий час? Від чого це залежить?
101.Що таке Promises?
102.Яка різниця між Promise.allSettled, Promise.race і Promise.any?
103.Що таке callback у JavaScript?
104.Чи кращі Promises за callback підхід? Чому?
105.Що таке замикання/closure?
106.Поясніть переваги та недоліки використання «use strict».
107.Наведіть приклад блокування циклу подій.
108.Яка різниця між abstract і interface?
109.Що таке Web Workers? Для чого їх використовують?
110.Які особливості передачі даними між worker’ами та основним потоком?
111.Які обмеження накладаються на потік Web Workers?
112.Окрім використання оператора ‘return’, як ще можна повернути результат виконання з функції (процедури)?

Мікросервіси

113.Яка різниця між Monolith/SOA/Microservices?
114.Назвіть переваги і недоліки мікросервісної архітектури.
115.Як забезпечити стійкість і можливість масштабування мікросервісів?
116.Як відстежувати несправності?

Деплоймент і процес розробки

117.Що таке CI (безперервна інтеграція)?
118.Як використовують Docker?
119.У чому різниця між blue/green розгортанням і rolling розгортанням.

Networking, API

120.Як браузер дізнається, яку сторінку завантажити за адресою домену?
121.Яка різниця між HTTP і HTTPS?
122.Яким чином HTTPS робить вебзастосунок безпечнішим?
123.Що таке Socket? Яка різниця між Socket і long polling?
124.Який популярний архітектурний спосіб розробки API ви знаєте?
125.Яка різниця між GraphQL і REST?
126.Яким чином ви б спроєктували API для bulk delete?

System Design

127.Що таке теорема CAP?
128.Чим горизонтальне масштабування відрізняється від вертикального масштабування?
129.Що ви розумієте під балансуванням навантаження? Чому це важливо при проєктуванні системи?
130.Яка концепція sync/async зв’язку між сервісами в архітектурі мікросервісу?
131.Які ви знаєте популярні методології реалізації async-зв’язку між сервісами в архітектурі мікросервісу? Які є плюси та мінуси?

Безпека

132.Які типи чутливості вебзастосунків ви знаєте?
133.Як захиститися від XSS?
134.Як захистити cookie?
135.Що таке CORS?
136.Що таке Content Security Policy?

Тестування

137.Навіщо писати тести?
138.Чому юніти мають бути базою в піраміді тестування?
139.Для чого потрібне інтеграційне тестування?
140.Навіщо потрібне юніт-тестування?
141.Навіщо потрібне E2E-тестування?
142.Наведіть приклад поганих інтеграційних і юніт-тестів.
143.Яким чином ви б протестували складний запит до бази даних у класі репозиторію?
144.Які б типи/обсяг тестів ви обрали для абсолютно нової системи без будь-яких обмежень з боку замовника?

Бази даних

145.Що таке транзакції в базах даних? Для чого вони потрібні?
146.Які рівні ізоляції транзакцій бувають? Плюси і мінуси?
147.Що таке foreign key? Яку роль він виконує?
148.Що таке JOIN?
149.Чим LEFT відрізняється від INNER?
150.Які переваги бази даних SQL, якщо порівнювати з базою даних NoSQL?
151.Коли слід використовувати базу даних NoSQL замість реляційної бази даних?
152.Як індекс бази даних може підвищити продуктивність?
153.Які мінуси додавання індексів?
154.Які типи індексів існують і яка різниця між ними?
155.Що таке властивість ACID у базі даних?
156.Як створити index для бази даних, якщо вона реляційна?

Практичні завдання

157.Як би ви розробили застосунок для обміну повідомленнями на кшталт WhatsApp або Facebook Messenger? Програми для обміну повідомленнями в режимі реального часу є звичайним окремим продуктом чи вбудованою функцією великих систем?
158.Яким буде вихідний результат наведеного далі коду і чому? Поясніть, яким чином цей код виконується.

 console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
console.log('D');
159.Для чого використовувати такі методи:
  obj = Object.create(null);
і
  Object.defineProperty(obj, 'prop1', {
    enumerable: false,
    configurable: false,
    writable: false,
    value: 'some-value'
  });

💡 Middle/Senior

Запитання для системного програміста

160.Які ви знаєте проблеми, баги та вузькі місця у Node.js?
161. Які ви знаєте вбудовані засоби серіалізації у Node.js, аналогічні до JSON, але для бінарної серіалізації?
162.Чому Node.js не однопотоковий? Доведіть, що він ніколи не був однопотоковим?
163.Чим замінити deprecated: fs.exists?
164.Що таке back pressure для стримів? Що спричинила б його відсутність?
165.Що таке MessagePort і BroadcastChannel?
166.Чим відрізняються fs.stat, fs.fstat, fs.lstat?
167.Як пов’язані node:async_hooks і AsyncLocalStorage?
168.Чого не вистачає у ESM, що підтримується у CJS?
169.Як стежити за змінами файлів і директорій на диску? Які з цим можуть виникати проблеми?
170.Що можна робити за допомогою node:vm?
171.Як захистити SharedArrayBuffer від запису з різних worker_threads?
172.Доведіть, що будь-який модуль у Node.js при завантаженні огортається у функцію і створює замикання?
173.Де використовують патерн Revealing constructor (відкритий конструктор)?
174.Як зробити перевизначення write для екземпляру Writable без створення класу спадкоємця?
175.У чому причина повільності викликів з JavaScript коду до аддонів на C, C++ чи під’єднаних через N-API?
176.Навіщо потрібен WASI та які можливості він дає?
177.Для чого використовують new Error.captureStackTrace?
178.Які ви знаєте deprecated API та якою є стратегія їх виведення з використання?
179.Чому важливо виконувати правило eslint: consistent-return з огляду на оптимізацію v8?

Запитання для прикладного програміста на Node.js

180.Чому потрібно додавати префікс node при завантаженні вбудованих модулів?
181.Що можна зробити за допомогою for await з request: IncomingMessage?
182.Як скопіювати теку з вкладеними файлами та іншими теками за допомогою node:fs?
183.Навіщо використовують AbortController? В яких API він підтримується?
184.Чим сучасним замінити node:domain API?
185.Яке API реалізує nodejs/undici?
186.Коли ми можемо використовувати синхронні версії операцій з файлами з node:fs замість асинхронних? На що звертати увагу, ухвалюючи таке рішення?
187.Наведіть найкращі практики для обробки помилок в асинхронному коді.
188.Як у проєктах на Node.js можуть з’явитися вразливості з (на вибір): XSS, Path traversal, SQLI, CSRF? Як від них захищатися?
189.Як можливі race conditions при асинхронному програмуванні?
190.Які є плюси та мінуси розділення коду на .js та окремо тайпінги .d.ts?
191.Наведіть кілька типових патернів проєктування з GoF і приклади їхнього використання у Node.js.
192.Який паттерн з GoF реалізує EventEmitter?
193.У чому полягає проблема товстих контролерів?
194.Наведіть приклади протікання абстракцій у типових системах на базі Node.js.
195.Як можна створити singleton за допомогою системи модульності у Node.js?
196.Наведіть приклад патерну adapter з вбудованих бібліотек.
197.Для чого нам потрібні такі поля Error: error.cause, error.code, error.message, error.stack?

💡 Senior

Node.js

198.Які найбільші проблеми платформи Node.js?
199.Скільки потоків Node.js використовує для роботи? Яким чином можна регулювати цю кількість?
200.Чи є в Node.js можливість виконувати скрипти, написані іншими мовами?
201.Чи є різниця у виконанні microtasks/macrotasks залежно від версій Node.js?
202.Як працювати із вбудованими Node.js функціями, реалізованими через callback інтерфейс в async/await стилі?
203.У чому полягає різниця між require/module.exports і ES6-модулями?
204.З яких стадій складається цикл event loop в libuv?
205.Яким чином бібліотека libuv досягає неблокуючого вводу і виводу?
206.Що таке гарантії доставки повідомлень та якими вони бувають?
207.У яких випадках ви застосували б асинхронний зв’язок між двома системами?
208.Чи можна замінити в V8 в Node.js?
209.Як налаштувати логування і моніторинг? Які найкращі практики ви знаєте?
210.Як би ви використали стрими для покращення продуктивності вебзастосунку?

Архітектура

211.Які є способи масштабувати Node.js сервер?
212. Які є переваги кластеризації Node.js застосунку? Які проблеми можуть виникнути?
213.У чому основна різниця чи схожість у роботі вебсерверів на Node.js або, наприклад, на Apache (PHP)?
214.Що таке методологія Twelve-Factor App?
215.Які показники моніторингу найважливіші?
216.Опишіть дизайн-паттерн SAGA. Яка різниця між транзакцією та операцією компенсації в SAGA, в SOA?
217.Що таке авторизація та аутентифікація?
218.Express vs Nest.js: які переваги і недоліки кожного фреймворку? Коли який доцільніше використовувати?
219.Що таке CLS і де варто його використовувати?
220.Що таке graceful shutdown? Як його імплементувати?
221.Наведіть приклади імплементації GoF патернів у Node.js і фреймворках.
222.Порівняйте MessageQ, RabbitMQ і Kafka.
223.Які проблеми розв’язує serverless?

JavaScript

224.З якою швидкістю витягуватимуться дані за ключем зі звичайного JavaScript об’єкта? Поясніть, що це за структура даних і як вона працює?
225.Чим JS відрізняється від багатопотокових мов?
226.Що таке функції вищого порядку?
227.Назвіть об’єкти першого класу.
228.Як зрозуміти, чи є у вашому коді/застосунку витоки пам’яті (memory leaks)?
229.Як працювати з асинхронною відповіддю?
230.Як можна отримати інкапсуляцію всередині класу без використання Typescript?

Мікросервіси

231.Розкажіть про ваш досвід роботи з мікросервісами в Node.js. Як ви забезпечували комунікацію між різними сервісами?
232.Як ви працювали з міграцією та покращенням сервісів в архітектурі мікросервісів?
233.Як би ви підходили до тестування та дебагу застосунку з мікросервісною архітектурою у Node.js?
234.Як би ви впоралися зі збоями в розподіленій системі (Failed message processing, dead letter queue)?
235.Які патерни для побудови мікросервісної архітектури ви використовували?
236.Як працює gateway?
237.Що таке CAP теорема?
238.Що краще: окремі бази даних для окремих мікросервісів чи одна база даних для всіх мікросервісів? Чому?

Бази даних

239.Які бувають рівні ізоляції транзакцій та чим вони відрізняються?
240.Навіщо існують рівні ізоляції транзакції? Наведіть приклади.
241.Що таке аномалії транзакцій (dirty read, dirty write, read skew, phantom read, lost update)?
242.У чому різниця нормалізованих і ненормалізованих даних? Наведіть приклад, коли які краще використовувати.
243.У чому різниця між оптимістичним та песимістичним блокуванням?
244.Навіщо потрібні індекси пошуку? Які мінуси в індексів?
245.Що таке race condition? Можете навести приклад?
246.Що таке реплікація? Навіщо вона потрібна?
247.Яка різниця між графом і деревом?
248.Чи доводилось вам робити оптимізацію перформансу за допомогою структур даних?
249.Наведіть плюси та мінуси Shared DB.
250.Що таке foreign keys і constraints у SQL базах даних?
251.Що таке масштабування баз даних? Як це робити?
252.Що таке шардинг?
253.Що таке concurrent locking в базі даних?
254.Чому властивості ACID важливі для SQL баз даних?
255.Що таке eventual consistency? Які ще бувають типи узгодженості?


📝 Дякуємо за запитання і технічну рецензію Олександру Русанову (Node.js Team Lead в AgileEngine), Олександру Зіневичу (Engineering Director, Avenga), Роману Погодичу (Senior Software Engineer, SoftServe), а також Олексію Новохацькому (Software Engineer, Co-Founder of Purport), Тимуру Шемсединову (архітектор технологічного стеку Metarhia, CTO Metatech, QOTEQ), Миколі Максиміву (Lead JS Engineer/ Head of Web Center of Excellence в Intellias), Павлу Воронцову (Back-end Lead в Uptech), Юрію Нікітському (Senior Software Engineer, Avenga), Емілю Зейналову (Technical Lead, Node.js в ZONE3000), Андрію Панчію (Middle Full Stack Developer, Chromane), Максиму Колеснику (Middle Node.js Back-end Developer, SKELAR), Дмитру Дяченку (Middle Full Stack Developer, Quantum Projects).

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось28
До обраногоВ обраному35
LinkedIn



31 коментар

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Список питаннь класний.

А незадоволені...
то як з тестами IQ — скільки з них не глузують, але досліджень повно про — кореляцію IQ балів і різноманітного успіху, для якого треба думати головою.

Хоч багато хто каже про «задротські питання», але це на справді актуальні питання. Я як людина яка нещодавно шукала нову компанія з тим стикнулуся.

Навіть може прилетіти питання з розряду «чи використовую libuv тред процессора, чи жорсткого диску»

сам не nodeJS’ер, питання глянув по діагоналі (перші 7-10 в кожному блоці), і виглядають більшість адекватними (окрім задротських на знання «keyword» в мові/фреймворку, типу

Що таке MessagePort і BroadcastChannel?

і задач «що виведе цей код?).
сам схожі задаю на співбесідах. дозволяє знаходити людей, яким цікаве software engineering, які цікавляться суттю, а не задрочують top10 keyword’ів по кожному блоку. який сенс заботанити «що таке асинхронність?», не знаючи коли її використовувати? який сенс знати «що таке ORM?», не знаючи коли воно потрібно, коли можна без нього, а коли треба без нього?
закодити добре описану задачу з першого разу більшість зможе (рахуй реалізувати описаний алгоритм). закодити слабо описану задачу з першого разу вже менше зможе (рахуй самому підставити в пусті місця правильний алгоритм/інструмент/підхід, зекономити час іншої людини на опис кожної задачі). не завжди є час і сили описувати задачу так, щоб дитина її вирішила. плюс не завжди є всі вводні, і часто треба щоб людина сама спробувала пару варіантів і обрала найкращий

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

Можете поділитись власним списком позязя? цікаво було би подивитись )

Як стежити за змінами файлів і директорій на диску? Які з цим можуть виникати проблеми?

якщо це про fsevents, то це скоріше ос питання 🤔 (кількість fs watchers обмежена на процес / сесію здається)

Досить цікаво, є місця над якими варто замислитись, дякую.

Багато каверзних питань щоб завалити кандидата, які не потрібні в роботі на 99% (а якщо знадобляться то гугляться) , для Українського згасаючого ринку це те що треба.
Я мідл+(працюю зараз на рівні з сінйорами) нодер але не знаю відповіді на більшість питань — успіхів.

Для підготовки до співбесіди може бути корисним. Але очікую, що HR почнуть використовувати їх))

Таким чином почнуть відшивати толкових кандидатів, а хороший програміст працювати за безцінь всеодно не піде.

Це бізнес, вони навіть можуть платити жінкам х2, чи джунам більше за сеньйорів. Їхні гроші.

Нуууу, ума нема щитай каліка, кажуть у нас)))
Можуть ще й не таке, але чомусь не роблять)

Раніше без диплома на роботу не брали, або без російської мови, і попробуй було кому, щось докажи. Враховуючи, що hr часто не дуже розумні (дуже розумні напевно вже програмують), скоро цей список стане нормою для джунів))

такой сейчас рынок... рынок работадателя и он диктует требоания и условия, тоже самое могу сказать про вопросы и задачи с собеседований по Реакту и Ангуляру. >90% вопросов не имеют практической\прикладной полезности, но если не знаешь на них ответов, знач ты не разработчик

Досить складні запитання.

Чому Node.js не однопотоковий? Доведіть, що він ніколи не був однопотоковим?

— завжди думав, що він однопотоковий, Гугл теж каже, що він однопотоковий. Довгий час програмував на Node.js, без підготовки дам відповідь на менш ніж 40% запитань. Цікаво з точки зору експерименту, на скільки запитань, без підготовки, без гуглігу, самі автори цих тестів, можуть дати відповідь? Просто цифра.

Досить складні запитання.

Банальне. Мабуть на кожні 3-й співбесіді чув питання про тред пул. Потоки і взагалі скейлінг з heavy computation ж топ холіварна тема для ноди, де можна залипнути на пів години. Куди гірше як питають якийсь там метод 100500 фреймворка, який там з них діпрікейтед в якій версії.

Мабуть на кожні 3-й співбесіді чув питання про тред пул

Это касательно этих Worker Threads, Web Worker — вот это все или о чем?

Worker Threads, Web Worker

Ну це користувацькі API для потоків який входить в загальну тему, а той тредпул це внутрішній неявний пул потоків який нода через libuv використовує під капотом для запуску важких чи блокуючих API типу реcолву DNS чи криптографії, яке для користувача потім завернуте в асинхронне нодовське API
www.youtube.com/watch?v=I1sqnbJ1Fno

По видео не совсем понятно, с чего он решил что там какой-то Thread Pool.
В видео он помоему просто говорит, что он там есть в libuv мамой клянусь.
Или я не так смотрю его.

Сам його не дивився, але прокрутив і там він явно же показує на тесті функції криптографії, що при декількох одночасних асинхронних викликах функції pbkdf2 загальний час їх виконання майже не збільшується, бо виконання натівного коду розкидається по внутрішніх потоках (по дефолту 4)
nodejs.org/...​i_uv_threadpool_size_size
dev.to/...​th-libuv-thread-pool-5h10

Купа якихось задротських питань типу

Яке API реалізує nodejs/undici?
З якою швидкістю витягуватимуться дані за ключем зі звичайного JavaScript об’єкта?

Швидкість — це time complexity мається на увазі?

Як працює getway?

Напевно мається на увазі gateway

Gateway — ага, дякую, це ми прокліпали. Щодо швидкості попрошу рецензентів зазирнути в коментарі.

> Is it a fair assumption that in v8 implementation retrieval / lookup is O(1)?
> Yes. V8 uses a variant of hash tables that generally have O(1) complexity for these operations.

Дивно, бо словники стають повільними при збільшенні розміру.

Зупустив тести, стають трохи повільнішими на записі, при читанні чистий O(1).

А если плохой хеш алгоритм? Который выдает всегда 1 например?

я про термін питав :-) це time complexity а не «швидкість»

Підписатись на коментарі