Питання на співбесіді з JavaScript (Senior) з відповідями
75 запитань для співбесіди з теми JavaScript (Senior) - з правильними відповідями, поясненнями й посиланнями на документацію.
Пройти цей тест- 1.Як event loop обробляє задачі в браузері?
- 2.Що станеться зі сторінкою?
- 3.Чи виконується функція-виконавець
new Promise(executor)синхронно? - 4.Чому проміс нижче ніколи не відхилиться?
- 5.Як глобально відстежити необроблені відхилення промісів у браузері?
- 6.Що робить
for await...of? - 7.Для чого зручний async-генератор?
- 8.Для чого використовують
Proxy? - 9.Які умови гарантують, що об'єкт буде видалено збирачем сміття?
- 10.Який сценарій типово призводить до витоку пам'яті в SPA?
- 11.Чому з
WeakRefіFinalizationRegistryрадять бути обережними? - 12.Чого немає в коду всередині Web Worker?
- 13.Навіщо передавати
ArrayBufferворкеру як transferable:postMessage(buf, [buf])? - 14.Що вміє Service Worker?
- 15.Чим Server-Sent Events відрізняються від WebSocket?
- 16.Що обов'язково перевіряти в обробнику
messageпід час спілкування з iframe черезpostMessage? - 17.Як реалізувати патерн «спостерігач» засобами браузера без бібліотек?
- 18.Чим
ResizeObserverкращий за обробникwindow.resizeдля компонента? - 19.Що робить теговий шаблон?
- 20.У якому порядку
Object.keysповерне ключі{ b: 1, 2: 1, a: 1, 1: 1 }? - 21.Як глибоко заморозити об'єкт?
- 22.Як серіалізувати об'єкт із циклічними посиланнями в JSON?
- 23.Як обмежити кількість одночасних запитів, якщо треба завантажити 100 URL?
- 24.Що таке експоненційний backoff під час повторення запитів?
- 25.Чому в реалізації debounce важливо зберігати
thisі аргументи? - 26.Чому додавання властивостей об'єктам у різному порядку може сповільнити код у V8?
- 27.Як не блокувати інтерфейс під час обробки 100 000 елементів в основному потоці?
- 28.Чим
performance.now()кращий заDate.now()для вимірювання часу виконання? - 29.Що виведе
new Date(2025, 1, 1).getMonth()і який це місяць? - 30.Що станеться за
10n + 1? - 31.Чому
9007199254740993 === 9007199254740992повертаєtrue? - 32.Що таке ReDoS?
- 33.Чим небезпечна функція глибокого злиття об'єктів із користувацького JSON?
- 34.Чому
evalіnew Functionзазвичай забороняють політикою безпеки? - 35.Що може статися за циклічної залежності ES-модулів?
- 36.Як top-level
awaitу модулі впливає на модулі, що його імпортують? - 37.Що дає
Promise.withResolvers()(ES2024)? - 38.Що поверне
new Set([1, 2, 3]).intersection(new Set([2, 3, 4]))? - 39.Що робить
Object.groupBy(users, u => u.role)? - 40.Чим корисний
MutationObserver? - 41.Де зберігати великі структуровані дані на клієнті (наприклад, офлайн-кеш)?
- 42.Як синхронізувати дані між вкладками одного сайту?
- 43.Навіщо кешувати екземпляри
Intl.NumberFormat? - 44.Як правильно зібрати query-рядок з об'єкта параметрів?
- 45.Що поверне вираз?
- 46.Що поверне
[1, 2, 3, 4].findLast(n => n % 2 === 1)? - 47.Навіщо
Errorпередають опціюcause? - 48.Що таке Temporal Dead Zone для параметрів за замовчуванням?
- 49.Чим корисний
globalThis? - 50.Чому
async-функцію не можна передати як виконавець уnew Promise(async (resolve) => ...)? - 51.Як перервати
fetchчерез 5 секунд або коли користувач іде зі сторінки - що настане раніше? - 52.Що дають ітераторні помічники на кшталт
map.values().filter(...).take(3)? - 53.Яку проблему розв'язує
Promise.try(fn)? - 54.Що дає цей регулярний вираз?
- 55.З чим відхиляється
Promise.any, коли відхилено всі проміси? - 56.Що має зробити сторінка, щоб використовувати
SharedArrayBuffer? - 57.Коли доречний
requestIdleCallback? - 58.Чому збирач може не вирізати tree-shaking'ом невикористаний експорт бібліотеки?
- 59.Чому цей код може заморозити сторінку, хоч використовує проміси?
- 60.Що повертає
Object.is(-0, 0)і навіщо він потрібен? - 61.Чим керує
Symbol.toPrimitive? - 62.Чому дорівнює
[] + {}? - 63.Навіщо використовувати
Reflect.get(target, key, receiver)усередині пасткиgetуProxy? - 64.Чому планувальники (наприклад, у React) використовують
MessageChannel, а неsetTimeout(fn, 0)? - 65.Як nonce у CSP дозволяє конкретні інлайн-скрипти?
- 66.Що забезпечують Trusted Types?
- 67.Як
SameSite=Laxу сесійної cookie допомагає проти CSRF? - 68.Від чого захищає атрибут
integrityу<script>із CDN? - 69.Для чого використовують
new URL("./worker.js", import.meta.url)? - 70.Що дає змогу зробити
<script type="importmap">? - 71.Як правильно сортувати імена для конкретної мови?
- 72.Навіщо використовувати
Intl.PluralRulesдля повідомлень на кшталт «5 файлів»? - 73.Як надійно зберігати й передавати дати?
- 74.Що робить метод
toJSONв об'єкта? - 75.Чи стабільна
Array.prototype.sortу сучасних рушіях?