Подготовка к собеседованию frontend с ИИ
Страница для фронтенд-разработчиков, которым нужна подготовка к техническому собеседованию frontend. Подходит и под собеседование frontend junior/middle, и под senior-позиции. ИИ-интервьюер спрашивает про HTML и доступность, CSS, работу браузера, JavaScript и TypeScript, фреймворки, сеть и архитектуру. Вы отвечаете голосом на до 50 вопросов и получаете отчёт с оценками за техническую точность, полноту и ясность.
О чём спрашивает ИИ на собеседовании frontend
Семантический HTML и доступность
Семантические теги, landmarks, заголовки, формы и label, когда нужны ARIA-атрибуты, а когда они вредят, навигация с клавиатуры и фокус.
CSS: каскад и вёрстка
Специфичность, каскад и @layer, box model, Flexbox против Grid, адаптивная вёрстка, container queries, :has() и нативный CSS nesting.
Браузер, рендеринг и Core Web Vitals
Critical rendering path, layout, paint и composite, reflow, LCP, INP и CLS, lazy loading, оптимизация изображений, шрифтов и бандла.
JavaScript и TypeScript
Замыкания, this, прототипы, event loop и микрозадачи, async/await, а в TypeScript — generics, union и narrowing, utility types, unknown против any.
Фреймворки: React, Vue, Angular
Компонентная модель, реактивность и ре-рендеры, жизненный цикл, hooks, Composition API, signals в Angular, SSR, гидратация и Server Components.
Сеть, кэширование и безопасность
HTTP-методы и статусы, HTTP/2 и HTTP/3, Cache-Control, ETag, CDN, CORS и preflight, XSS, CSRF, Content Security Policy, атрибуты cookie.
Состояние и архитектура
Локальное, глобальное и серверное состояние, TanStack Query, Redux Toolkit, Pinia, структура проекта, монорепозитории, микрофронтенды и их цена.
Тестирование
Пирамида тестов, unit-тесты на Vitest или Jest, Testing Library и тестирование поведения, а не реализации, e2e на Playwright, моки сети.
Вопросы на собеседовании frontend junior, middle и senior
Junior
Чем семантические теги лучше div и почему это важно?
Что должно быть в сильном ответе:Теги вроде header, nav, main, article, button и label передают смысл: скринридер объявляет их как landmarks и элементы управления, браузер даёт встроенную поддержку клавиатуры, а поисковики лучше понимают структуру. Сильный ответ упоминает, что div с onClick не получает фокус и не реагирует на Enter без дополнительного кода, поэтому для действий нужен настоящий button.
Как считается специфичность CSS-селекторов?
Что должно быть в сильном ответе:Специфичность сравнивается как тройка: ID, затем классы, атрибуты и псевдоклассы, затем теги и псевдоэлементы; инлайн-стили сильнее любого селектора, а !important перекрывает обычные правила. При равной специфичности побеждает правило, которое стоит позже. Хорошо добавить, что у :where() нулевая специфичность, а @layer позволяет управлять приоритетом без гонки специфичности.
Чем Flexbox отличается от Grid и когда что выбрать?
Что должно быть в сильном ответе:Flexbox — одномерная вёрстка: элементы выстраиваются в строку или колонку, и размеры зависят от контента. Grid — двумерная: вы задаёте строки и колонки, и элементы раскладываются по сетке. Типичный выбор: Flexbox для навбара, кнопок и рядов карточек, Grid для каркаса страницы и сложных сеток, причём их часто комбинируют.
Чем отличаются let, const и var?
Что должно быть в сильном ответе:У var функциональная область видимости и всплытие со значением undefined, а let и const блочные и до объявления находятся в temporal dead zone, так что обращение бросает ReferenceError. const запрещает переприсваивание переменной, но объект или массив в ней можно менять. В современном коде var практически не используют.
Что такое делегирование событий?
Что должно быть в сильном ответе:События всплывают от целевого элемента к родителям, поэтому один обработчик на контейнере может обрабатывать клики по всем дочерним элементам, проверяя event.target, например через closest(). Это экономит обработчики и работает для элементов, добавленных позже. Стоит упомянуть stopPropagation и то, что некоторые события, как focus, не всплывают (вместо них есть focusin).
Middle
Объясните event loop: в каком порядке выполнятся setTimeout, Promise.then и синхронный код?
Что должно быть в сильном ответе:Сначала выполняется весь синхронный код в call stack, затем браузер опустошает очередь микрозадач (колбэки промисов, queueMicrotask), и только потом берёт следующую макрозадачу вроде setTimeout. Между макрозадачами браузер может отрисовать кадр. Поэтому Promise.then всегда сработает раньше setTimeout(fn, 0), а бесконечная цепочка микрозадач блокирует рендеринг.
Что такое Core Web Vitals и как улучшить INP?
Что должно быть в сильном ответе:Core Web Vitals — это LCP (скорость появления главного контента, хорошо до 2,5 с), INP (задержка реакции на взаимодействие, хорошо до 200 мс, с 2024 года заменил FID) и CLS (стабильность вёрстки, хорошо до 0,1). INP улучшают, разбивая длинные задачи на main thread, откладывая неважную работу, уменьшая JS-бандл и число лишних ре-рендеров. Сильный ответ упоминает измерения на реальных пользователях, а не только в Lighthouse.
Что такое CORS и зачем нужен preflight-запрос?
Что должно быть в сильном ответе:Браузер по same-origin policy не даёт скрипту читать ответ с другого origin, если сервер явно не разрешил это заголовками Access-Control-Allow-*. Для «непростых» запросов, например с методом PUT, JSON-телом или кастомными заголовками, браузер сначала шлёт OPTIONS-preflight. Важно сказать, что CORS защищает пользователя в браузере, а не сервер: curl его игнорирует.
Как защититься от XSS во фронтенд-приложении?
Что должно быть в сильном ответе:Не вставлять недоверенные данные как HTML: использовать textContent и автоэкранирование фреймворков, а dangerouslySetInnerHTML или v-html — только с санитизацией, например через DOMPurify. Дополнительный уровень защиты — Content Security Policy, запрещающая инлайн-скрипты и чужие источники, и HttpOnly-cookie для сессии, чтобы скрипт не мог её украсть.
Как вы решаете, где хранить состояние в приложении?
Что должно быть в сильном ответе:Сначала держу состояние как можно ближе к месту использования и поднимаю его, только когда оно нужно нескольким компонентам. Серверные данные отделяю и отдаю библиотеке вроде TanStack Query, которая кэширует, дедуплицирует и перезапрашивает; состояние фильтров и пагинации часто лучше хранить в URL. Глобальный store (Redux Toolkit, Zustand, Pinia) — только для действительно общего клиентского состояния.
Senior
Как бы вы диагностировали медленную страницу в продакшене?
Что должно быть в сильном ответе:Начать с полевых данных — RUM или CrUX, — чтобы понять, какая метрика страдает, на каких страницах и устройствах. Дальше воспроизвести в DevTools Performance с троттлингом: искать длинные задачи, блокирующие ресурсы, тяжёлый LCP-элемент, layout shifts. Исправления приоритизировать по влиянию и закрепить бюджетами производительности в CI, чтобы регрессии не возвращались.
CSR, SSR, SSG или стриминг: как выбрать стратегию рендеринга?
Что должно быть в сильном ответе:SSG подходит для редко меняющегося контента и даёт самый быстрый TTFB с CDN; SSR — для персонализированных или часто обновляемых страниц, где важны SEO и быстрый первый показ; CSR — для приложений за логином. Стриминг SSR и Server Components позволяют отдавать части страницы раньше и меньше JS на клиент. Сильный ответ говорит о цене: нагрузка на сервер, стоимость гидратации и сложность кэширования.
Когда микрофронтенды оправданы, а когда нет?
Что должно быть в сильном ответе:Они оправданы, когда несколько независимых команд должны релизить свои части продукта отдельно и организационная выгода перевешивает техническую цену. Цена — дублирование зависимостей, больший бандл, сложность общего состояния, дизайн-системы и сквозного тестирования. Для одной-двух команд обычно хватает модульного монолита в монорепозитории с чёткими границами между модулями.
Как вы построите стратегию тестирования фронтенда?
Что должно быть в сильном ответе:Основа — быстрые unit- и интеграционные тесты компонентов через Testing Library, которые проверяют поведение глазами пользователя, с моками сети на уровне запросов, например MSW. Сверху — небольшое число e2e на Playwright для критичных сценариев: логин, оплата, ключевые формы. Добавить визуальные и a11y-проверки, следить за flaky-тестами и запускать всё в CI на каждый pull request.
Как сравнить модели реактивности React, Vue и Angular?
Что должно быть в сильном ответе:React перезапускает функцию компонента при изменении состояния и сравнивает дерево, поэтому мемоизация (вручную или через React Compiler) влияет на производительность. Vue отслеживает зависимости через прокси и обновляет только то, что читает изменённые данные. Angular перешёл от Zone.js к signals с точечными обновлениями и поддерживает zoneless-режим. Сильный ответ объясняет, как эта разница влияет на производительность и ментальную модель команды.
Как проходит мок-собеседование по Frontend
- Выберите Frontend (и другие технологии из своего стека), свой уровень и язык собеседования: украинский, английский или русский. Или загрузите резюме и описание вакансии.
- Отвечайте на каждый вопрос голосом, как на настоящем собеседовании.
- Получите оценку каждого ответа по точности, полноте и понятности и отчёт со слабыми местами.
Как отвечать на вопросы frontend вслух
- →Начинайте с определения в одно предложение, а потом объясняйте механизм: «CORS — это правило браузера, которое…», а не сразу детали заголовков.
- →Код описывайте словами по шагам: «на контейнер вешаю один обработчик, в нём через closest ищу кнопку». Интервьюер должен представить решение без редактора.
- →Сравнивая инструменты — Flexbox и Grid, SSR и CSR, Redux и TanStack Query, — называйте, когда выбрали бы каждый, а не только разницу.
- →Подкрепляйте ответ примером из проекта: какую метрику улучшили, какой баг с кэшем или CORS нашли и как.
- →Если не знаете точно, скажите, как бы проверили: DevTools, вкладка Network, MDN, спецификация. Это звучит сильнее, чем угадывать.
Частые вопросы
Какой фреймворк покрывается: React, Vue или Angular?
Базовое frontend-собеседование спрашивает о концепциях фреймворков в целом. Чтобы получить более глубокие вопросы по конкретному, добавьте React, Vue или Angular как технологию вместе с Frontend, и ИИ учтёт ваш стек.
На каком языке можно пройти собеседование?
Язык выбираете перед стартом: русский, украинский или английский. На английском удобно тренироваться перед интервью в иностранную компанию.
Есть ли live coding?
Нет. Вопросы устные, вы отвечаете голосом, редактора кода нет. Часть вопросов просит объяснить, как бы вы что-то реализовали или дебажили, поэтому полезно тренироваться описывать код словами.
Можно тренироваться по моей вакансии?
Да. Загрузите описание вакансии или резюме, и ИИ составит вопросы под указанный там стек и уровень. Первое собеседование до 5 вопросов бесплатно, дальше от $1.75 за собеседование, без подписки.