📘 Основи мови
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 розбираються не тільки ці теми, а й реальні задачі — після нього відповідати на такі питання стане природно, а не по зубрінню.