Підготовка до співбесіди

Питання на співбесіді JavaScript з відповідями

20 питань, які найчастіше ставлять junior frontend-розробнику. Відповіді — простою мовою, без зубріння формулювань з підручника.

❓ 20 питань 🎯 Рівень: junior 🔄 Оновлено: 2026

📘 Основи мови

1. У чому різниця між var, let і const?
var має function scope і може «витікати» з блоку, let і const — block scope, видимі тільки всередині свого блоку { }. let можна перепризначити, const — ні. Сьогодні var практично не використовують.
2. У чому різниця між == і ===?
== порівнює значення з приведенням типів ("5" == 5 → true), === порівнює без приведення, включно з типом ("5" === 5 → false). На практиці майже завжди використовують ===.
3. Чим відрізняється null від undefined?
undefined — значення за замовчуванням, коли змінній нічого не присвоєно. null — значення, яке розробник ставить навмисно, щоб явно сказати «тут порожньо».
4. Які типи даних є в JavaScript?
Примітиви: string, number, boolean, undefined, null, symbol, bigint. І один непримітивний тип — object (включно з масивами і функціями).
5. Що таке hoisting (спливання)?
Механізм, при якому оголошення змінних (var) і функцій піднімаються на початок області видимості ще до виконання коду. let і const теж піднімаються, але потрапляють у «temporal dead zone» — звернутися до них до оголошення не можна.
6. Що таке замикання (closure)?
Функція, яка «запам'ятовує» змінні з зовнішньої функції, навіть після того як та вже завершила виконання. Класичний приклад — функція-лічильник, яка зберігає свій стан між викликами.

🗂️ Масиви і об'єкти

7. Чим map відрізняється від forEach?
forEach просто проходить по масиву і нічого не повертає. map теж проходить по масиву, але повертає новий масив з результатом функції для кожного елемента.
8. Як перевірити, чи є змінна масивом?
За допомогою Array.isArray(value). Оператор typeof для масиву поверне "object", тому він для цього не підходить.
9. Як скопіювати об'єкт або масив?
Для поверхневої копії — spread-оператор: {...obj} або [...arr]. Для глибокої копії вкладених об'єктів часто використовують structuredClone(obj) або JSON.parse(JSON.stringify(obj)).
10. Як видалити елемент з масиву?
Через splice(index, 1) — змінює вихідний масив. Або через filter, якщо потрібен новий масив без мутації вихідного: arr.filter(item => item !== value).
11. Що робить метод reduce?
Згортає масив в одне значення, проходячи по кожному елементу і накопичуючи результат. Часто використовується для підсумовування: arr.reduce((sum, n) => sum + n, 0).

🖥️ DOM і події

12. Як обрати елемент на сторінці?
Найчастіше — document.querySelector(".class") для одного елемента і document.querySelectorAll(".class") для кількох. Також є getElementById.
13. У чому різниця між addEventListener і onclick?
onclick дозволяє призначити тільки один обробник — новий замінить попередній. addEventListener дозволяє додати скільки завгодно обробників на одну подію і гнучкіше їх прибирати.
14. Що таке спливання подій (event bubbling)?
Коли подія відбувається на вкладеному елементі, вона потім «піднімається» вгору по всіх батьківських елементах. Це дозволяє використовувати делегування подій — вішати один обробник на батька замість багатьох на дітей.
15. Як зупинити дію за замовчуванням у події?
Викликати event.preventDefault() всередині обробника — наприклад, щоб форма не перезавантажувала сторінку при відправці.

⏳ Асинхронність

16. Що таке Promise?
Об'єкт, який представляє результат асинхронної операції — він може бути в одному з трьох станів: pending (очікування), fulfilled (успіх) або rejected (помилка).
17. Як працюють async/await?
Це «синтаксичний цукор» над промісами: функція позначається як async, а всередині неї await «чекає» результат промісу, не блокуючи решту коду сторінки. Код виглядає і читається як синхронний.
18. Чим setTimeout відрізняється від setInterval?
setTimeout виконує код один раз через задану затримку. setInterval повторює виконання із зазначеним інтервалом, поки його не зупинять через clearInterval.

💬 Загальні питання

19. Що таке this у JavaScript?
Посилання на об'єкт, у контексті якого виконується функція. Значення this залежить від того, як функцію було викликано. У стрілкових функцій власного this немає — вони беруть його з навколишнього коду.
20. Як ти зазвичай шукаєш причину бага в коді?
Хороша відповідь: читаю повідомлення про помилку в консолі, ставлю console.log у підозрілих місцях або використовую breakpoints у DevTools, звужую проблему до конкретного рядка, перевіряю значення змінних на кожному кроці.

Що далі

Готуєшся до своєї першої співбесіди?

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

📞 ✈️