8 питань
Питання на співбесіді з JavaScript
Питання рівня Junior
1. Чим відрізняються
var,letіconst?Відповідь
varмає функціональну область видимості, аletіconstблокову. Зміннуvarможна оголосити повторно,letіconstу тій самій області ні.constне можна переприсвоїти, але вміст об'єкта чи масиву в ній змінювати можна. У сучасному коді за замовчуванням берутьconst, аletлише коли значення змінюється.Додаткове питання: Що таке тимчасова мертва зона (TDZ)?
2. Що таке hoisting (підняття) у JavaScript?
Відповідь
Під час створення області видимості рушій реєструє оголошення до виконання коду. Оголошення функцій піднімаються повністю, тому їх можна викликати раніше за рядок оголошення. Змінна
varпіднімається зі значеннямundefined.letіconstтеж реєструються, але до рядка оголошення перебувають у TDZ, і звернення до них кидаєReferenceError.Додаткове питання: Чи піднімається function expression, присвоєний у
const?3. У чому різниця між
==і===?Відповідь
===порівнює без приведення типів: значення мають бути одного типу і рівні.==спершу приводить операнди до спільного типу, тому0 == ""іnull == undefinedдаютьtrue. Через неочевидні правила приведення майже завжди використовують===. Виняток, який іноді лишають навмисно:x == nullперевіряє одразуnullіundefined.Додаткове питання: Чому
NaN === NaNдаєfalseі як перевірити значення наNaN?4. Що таке замикання (closure)? Наведіть приклад використання.
Відповідь
Замикання це функція разом із лексичним оточенням, у якому її створили. Вона має доступ до змінних зовнішньої функції навіть після того, як та завершилась. Так роблять приватний стан, наприклад лічильник, який повертає функцію
increment. Також на замиканнях побудовані колбеки, фабрики функцій і мемоізація.Додаткове питання: Що виведе цикл
for (var i = 0; i < 3; i++) setTimeout(() => console.log(i))і як це виправити?5. Чим поверхнева копія об'єкта відрізняється від глибокої?
Відповідь
Поверхнева копія створює новий об'єкт верхнього рівня, але вкладені об'єкти лишаються спільними посиланнями. Її роблять через spread
{ ...obj }абоObject.assign. Глибока копія рекурсивно копіює всі рівні, тому зміни у вкладених даних не впливають на оригінал. Для неї є вбудованийstructuredClone, аJSON.parse(JSON.stringify(obj))втрачає функції,undefinedі дати.Додаткове питання: Що
structuredCloneне вміє копіювати?
Питання рівня Middle
1. Як працює event loop? Чим мікрозадачі відрізняються від макрозадач?
Відповідь
JavaScript виконує код в одному потоці через стек викликів, а асинхронні колбеки чекають у чергах. Після кожної макрозадачі (скрипт,
setTimeout, подія) event loop повністю спорожнює чергу мікрозадач, лише потім бере наступну макрозадачу. Мікрозадачі це колбекиPromise.then,awaitіqueueMicrotask. ТомуPromise.resolve().then(...)спрацює раніше заsetTimeout(..., 0).Додаткове питання: Що станеться, якщо мікрозадача постійно додає нову мікрозадачу?
2. Від чого залежить значення
thisу функції?Відповідь
У звичайній функції
thisвизначається способом виклику: дляobj.method()цеobj, для простого викликуundefinedу strict mode або глобальний об'єкт без нього.call,applyіbindзадаютьthisявно, аnewприв'язує його до нового об'єкта. Стрілкова функція власногоthisне має і бере його з зовнішньої області. Тому метод, переданий як колбек, часто втрачає контекст.Додаткове питання: Як зберегти
this, коли передаєш метод класу вaddEventListener?3. Як співвідносяться проміси та
async/await? Як обробляти помилки й паралельні запити?Відповідь
async/awaitце синтаксис поверх промісів:asyncфункція завжди повертає проміс, аawaitчекає його результату без вкладенихthen. Помилки ловлять черезtry/catchнавколоawaitабо.catchу ланцюжку. Послідовніawaitвиконуються по черзі, тому незалежні запити запускають разом черезPromise.all. Якщо потрібні результати навіть після помилок, берутьPromise.allSettled.Додаткове питання: Чим
Promise.raceвідрізняється відPromise.any?
Тренуй ці питання
Вчи картки, відповідай текстом або голосом і отримуй оцінку AI. Потрібен вхід в акаунт.
Відповідай уголос і отримуй оцінку
Тут питання з еталонними відповідями. У застосунку ShortLesson ти відповідаєш сам, текстом або голосом, а AI оцінює відповідь за критеріями і ставить додаткове питання, як на справжній співбесіді.
Застосунок незабаром з'явиться в магазинах.