Подготовка к 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 в браузере

Стратегия подготовки

  1. Скачать спецификацию ECMAScript
  2. Прочитать разделы Types, References, Execution Context
  3. Смотреть стримы AsForJS — практическое применение
  4. Запускать в d8 или Node REPL — проверять гипотезы
  5. Решать wtfjs.com — учить разбирать пошагово
  6. Не зубрить ответы, понимать алгоритмы

Источники глубокого изучения

  • 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.3false (IEEE 754)
  • typeof NaN"number" (NaN — это число)
  • null instanceof Objectfalse (без 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