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