Подготовка к собеседованию
Frontend JavaScript и TypeScript: вопросы и ответы
Вопросы по браузеру, JavaScript, TypeScript, производительности и доступности интерфейсов.
JavaScript и TypeScript
4 вопросовЧто такое замыкание?junior
Замыкание — функция вместе с лексическим окружением, в котором она была создана. Благодаря ему функция может обращаться к переменным внешней области после завершения её вызова.
Зачем нужен TypeScript?junior
TypeScript добавляет статическую проверку типов, улучшает автодополнение и делает контракты модулей явными. В браузер код компилируется в JavaScript, поэтому runtime-проверки при необходимости добавляют отдельно.
В чём разница между == и ===?junior
=== сравнивает без неявного приведения типов и обычно предпочтительнее. == допускает преобразование, из-за чего результат некоторых сравнений становится неожиданным.
Что такое debounce и throttle?junior
Debounce откладывает вызов до паузы во входных событиях, throttle ограничивает частоту вызовов. Первый удобен для поиска, второй — для scroll и resize.
Браузер
3 вопросовКак распространяется событие в DOM?middle
Событие проходит capture-фазу от document к элементу, затем target и bubble-фазу обратно вверх. Делегирование часто используют на bubble-фазе, чтобы обрабатывать события динамических дочерних элементов.
Что вызывает layout thrashing?middle
Чередование записи стилей и немедленного чтения геометрии заставляет браузер многократно пересчитывать layout. Изменения группируют, используют CSS-анимации и читают измерения до записи.
Как работает CORS?middle
Браузер ограничивает запросы между origin и проверяет заголовки ответа. Для сложных запросов сначала выполняется preflight OPTIONS, который сервер должен разрешить явно.
Качество интерфейса
3 вопросовКак сделать интерфейс доступным?middle
Используют семантические элементы, видимый focus, правильные label, клавиатурную навигацию, достаточный контраст и понятные сообщения об ошибках. ARIA добавляют только когда нативной семантики недостаточно.
Как измерять производительность фронтенда?senior
Смотрят Core Web Vitals, waterfall загрузки, размер JavaScript и профилирование рендера. После изменения сравнивают метрики на реалистичном устройстве, а не только локальный Lighthouse.
Как обрабатывать состояние загрузки и ошибки?junior
Для каждого запроса явно показывают loading, success, empty и error-состояния. Пользователь должен понимать, что произошло и какое действие доступно дальше.
Как использовать этот список
Сначала ответьте своими словами, затем раскройте пояснение. Отдельно подготовьте примеры из проектов: на собеседовании важно не только знать определение, но и объяснить, где вы применяли подход на практике.
Посмотреть другие профессии →