Подготовка к собеседованию — Frontend-разработчик
Колода из 121+ карточек с вопросами для собеседования по направлению «Frontend-разработчик» — по темам и уровню сложности, с возвратом ровно перед тем, как вы забудете. Посмотрите несколько карточек ниже, затем выберите доступ, чтобы учить всё направление по расписанию в стиле Anki (SM-2).
7 дней бесплатно на месяц или год · все функции включены.
Что внутри
Все темы направления, сгруппированные так, как вы будете их учить.
HTML и CSS
12 карточекJavaScript
14 карточекTypeScript
10 карточекReact и фреймворки
14 карточекБраузер и производительность
10 карточекДоступность
8 карточекСборка, тулинг и тестирование
10 карточекСистемный дизайн фронтенда
8 карточекПоведенческое интервью
35 карточекПримеры вопросов
Несколько карточек из колоды — откройте ответ, затем выберите доступ, чтобы учить весь набор по расписанию.
Что такое семантическая вёрстка и зачем она нужна (доступность, SEO, поддержка)?
Что такое семантическая вёрстка и зачем она нужна (доступность, SEO, поддержка)?
Короткий ответ: Семантическая вёрстка — это использование HTML-тегов по их смыслу (<nav>, <article>, <button>), а не <div> на всё подряд. Браузер и вспомогательные технологии понимают структуру документа, что даёт доступность, SEO и читаемый код.
Подробно:
- Доступность (a11y) — скринридеры строят дерево доступности по тегам:
<nav>,<main>,<h1>дают навигацию по ориентирам и заголовкам.<div>-суп озвучивается как бесструктурный текст. - SEO — поисковики выделяют
<article>,<h1>–<h6>,<time>как сигналы структуры и важности контента. - Поддерживаемость —
<header>/<footer>/<aside>самодокументируют разметку; не нужно читать классы, чтобы понять роль блока. - Бесплатное поведение —
<button>фокусируется и реагирует на Enter/Space,<a>навигируется,<details>сворачивается — без JS.
<!-- ❌ div-суп -->
<div class="nav"><div class="link" onclick="go()">Главная</div></div>
<!-- ✅ семантика -->
<header>
<nav aria-label="Основная">
<a href="/">Главная</a>
</nav>
</header>
<main>
<article>
<h1>Заголовок статьи</h1>
<time datetime="2026-06-30">30 июня 2026</time>
</article>
</main>
⚠️ Частая ошибка: делать кликабельный <div onclick> вместо <button> — теряются фокус, клавиатура и роль для скринридера.
Что такое хойстинг и чем отличаются var, let и const с точки зрения области видимости и TDZ?
Что такое хойстинг и чем отличаются var, let и const с точки зрения области видимости и TDZ?
Короткий ответ: Хойстинг — это подъём объявлений в начало их области видимости на этапе компиляции. var поднимается и инициализируется как undefined (функциональная область видимости), а let/const поднимаются, но остаются в TDZ (temporal dead zone) до строки объявления и имеют блочную область видимости.
Подробно:
- var — функциональная область видимости, доступна как
undefinedдо объявления, можно переобъявлять. - let — блочная область видимости, в TDZ до объявления, переприсваивание разрешено.
- const — как
let, но без переприсваивания (само значение объекта при этом мутабельно). - TDZ — обращение к
let/constдо объявления бросаетReferenceError, а не возвращаетundefined.
console.log(a); // undefined — var поднят
var a = 1;
console.log(b); // ReferenceError — b в TDZ
let b = 2;
| Область видимости | До объявления | Переприсваивание | |
|---|---|---|---|
| var | функция | undefined |
да |
| let | блок | TDZ → ошибка | да |
| const | блок | TDZ → ошибка | нет |
⚠️ Частая ошибка: считать, что let/const «не поднимаются». Они поднимаются — но обращение к ним до инициализации падает из-за TDZ.
Зачем нужен TypeScript поверх JavaScript и что такое структурная (утиная) типизация?
Зачем нужен TypeScript поверх JavaScript и что такое структурная (утиная) типизация?
Короткий ответ: TypeScript добавляет статическую проверку типов поверх JS: ошибки ловятся в редакторе и на этапе сборки, а не в рантайме. Типизация в нём структурная — совместимость определяется формой объекта (набором полей), а не именем типа или явным implements.
Подробно:
- Что даёт TS — автодополнение и навигация, безопасный рефакторинг, самодокументируемые контракты, отлов опечаток и
undefinedдо запуска. - Структурная vs номинальная — в Java/C# типы совместимы по имени (номинальная типизация). В TS — если объект имеет нужные поля, он подходит, даже если создан без знания о целевом типе.
- Стирание типов — типы существуют только при компиляции, в рантайме это обычный JS. Нельзя проверить тип через
instanceofдля интерфейса.
interface Point { x: number; y: number }
function len(p: Point): number {
return Math.hypot(p.x, p.y);
}
// объект не объявлял implements Point, но подходит по форме
const v = { x: 3, y: 4, label: "v" };
len(v); // OK — структурная типизация: лишнее поле label не мешает
⚠️ Частая ошибка: считать, что TS защищает в рантайме. Данные из API нужно валидировать (zod и т.п.) — компилятор верит вашим аннотациям на слово.
Что такое JSX и во что он компилируется?
Что такое JSX и во что он компилируется?
Короткий ответ: JSX — это синтаксический сахар над вызовами функции создания элементов. Компилятор (Babel/SWC) превращает его в вызовы jsx-runtime (или React.createElement в старом transform), которые возвращают обычные JS-объекты — описания UI, а не реальные DOM-узлы.
Подробно:
- Это выражение, а не HTML — JSX компилируется в JavaScript и встраивается везде, где допустимо выражение.
- Новый JSX-transform (React 17+) — импортирует
jsx/jsxsизreact/jsx-runtime, поэтомуimport Reactради JSX больше не нужен. - Возвращает объект-элемент — вида
{ type, key, props }; реальный DOM появляется только при рендере. - Регистр имеет значение — тег с заглавной буквы — компонент, со строчной — DOM-элемент.
const el = <button className="btn" onClick={fn}>Save</button>;
// новый transform компилирует это в:
import { jsx } from "react/jsx-runtime";
const el = jsx("button", { className: "btn", onClick: fn, children: "Save" });
⚠️ Частая ошибка: считать JSX строкой или HTML. На деле это JS: пишут className, а не class, а атрибуты — в camelCase (onClick, tabIndex).
Что такое Critical Rendering Path и какие ресурсы его блокируют?
Что такое Critical Rendering Path и какие ресурсы его блокируют?
Короткий ответ: Critical Rendering Path (критический путь рендеринга) — это последовательность шагов браузера от получения HTML до первого пикселя на экране: DOM + CSSOM → render tree → layout → paint → composite. Синхронный CSS и блокирующий JS задерживают этот путь.
Подробно:
- DOM — браузер парсит HTML в дерево узлов.
- CSSOM — параллельно строится объектная модель стилей; CSS блокирует рендеринг, так как без него нельзя посчитать стили.
- Render tree — DOM и CSSOM объединяются, узлы с
display: noneотбрасываются. - Layout (reflow) — вычисляются геометрия и позиции элементов.
- Paint — узлы растеризуются в слои пикселей.
- Composite — слои собираются на экране (часто на GPU).
HTML ─► DOM ─┐
├─► Render Tree ─► Layout ─► Paint ─► Composite ─► экран
CSS ─► CSSOM┘
▲ блокирует рендеринг ▲ <script> без defer/async
⚠️ Частая ошибка: считать, что JS никогда не мешает рендерингу. Синхронный <script> в <head> останавливает парсинг HTML и построение DOM — используйте defer или вынесите скрипты вниз.
Что такое доступность (accessibility, a11y) и почему она важна?
Что такое доступность (accessibility, a11y) и почему она важна?
Короткий ответ: Доступность (a11y) — это проектирование продуктов так, чтобы ими могли пользоваться люди с нарушениями зрения, слуха, моторики и когнитивными особенностями. Она важна по трём причинам: этической (люди), деловой (шире аудитория) и юридической (WCAG, ADA, European Accessibility Act).
Подробно:
- Люди — около 15% населения живёт с какой-либо инвалидностью; временные (сломанная рука) и ситуативные (яркое солнце, шумное метро) ограничения касаются всех.
- Бизнес — больше пользователей, лучше SEO (семантика = понятная структура), меньше отказов.
- Закон — WCAG 2.x де-факто стандарт; в США — ADA/Section 508, в ЕС — EAA; иски за недоступные сайты реальны.
| Нарушение | Барьер | Решение |
|---|---|---|
| Зрение | не видит экран | скринридер, контраст, alt |
| Слух | не слышит звук | субтитры, транскрипты |
| Моторика | не пользуется мышью | доступность с клавиатуры |
| Когнитивные | сложный интерфейс | простой язык, ясная структура |
⚠️ Частая ошибка: считать доступность «фичей для меньшинства» — на деле она улучшает UX для всех (эффект срезанного бордюра).
Готовы закрепить навсегда?
Первая сессия — меньше минуты. Ваше будущее «я» на собеседовании скажет спасибо.
Вопросы об этом направлении
Как готовиться к собеседованию на «Frontend-разработчик»?
Учите концепции, которые придётся объяснять, а не только те, что умеете кодить. Направление «Frontend-разработчик» в RecallDeck даёт 121+ отобранных вопросов и возвращает каждый по расписанию в стиле Anki (SM-2) ровно перед тем, как вы забудете — чтобы на собеседовании ответы были под рукой.
Какие темы охватывает направление «Frontend-разработчик»?
Направление «Frontend-разработчик» разбито на ключевые области, которые реально проверяют на таких собеседованиях, — по темам и уровню сложности (Concept, Junior, Middle, Senior). Полный план и примеры вопросов можно посмотреть выше до входа.
Помогает ли интервальное повторение в подготовке к «Frontend-разработчик»?
Да. Активно вспоминать ответ и честно себя оценивать — куда прочнее для памяти, чем перечитывать заметки. RecallDeck планирует каждую карту «Frontend-разработчик» так, чтобы она вернулась перед моментом забывания: ежедневных повторений становится меньше, а знания держатся.
Можно попробовать направление «Frontend-разработчик» до оплаты?
Да. Месячный и годовой варианты включают семь пробных дней со всем направлением «Frontend-разработчик», полным планировщиком SM-2, статистикой, гибким темпом и блиц-режимом. Отменить можно онлайн до первого списания.