Junior JavaScript
Экспресс-шпаргалка 20/20
varимеет функциональную область видимости и hoisting сundefined.letиconstимеют блочную область видимости и TDZ.constнельзя переназначить.==сравнивает с приведением типов,===сравнивает без приведения. В прод-коде почти всегда используют===.undefinedобычно означает "значение не задано",null— "значение задано как пустое намеренно".- Примитивы копируются по значению, объекты/массивы/функции копируются по ссылке.
- Hoisting — поднятие объявлений вверх области видимости. TDZ — период до инициализации
let/const, когда доступ к переменной запрещен. thisопределяется местом вызова функции, а не местом ее объявления.- Замыкание — функция, которая сохраняет доступ к переменным внешней функции после ее завершения.
- Если свойства нет у объекта, движок ищет его в прототипе, затем в прототипе прототипа и так далее до
null. - Event Loop координирует выполнение call stack и очередей задач, чтобы однопоточный JS мог обрабатывать асинхронные операции.
async/await— синтаксис поверх Promise, который делает асинхронный код более читаемым.- Microtasks выполняются сразу после текущего синхронного кода и до следующей macrotask.
mapпреобразует каждый элемент,filterотбирает элементы по условию,reduceсводит массив к одному значению.- Debounce откладывает вызов до паузы в событиях, throttle ограничивает частоту вызова фиксированным интервалом.
- Shallow copy копирует только первый уровень, deep copy — все вложенные уровни.
...в выражении — spread (раскрывает), в параметрах/деструктуризации — rest (собирает остаток).- Деструктуризация позволяет извлекать значения из объектов и массивов в переменные.
- Иммутабельность делает изменения состояния предсказуемыми, упрощает отладку и помогает оптимизациям рендера.
- Cookie отправляются на сервер с запросом,
localStorageживет между сессиями,sessionStorageочищается при закрытии вкладки. - CORS — механизм браузера, который регулирует междоменные запросы через специальные HTTP-заголовки.
- Обычный
scriptблокирует парсинг HTML.asyncзагружается параллельно и выполняется сразу после загрузки.deferзагружается параллельно и выполняется после парсинга DOM в порядке подключения.
1. В чем разница между var, let и const?
Теги: javascript, variables, scope, hoisting
Сложность: Junior
Короткий ответ
var имеет функциональную область видимости и hoisting с undefined. let и const имеют блочную область видимости и TDZ. const нельзя переназначить.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Проверяю на двух контрпримерах (где работает/где ломается) и закрепляю мини-задачей в песочнице.
Мини-пример
var a = 1;
let b = 2;
const c = { value: 3 };
c.value = 4;
Углубление (2-3 минуты)
- Свяжите тему "В чем разница между
var,letиconst?" с одним production-сценарием и объясните, почему она влияет на результат. - Назовите признак, по которому поймете, что решение сработало в реальном проекте.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Путают терминологию и не фиксируют критерий проверки.
- Не проговаривают ограничения и edge-cases.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какой минимальный тест докажет корректность подхода?
- Как поведет себя решение на edge-case и почему?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Связанный вопрос из Банка вопросов для закрепления.
- Мини-код, который воспроизводит поведение и проверяется за 1-2 минуты.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
2. В чем разница между == и ===?
Теги: javascript, equality, type-coercion, operators
Сложность: Junior
Короткий ответ
== сравнивает с приведением типов, === сравнивает без приведения. В прод-коде почти всегда используют ===.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Собираю короткий воспроизводимый пример, прогоняю edge-case и объясняю результат без подсказок.
Мини-пример
0 == false; // true
0 === false; // false
Углубление (2-3 минуты)
- Свяжите тему "В чем разница между
==и===?" с одним production-сценарием и объясните, почему она влияет на результат. - Сравните минимум два подхода и объясните, почему выбираете один в заданных ограничениях.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Путают терминологию и не фиксируют критерий проверки.
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какой минимальный тест докажет корректность подхода?
- Где граница применимости этого решения?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Базовые определения темы и 2 контрпримера (где работает и где ломается).
- Связанный вопрос из Банка вопросов для закрепления.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
3. Чем null отличается от undefined?
Теги: javascript, null, undefined, types
Сложность: Junior
Короткий ответ
undefined обычно означает "значение не задано", null — "значение задано как пустое намеренно".
Что сказать на интервью (30-60 секунд)
- Где это применяется: В типизации контрактов между UI, API и бизнес-логикой, чтобы ловить ошибки до рантайма.
- Главный риск: Слабые контракты увеличивают runtime-ошибки и ломают интеграции между слоями.
- Как проверяете решение: Делаю ручную проверку сценария + мини-тест, чтобы подтвердить поведение в реальном коде.
Мини-пример
let a;
const obj = { v: null };
console.log(a, obj.missing, obj.v);
Углубление (2-3 минуты)
- Свяжите тему "Чем
nullотличается отundefined?" с одним production-сценарием и объясните, почему она влияет на результат. - Сравните compile-time и runtime валидацию в этом контексте.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не учитывают backward compatibility типов API.
- Надеются только на TypeScript без runtime-валидации входных данных.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Где здесь compile-time проверка достаточна, а где нужна runtime?
- Как будете мигрировать типы без поломки потребителей API?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Контракты DTO/API и runtime-валидацию.
Union/narrowing/genericsв контексте задачи.- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
4. Что такое примитивные и ссылочные типы?
Теги: javascript, primitives, references, mutation
Сложность: Junior
Короткий ответ
Примитивы копируются по значению, объекты/массивы/функции копируются по ссылке.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Собираю короткий воспроизводимый пример, прогоняю edge-case и объясняю результат без подсказок.
Мини-пример
const a = { x: 1 };
const b = a;
b.x = 2;
console.log(a.x); // 2
Углубление (2-3 минуты)
- Свяжите тему "Что такое примитивные и ссылочные типы?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разложите ответ на «механика -> применение -> ограничение», чтобы показать не только теорию, но и практику.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не проговаривают ограничения и edge-cases.
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведет себя решение на edge-case и почему?
- Какой минимальный тест докажет корректность подхода?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Мини-код, который воспроизводит поведение и проверяется за 1-2 минуты.
- Базовые определения темы и 2 контрпримера (где работает и где ломается).
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
5. Что такое hoisting и TDZ?
Теги: javascript, hoisting, tdz, execution-context
Сложность: Junior
Короткий ответ
Hoisting — поднятие объявлений вверх области видимости. TDZ — период до инициализации let/const, когда доступ к переменной запрещен.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Проверяю на двух контрпримерах (где работает/где ломается) и закрепляю мини-задачей в песочнице.
Мини-пример
console.log(x); // undefined
var x = 1;
// console.log(y); // ReferenceError
let y = 2;
Углубление (2-3 минуты)
- Свяжите тему "Что такое hoisting и TDZ?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разложите ответ на «механика -> применение -> ограничение», чтобы показать не только теорию, но и практику.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не проговаривают ограничения и edge-cases.
- Путают терминологию и не фиксируют критерий проверки.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведет себя решение на edge-case и почему?
- Где граница применимости этого решения?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Мини-код, который воспроизводит поведение и проверяется за 1-2 минуты.
- Базовые определения темы и 2 контрпримера (где работает и где ломается).
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
6. Как работает this в JavaScript?
Теги: javascript, this, bind, call-apply
Сложность: Junior
Короткий ответ
this определяется местом вызова функции, а не местом ее объявления.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Собираю короткий воспроизводимый пример, прогоняю edge-case и объясняю результат без подсказок.
Мини-пример
const user = { name: 'Ann', hi() { return this.name; } };
const fn = user.hi;
fn(); // undefined (strict mode)
Углубление (2-3 минуты)
- Свяжите тему "Как работает
thisв JavaScript?" с одним production-сценарием и объясните, почему она влияет на результат. - Разложите ответ на «механика -> применение -> ограничение», чтобы показать не только теорию, но и практику.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают терминологию и не фиксируют критерий проверки.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Где граница применимости этого решения?
- Как поведет себя решение на edge-case и почему?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Мини-код, который воспроизводит поведение и проверяется за 1-2 минуты.
- Связанный вопрос из Банка вопросов для закрепления.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
7. Что такое замыкание?
Теги: javascript, closures, lexical-scope, memory
Сложность: Junior
Короткий ответ
Замыкание — функция, которая сохраняет доступ к переменным внешней функции после ее завершения.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Делаю ручную проверку сценария + мини-тест, чтобы подтвердить поведение в реальном коде.
Мини-пример
function counter() {
let n = 0;
return () => ++n;
}
Углубление (2-3 минуты)
- Свяжите тему "Что такое замыкание?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разложите ответ на «механика -> применение -> ограничение», чтобы показать не только теорию, но и практику.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают терминологию и не фиксируют критерий проверки.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Где граница применимости этого решения?
- Какой минимальный тест докажет корректность подхода?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Базовые определения темы и 2 контрпримера (где работает и где ломается).
- Связанный вопрос из Банка вопросов для закрепления.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
8. Что такое prototype chain?
Теги: javascript, prototypes, inheritance, objects
Сложность: Junior
Короткий ответ
Если свойства нет у объекта, движок ищет его в прототипе, затем в прототипе прототипа и так далее до null.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Проверяю на двух контрпримерах (где работает/где ломается) и закрепляю мини-задачей в песочнице.
Мини-пример
const animal = { sound: '...' };
const dog = Object.create(animal);
console.log(dog.sound); // ...
Углубление (2-3 минуты)
- Свяжите тему "Что такое prototype chain?" с одним production-сценарием и объясните, почему она влияет на результат.
- Добавьте edge-case, где типы предотвращают регрессию.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Надеются только на TypeScript без runtime-валидации входных данных.
- Не учитывают backward compatibility типов API.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете мигрировать типы без поломки потребителей API?
- Какой контрпример сломает слабый типовой контракт?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
Union/narrowing/genericsв контексте задачи.- План миграции типов без breaking changes.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
9. Что такое Event Loop?
Теги: javascript, event-loop, async, tasks
Сложность: Junior
Короткий ответ
Event Loop координирует выполнение call stack и очередей задач, чтобы однопоточный JS мог обрабатывать асинхронные операции.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В асинхронных потоках: запросы, очереди задач и обработка действий без блокировок.
- Главный риск: Типовые последствия: race conditions, зависшие запросы, утечки состояния и нестабильные сценарии.
- Как проверяете решение: Проверяю на двух контрпримерах (где работает/где ломается) и закрепляю мини-задачей в песочнице.
Мини-пример
console.log(1);
setTimeout(() => console.log(2));
Promise.resolve().then(() => console.log(3));
console.log(4); // 1,4,3,2
Углубление (2-3 минуты)
- Свяжите тему "Что такое Event Loop?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как тема влияет на race conditions, отмену операций и устойчивость состояния.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Смешивают microtask/macrotask и делают неверные выводы о порядке выполнения.
- Не учитывают поведение при ошибках внешних сервисов.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Что изменится в поведении при таймауте внешнего сервиса?
- Где поставите retry, а где запретите его и почему?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Стратегии timeout, retry, cancellation и их ограничения.
- Порядок очередей/фаз выполнения и обработку ошибок.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
10. Разница между Promise и async/await?
Теги: javascript, promises, async-await, error-handling
Сложность: Junior
Короткий ответ
async/await — синтаксис поверх Promise, который делает асинхронный код более читаемым.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Делаю ручную проверку сценария + мини-тест, чтобы подтвердить поведение в реальном коде.
Мини-пример
async function load() {
try { return await fetch('/api'); }
catch (e) { console.error(e); }
}
Углубление (2-3 минуты)
- Свяжите тему "Разница между Promise и async/await?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разберите порядок выполнения шагов при нормальном сценарии и при ошибке/таймауте.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Смешивают microtask/macrotask и делают неверные выводы о порядке выполнения.
- Игнорируют отмену, таймауты и повторные запросы, из-за чего появляются race conditions.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как исключите race condition при параллельных запросах?
- Что изменится в поведении при таймауте внешнего сервиса?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Метрики latency/error-rate на целевом сценарии.
- Стратегии timeout, retry, cancellation и их ограничения.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
11. Разница microtask и macrotask?
Теги: javascript, microtask, macrotask, event-loop
Сложность: Junior
Короткий ответ
Microtasks выполняются сразу после текущего синхронного кода и до следующей macrotask.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В асинхронных потоках: запросы, очереди задач и обработка действий без блокировок.
- Главный риск: Типовые последствия: race conditions, зависшие запросы, утечки состояния и нестабильные сценарии.
- Как проверяете решение: Делаю ручную проверку сценария + мини-тест, чтобы подтвердить поведение в реальном коде.
Мини-пример
setTimeout(() => console.log('macro'));
Promise.resolve().then(() => console.log('micro'));
Углубление (2-3 минуты)
- Свяжите тему "Разница microtask и macrotask?" с одним production-сценарием и объясните, почему она влияет на результат.
- Обозначьте стратегию timeout/retry/cancel для production-потока.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Смешивают microtask/macrotask и делают неверные выводы о порядке выполнения.
- Игнорируют отмену, таймауты и повторные запросы, из-за чего появляются race conditions.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как исключите race condition при параллельных запросах?
- Что изменится в поведении при таймауте внешнего сервиса?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Метрики latency/error-rate на целевом сценарии.
- Порядок очередей/фаз выполнения и обработку ошибок.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
12. Для чего map, filter, reduce?
Теги: javascript, arrays, map-filter-reduce, functional-style
Сложность: Junior
Короткий ответ
map преобразует каждый элемент, filter отбирает элементы по условию, reduce сводит массив к одному значению.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Делаю ручную проверку сценария + мини-тест, чтобы подтвердить поведение в реальном коде.
Мини-пример
const arr = [1, 2, 3];
arr.map(x => x * 2); // [2,4,6]
arr.filter(x => x > 1); // [2,3]
arr.reduce((s, x) => s + x, 0); // 6
Углубление (2-3 минуты)
- Свяжите тему "Для чего
map,filter,reduce?" с одним production-сценарием и объясните, почему она влияет на результат. - Назовите признак, по которому поймете, что решение сработало в реальном проекте.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не проговаривают ограничения и edge-cases.
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какой минимальный тест докажет корректность подхода?
- Где граница применимости этого решения?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Базовые определения темы и 2 контрпримера (где работает и где ломается).
- Мини-код, который воспроизводит поведение и проверяется за 1-2 минуты.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
13. Что такое debounce и throttle?
Теги: javascript, debounce, throttle, performance
Сложность: Junior
Короткий ответ
Debounce откладывает вызов до паузы в событиях, throttle ограничивает частоту вызова фиксированным интервалом.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В производительности интерфейса: рендер, загрузка ассетов, отзывчивость и стабильность UX.
- Главный риск: Неправильная реализация дает лишние ререндеры, рост LCP/TTI и деградацию пользовательского пути.
- Как проверяете решение: Собираю короткий воспроизводимый пример, прогоняю edge-case и объясняю результат без подсказок.
Мини-пример
const onInput = debounce(search, 300);
const onScroll = throttle(trackScroll, 100);
Углубление (2-3 минуты)
- Свяжите тему "Что такое debounce и throttle?" с одним production-сценарием и объясните, почему она влияет на результат.
- Покажите, как изменение влияет на рендер и стоимость JavaScript.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не проверяют сценарий на медленных устройствах и сетях.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Что выберете: простоту кода или оптимизацию, и по какому критерию?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Границы
SSR/CSR/SSG/ISR(если применимо). - Критический путь рендера и метрики
LCP/INP/CLS. - Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
14. Разница shallow copy и deep copy?
Теги: javascript, shallow-copy, deep-copy, structuredclone
Сложность: Junior
Короткий ответ
Shallow copy копирует только первый уровень, deep copy — все вложенные уровни.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Проверяю на двух контрпримерах (где работает/где ломается) и закрепляю мини-задачей в песочнице.
Мини-пример
const a = { nested: { x: 1 } };
const b = { ...a };
b.nested.x = 2; // a.nested.x тоже станет 2
Углубление (2-3 минуты)
- Свяжите тему "Разница shallow copy и deep copy?" с одним production-сценарием и объясните, почему она влияет на результат.
- Сравните минимум два подхода и объясните, почему выбираете один в заданных ограничениях.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Путают терминологию и не фиксируют критерий проверки.
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Где граница применимости этого решения?
- Какой минимальный тест докажет корректность подхода?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Базовые определения темы и 2 контрпримера (где работает и где ломается).
- Связанный вопрос из Банка вопросов для закрепления.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
15. Что делают spread и rest операторы?
Теги: javascript, spread-rest, destructuring, functions
Сложность: Junior
Короткий ответ
... в выражении — spread (раскрывает), в параметрах/деструктуризации — rest (собирает остаток).
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Делаю ручную проверку сценария + мини-тест, чтобы подтвердить поведение в реальном коде.
Мини-пример
const arr = [1, 2];
const copy = [...arr];
function sum(...nums) { return nums.reduce((a, b) => a + b, 0); }
Углубление (2-3 минуты)
- Свяжите тему "Что делают spread и rest операторы?" с одним production-сценарием и объясните, почему она влияет на результат.
- Сравните минимум два подхода и объясните, почему выбираете один в заданных ограничениях.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Путают терминологию и не фиксируют критерий проверки.
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Где граница применимости этого решения?
- Как поведет себя решение на edge-case и почему?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Мини-код, который воспроизводит поведение и проверяется за 1-2 минуты.
- Связанный вопрос из Банка вопросов для закрепления.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
16. Что такое деструктуризация?
Теги: javascript, destructuring, defaults, optional-chaining
Сложность: Junior
Короткий ответ
Деструктуризация позволяет извлекать значения из объектов и массивов в переменные.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В ежедневных задачах JavaScript: данные, функции, события и работа в браузере.
- Главный риск: Путаются базовые механики JS, из-за чего в коде появляются повторяющиеся баги.
- Как проверяете решение: Проверяю на двух контрпримерах (где работает/где ломается) и закрепляю мини-задачей в песочнице.
Мини-пример
const user = { name: 'Sam', meta: { city: 'SPB' } };
const { name, meta: { city } } = user;
Углубление (2-3 минуты)
- Свяжите тему "Что такое деструктуризация?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разложите ответ на «механика -> применение -> ограничение», чтобы показать не только теорию, но и практику.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не проговаривают ограничения и edge-cases.
- Дают определение, но не объясняют, как это использовать в рабочем коде.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как поведет себя решение на edge-case и почему?
- Какой минимальный тест докажет корректность подхода?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Связанный вопрос из Банка вопросов для закрепления.
- Базовые определения темы и 2 контрпримера (где работает и где ломается).
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
17. Зачем нужна иммутабельность в фронтенде?
Теги: javascript, immutability, state, frontend
Сложность: Junior
Короткий ответ
Иммутабельность делает изменения состояния предсказуемыми, упрощает отладку и помогает оптимизациям рендера.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В проектировании модулей, границ ответственности и поддерживаемой архитектуры продукта.
- Главный риск: Размытые границы повышают связанность, замедляют изменения и увеличивают цену регрессий.
- Как проверяете решение: Проверяю на двух контрпримерах (где работает/где ломается) и закрепляю мини-задачей в песочнице.
Мини-пример
setState(prev => ({ ...prev, count: prev.count + 1 }));
Углубление (2-3 минуты)
- Свяжите тему "Зачем нужна иммутабельность в фронтенде?" с одним production-сценарием и объясните, почему она влияет на результат.
- Разложите ответ на «механика -> применение -> ограничение», чтобы показать не только теорию, но и практику.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не проговаривают ограничения и edge-cases.
- Путают терминологию и не фиксируют критерий проверки.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Где граница применимости этого решения?
- Как поведет себя решение на edge-case и почему?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Мини-код, который воспроизводит поведение и проверяется за 1-2 минуты.
- Связанный вопрос из Банка вопросов для закрепления.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
18. Разница между cookie, localStorage и sessionStorage?
Теги: web, cookies, storage, security
Сложность: Junior
Короткий ответ
Cookie отправляются на сервер с запросом, localStorage живет между сессиями, sessionStorage очищается при закрытии вкладки.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В авторизации, хранении данных и безопасной работе клиента с API.
- Главный риск: Ошибки здесь приводят к уязвимостям, утечкам данных и инцидентам безопасности.
- Как проверяете решение: Собираю короткий воспроизводимый пример, прогоняю edge-case и объясняю результат без подсказок.
Мини-пример
localStorage.setItem('theme', 'dark');
sessionStorage.setItem('tabState', 'opened');
document.cookie = 'lang=ru; path=/';
Углубление (2-3 минуты)
- Свяжите тему "Разница между cookie, localStorage и sessionStorage?" с одним production-сценарием и объясните, почему она влияет на результат.
- Проверьте сценарии abuse-cases, а не только happy path.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Ориентируются только на client-side защиту без серверной проверки.
- Путают CORS, аутентификацию и авторизацию как один механизм.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какой abuse-case вы проверите первым?
- Какие данные/операции требуют серверной валидации независимо от клиента?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Негативные тесты на abuse-сценарии.
- Разницу между AuthN/AuthZ, CORS, CSRF и XSS.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
19. Что такое CORS?
Теги: web, cors, http, browser-security
Сложность: Junior
Короткий ответ
CORS — механизм браузера, который регулирует междоменные запросы через специальные HTTP-заголовки.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В авторизации, хранении данных и безопасной работе клиента с API.
- Главный риск: Ошибки здесь приводят к уязвимостям, утечкам данных и инцидентам безопасности.
- Как проверяете решение: Собираю короткий воспроизводимый пример, прогоняю edge-case и объясняю результат без подсказок.
Мини-пример
Access-Control-Allow-Origin: https://example.com
Access-Control-Allow-Methods: GET, POST
Углубление (2-3 минуты)
- Свяжите тему "Что такое CORS?" с одним production-сценарием и объясните, почему она влияет на результат.
- Проверьте сценарии abuse-cases, а не только happy path.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Ориентируются только на client-side защиту без серверной проверки.
- Не рассматривают негативные сценарии и источники утечки данных.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Какой abuse-case вы проверите первым?
- Как обнаружите нарушение политики безопасности в логах?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Разницу между AuthN/AuthZ, CORS, CSRF и XSS.
- Серверные проверки прав и политику хранения чувствительных данных.
- Прогоните один мини-пример в Песочнице и объясните вывод своими словами.
Связанные модули и карта
20. В чем разница между script, async и defer?
Теги: web, script-loading, async-defer, performance
Сложность: Junior
Короткий ответ
Обычный script блокирует парсинг HTML. async загружается параллельно и выполняется сразу после загрузки. defer загружается параллельно и выполняется после парсинга DOM в порядке подключения.
Что сказать на интервью (30-60 секунд)
- Где это применяется: В производительности интерфейса: рендер, загрузка ассетов, отзывчивость и стабильность UX.
- Главный риск: Неправильная реализация дает лишние ререндеры, рост LCP/TTI и деградацию пользовательского пути.
- Как проверяете решение: Делаю ручную проверку сценария + мини-тест, чтобы подтвердить поведение в реальном коде.
Мини-пример
<script src="/app.js" defer></script>
<script src="/analytics.js" async></script>
Куда дальше
- Вернитесь в модуль: JavaScript.
- Сверьтесь с картой темы: JavaScript.
- Продолжайте по маршруту: Junior трек.
- Закрепите один ответ на практике в Песочнице.
Углубление (2-3 минуты)
- Свяжите тему "В чем разница между
script,asyncиdefer?" с одним production-сценарием и объясните, почему она влияет на результат. - Сравните поведение на быстром и медленном устройстве/сети.
- Проверьте, что можете объяснить это простым примером за 60-90 секунд без подсказок.
Типичные ошибки
- Не проверяют сценарий на медленных устройствах и сетях.
- Переусложняют мемоизацию там, где нет измеримой проблемы.
- Путают соседние концепции и не обозначают границы применимости выбранного подхода.
Follow-up вопросы
- Как будете валидировать эффект на медленных устройствах?
- Как эта тема влияет на LCP/INP/CLS в реальном интерфейсе?
- Какой минимальный тест или проверка подтвердит, что решение действительно работает?
Что повторить
- Профилирование рендера до/после изменения.
- Границы
SSR/CSR/SSG/ISR(если применимо). - Прогоните один мини-пример в Песочнице и объясните вывод своими словами.