Подготовка к JS-интервью
Топовые вопросы для JavaScript-интервью — от джуниора до сеньора.
Переменные и типы
- В чём разница между
var,letиconst? - Какие примитивные типы есть в JavaScript?
- Что такое приведение типов (type coercion)? Приведи примеры.
- Что такое falsy-значения?
- Что такое
NaN? Как его проверить?
Область видимости и замыкания
- Что такое область видимости? Какие типы есть в JS?
- Что такое hoisting (поднятие)?
- Что такое замыкание? Практический пример.
- Что такое Temporal Dead Zone?
Функции
- Разница между объявлением и выражением функции?
- Что такое функции высшего порядка?
- Что такое каррирование?
- Что такое IIFE?
- Разница между
call,applyиbind?
ООП и прототипы
- Как работает прототипное наследование?
- Что такое
this? Как меняется контекст? - Разница между
classи прототипным наследованием?
Асинхронный JavaScript
- Как работает event loop?
- Что такое микрозадачи и макрозадачи?
- Что такое Promise? Состояния?
- Разница между
async/awaitи Promises? - Что такое
Promise.allvsPromise.allSettled? - Что такое генераторы?
Современный JavaScript
- Что такое деструктуризация?
- Разница между rest и spread?
- Что такое WeakMap и WeakSet?
- Разница между
==и===? - Как работает
Symbol?
Производительность и память
- Как работает сборка мусора (garbage collection) в JavaScript?
- Что такое движок V8?
- Что такое утечка памяти? Как её предотвратить?
Безопасность
- Что такое XSS? Как предотвратить?
- Что такое CORS? Как работает?
- Что такое CSRF?
Примеры ответов
Что такое замыкание?
// Замыкание — функция, которая помнит переменные из внешней
// области видимости даже после возврата внешней функции.
function makeAdder(x) {
return function(y) {
return x + y // 'x' захвачен в замыкании
}
}
const add5 = makeAdder(5)
add5(3) // 8
add5(10) // 15
Как работает event loop?
JavaScript однопоточен. Event loop позволяет неблокирующие операции через передачу работы Web API, затем колбэки ставятся в очередь. Микрозадачи (Promises) обрабатываются перед макрозадачами (setTimeout).