P
prepair.app
Пройти інтерв'ю →
EnglishУкраїнськаРусский
🟨

Junior JavaScriptПитання на співбесіді JavaScript

Junior · без досвіду / до 1 року

Співбесіда з JavaScript крутиться навколо невеликого набору речей, які мова робить інакше за всі інші: замикання, `this`, прототипи та event loop. Розберіться з ними — і більшість решти питань закриються самі. Нижче ті, що ставлять найчастіше, кожне з еталонною відповіддю. Junior: базова теорія, визначення та прості практичні кейси.

Теми для підготовки

Типи і приведення
Замикання та області видимості
`this` і прототипи
Event loop і асинхронність
Проміси та async/await
DOM, події та браузер

7 питань рівня Junior з відповідями

1

Чим примітиви відрізняються від обʼєктів?

Відповідь

Примітиви — рядки, числа, булеві, null, undefined, символи, bigint — копіюються за значенням. Обʼєкти, включно з масивами і функціями, копіюються за посиланням, тому дві змінні можуть вказувати на одне й те саме, і зміна через одну видна через іншу. Майже будь-який баг «чому змінився мій масив» — про це.

2

Чим різняться `var`, `let` і `const`?

Відповідь

var обмежений функцією і може бути переоголошений; let і const обмежені блоком. const означає, що привʼязку не можна перепризначити, — обʼєкт, на який вона вказує, змінювати досі можна. За замовчуванням беруть const, а let — коли справді перепризначують.

3

Чим `null` відрізняється від `undefined`?

Відповідь

undefined означає, що значення не присвоювали: оголошена змінна, пропущений аргумент, відсутня властивість. null — це явне «нічого», присвоєне навмисно. typeof undefined дає 'undefined', typeof null дає 'object', а null == undefined істинне, тоді як null === undefined хибне.

4

Як перевірити, що значення — масив, і що воно `NaN`?

Відповідь

Масив — через Array.isArray(x), бо typeof для масиву і звичайного обʼєкта однаково повертає 'object'. Для NaNNumber.isNaN(x): старий глобальний isNaN спершу приводить типи, тому isNaN('hello') істинне, хоча рядок не число. NaN — єдине значення, не рівне самому собі, на чому перевірка всередині й побудована.

5

Що таке hoisting?

Відповідь

Оголошення обробляються до виконання коду. Оголошення function виринає цілком, і функцію можна викликати вище її рядка; var виринає як undefined; let і const виринають, але недоступні до оголошення — тимчасова мертва зона, — тому раннє звернення кидає ReferenceError.

6

Чим різняться `map`, `filter`, `reduce` і `forEach`?

Відповідь

map повертає новий масив тієї самої довжини з перетвореним кожним елементом. filter повертає коротший масив із тих, що пройшли перевірку. reduce згортає масив в одне значення. forEach не повертає нічого й існує заради побічних ефектів: map, результат якого ігнорують, будує масив намарно.

7

Що таке спливання подій і як його зупинити?

Відповідь

Подія спрацьовує на цілі й далі йде вгору предками — на цьому й побудоване делегування: один обробник на список замість обробника на кожен елемент. event.stopPropagation() зупиняє цей рух, а event.preventDefault() скасовує дію браузера за замовчуванням — надсилання форми, перехід за посиланням. Це різні речі, і їх постійно плутають.

🦎

Прочитати відповіді недостатньо

На співбесіді ти говориш вголос під тиском. Кем поставить ті самі питання, оцінить кожну відповідь і покаже, що саме підтягнути.

Пройти інтерв'ю Junior JavaScript →
Безкоштовно · 3 інтерв'ю на місяць

Інші рівні — JavaScript

Middle JavaScriptSenior JavaScriptУсі питання JavaScript

Інші спеціалізації

🔍Junior QA Manual🤖Junior QA AutomationJunior Java Backend🐍Junior Python Backend🐘Junior PHP Backend🦫Junior Go Backend🟢Junior Node.js Backend💎Junior Ruby on Rails🔷Junior C++⚛️Junior React Frontend