Подходы AsForJS к собесам JS
Собес мечты — это диалог равных, где важна не память, а живая мысль. Любой простой вопрос можно превратить в глубокое путешествие по спецификации.
Суть
AsForJS проводит публичные интервью, в которых разворачивает фундаментальные конструкции JS до уровня спецификации. Цель — не загнать кандидата, а показать, как в той же задаче можно увидеть глубину, недоступную при поверхностном изучении.
Метод: эволюция простой задачи
- Стартовая задача: программа из одной строки
7 - Что вернёт? «Семь» — неточный ответ
7— это numeric literal, statement, который возвращает результат 7- Параллель с
console.log("Hello World")— каждая часть это вычисляемая конструкция - Дальше задача растёт до
{valueof}+{}и Promise
Типичные вопросы и подходы
console.log("Hello World")
console.log— это property accessor(...)— это callable expression"Hello World"— string literal, статemenт;— empty statement и разделитель- Точка с запятой обязательна по спеке (ASI — мифический «авторасстановщик»)
Способы вызова функции без ``
- ~17-19 способов вызвать функцию без внешнего API
- Tagged template:
console.log`Hello` new— это легальный вызов любой ordinary function (отличие —this)- Конструктора как отдельной сущности в JS нет
this
thisникогда не контекст с точки зрения спеки- Особый идентификатор, устанавливается при вызове ordinary function
- У arrow function
thisне устанавливается вообще f.call(1)—thisможет быть примитивом (доказательство, что это не контекст)- Reference type — артефакт спеки для описания внутренних процессов
- Метод не «принадлежит» объекту — это идентификатор со ссылкой на функцию
Окружения вместо «области видимости»
- В спеке — environments, а не scope
- «Область видимости» — неточный перевод
- В окружении хранится больше, чем идентификаторы
Принципы хорошего собеса от AsForJS
- Программист = тот, кто умеет решать проблемы (а не объём заученного)
- Живая мысль важнее памяти — с ChatGPT по объёму знаний не поспоришь
- Глубина инструмента = эффективность — кто видит только молоток, видит везде гвозди
- Доброжелательность к коду студента, критичность к своему — закон Постела
Типы кандидатов
- Implementer — реализует идеи, в детали лезет при проблеме
- Researcher — сначала исследует инструмент, потом применяет
- Оба нужны, у каждого свой профиль и сильные стороны
Антипаттерны
- Социально-одобряемые ответы вместо понимания
- Учить «правильные» ответы под собес, не понимая сути
- Считать
console.log= чистый JS Hello World (это внешний API) - Игнорировать спецификацию, опираясь только на туториалы
🎓 Источники
- 🎓 [Нормальное собеседование Николай и я] · AsForJS · 2025-08-14 · YouTube
- Тезисы: собес мечты — диалог равных; программист = решает проблемы; JS — «сферический конь в вакууме»; 17-19 способов вызова функции;
new— обычный вызов с this
- Тезисы: собес мечты — диалог равных; программист = решает проблемы; JS — «сферический конь в вакууме»; 17-19 способов вызова функции;
- 🎓 [автор на собеседовании] · AsForJS · 2025-03-02 · YouTube
- Тезисы: this — не контекст, особый идентификатор; reference type; метод не «прибит» к объекту; окружения вместо scope
- 🎓 [Лучшая из задач для собеседования] · AsForJS · 2025-02-21 · YouTube
- Тезисы: эволюция задачи от
7к головоломке; каждый литерал — вызов алгоритма спеки; comma-оператор vs;
- Тезисы: эволюция задачи от