Подготовка к JS-собесу по спецификации
Готовиться к JS-собесу — это не учить ответы на вопросы, а понимать язык по спецификации. После этого любой вопрос — частный случай общего принципа.
Суть
Большинство «каверзных» вопросов на JS-собесе — это поверхностные проявления спецификации. Понимаешь спеку — понимаешь все варианты. Зубришь ответы — провалишься на нестандартном вопросе.
Основные разделы спеки
1. Lexical environment / Окружения
- Что такое environment record
- Lexical vs Variable environment
- Block scope, function scope, global scope
- Hoisting var, let, const, function
2. Reference type
- Идентификатор не возвращает значение, а reference type
- GetValue достаёт значение
- IsCallable определяет вызываемость
- Артефакт спеки, но раскрывает поведение
3. this binding
- Особый идентификатор, не контекст
- Устанавливается при вызове ordinary function
- Arrow function не имеет своего this
- new устанавливает this на новый объект
- call/apply/bind переопределяют
4. Coercion / Приведение типов
- ToPrimitive с hint (string/number/default)
- Symbol.toPrimitive — кастомизация
- ToNumber, ToString, ToBoolean
- Abstract Equality Comparison vs Strict Equality
5. Объекты и наследование
- Property descriptor (writable, enumerable, configurable)
- Delegation chain — что и где
- prototype vs proto
- Object.create vs new
- Property accessor vs data property
6. Event loop
- Microtask queue vs Macrotask queue
- queueMicrotask
- Promise resolution
- setTimeout/setInterval/setImmediate
- Render pipeline в браузере
Стратегия подготовки
- Скачать спецификацию ECMAScript
- Прочитать разделы Types, References, Execution Context
- Смотреть стримы AsForJS — практическое применение
- Запускать в d8 или Node REPL — проверять гипотезы
- Решать
wtfjs.com— учить разбирать пошагово - Не зубрить ответы, понимать алгоритмы
Источники глубокого изучения
- ECMAScript Spec — главный авторитет
- AsForJS JSbook — серия «От мифов к спецификации»
- AsForJS spec — разбор отдельных тем
- Razbor серии — анализ чужих видео
- автор — практическое применение в Node.js
Типичные капканы
- Думать, что typeof null === 'null' (на самом деле 'object')
- Считать
===всегда лучше==(иногда нужно coercion) - Думать, что arrow function — «короткая запись» обычной (this другой)
- Считать ASI «автоматическим расставлением точек с запятой»
- Думать, что
console.log— это часть языка (это API среды)
Подход «не знаю»
- Честно сказать «не помню, нагуглил бы»
- Объяснить, как бы проверил гипотезу
- Написать 5 строк для проверки
- Не пытаться угадать
- Это сильнее, чем неуверенное «вроде так»
Темы для проверки гипотез
+→""(объяснить через ToPrimitive){} +→0(объяснить через парсер)0.1 + 0.2 === 0.3→false(IEEE 754)typeof NaN→"number"(NaN — это число)null instanceof Object→false(без GetPrototypeOf)
Антипаттерны подготовки
- Зубрить 155 вопросов с javascript-questions.vercel.app
- Учить ответы без понимания
- Игнорировать спеку, читать туториалы
- Полагаться только на JS, не зная Node API
- Не запускать код, читая о нём
🎓 Источники
- 🎓 [Проходим тест javascript.ru без подглядывания] · AsForJS · 2025-02-06 · YouTube
- 🎓 [Решаем 155 задачек с javascript-questions.vercel.app] · AsForJS · 2025-02-12 · YouTube
- 🎓 [Что такое Object в JavaScript согласно официальной спецификации] · AsForJS · 2025-02-03 · YouTube
- 🎓 [Смотрим вместе YT 16 САМЫХ ПОПУЛЯРНЫХ вопросов по JS] · AsForJS · 2024-11-09 · YouTube
- 🎓 [Смотрим вместе YT Ulbi - собеседование на Middle Frontend] · AsForJS · 2025-06-30 · YouTube
- 🎓 [⎡spec05⎦ Проблематика языка JavaScript] · AsForJS · 2024-03-10 · YouTube
- 🎓 [💡 Node.js — Разбор вопросов для собеседования на бекенд] · 2024-06-13 · YouTube