Часто задаваемые вопросы по HTML и CSS на собеседованиях на вакансии фронтенд-разработчика
Готовишься к интервью на фронтенд-позицию? Уже представляешь, как будешь рассказывать про крутые React-хуки и TypeScript-дженерики, но интервьюер вдруг спрашивает: "А чем отличается inline от inline-block?" И ты такой: surprised_pikachu.jpg. Погнали разбирать те самые вопросы, которые заставляют даже сеньоров нервно гуглить перед собесом.
Привет, будущая жертва технического собеседования! 👋
Готовишься к интервью на фронтенд-позицию? Уже представляешь, как будешь рассказывать про крутые React-хуки и TypeScript-дженерики, но интервьюер вдруг спрашивает: "А чем отличается inline от inline-block?" И ты такой: surprised_pikachu.jpg
Да-да, даже в 2026 году на собесах любят погонять по основам. И знаешь что? Это правильно. Потому что человек, который не понимает box model, но пытается объяснить виртуальный DOM — это как водитель, который не знает, где педаль тормоза, но рассуждает о квантовых двигателях.
Погнали разбирать те самые вопросы, которые заставляют даже сеньоров нервно гуглить перед собесом.

1. Блочная модель (Box Model) — классика жанра
Вопрос: Из чего состоит блочная модель?
Ответ для интервьюера:
Каждый элемент — это слоеный пирог из:
Content — сам контент
Padding — отступ внутри элемента
Border — рамка
Margin — внешний отступ
Что говорить дальше (чтобы выглядеть умно):
"По умолчанию width и height применяются только к content. Но если использовать box-sizing: border-box, то размеры будут включать padding и border. Это спасает от неожиданных переполнений и уже давно стандарт в CSS-reset."
Почему спрашивают:
99% багов с версткой — это когда ты забыл про margin или padding. Или когда box-sizing не тот.
2. Позиционирование: Static, Relative, Absolute, Fixed, Sticky
Вопрос: В чем разница между типами позиционирования?
Краткий ответ:
Static — обычное поведение (как будто
positionвообще не указан)Relative — смещение относительно своего нормального положения
Absolute — позиционирование относительно ближайшего позиционированного родителя
Fixed — относительно viewport (прилипает при скролле)
Sticky — гибрид relative и fixed (прилипает при достижении точки)
Подводный камень:
Absolute-элемент ищет родителя с position: relative/absolute/fixed. Если не находит — позиционируется относительно <body>. Это та самая причина, почему модалка иногда улетает в космос.
3. Flexbox — любимец всех верстальщиков
Вопрос: Как центрировать div по вертикали и горизонтали?
Ответ в 2026 году:
.container {
display: flex;
justify-content: center; /* по горизонтали */
align-items: center; /* по вертикали */
}Дополнительные очки:
"Есть еще Grid с place-items: center, но флекс — проще для одноосевых раскладок."
Если кто-то на собесе говорит про margin: 0 auto и таблицы — он либо застрял в 2010-м, либо проверяет, застрял ли ты. 😄
4. Grid vs Flexbox — вечный спор
Вопрос: Когда использовать Grid, а когда Flexbox?
Правильный ответ:
Flexbox — для одномерных раскладок (строка ИЛИ колонка)
Grid — для двумерных раскладок (строки И колонки одновременно)
Пример:
Навигация, карточки в ряд → Flexbox
Целый layout страницы, сложная сетка → Grid
5. Специфичность селекторов (Specificity)
Вопрос: Какой стиль применится?
#header .nav li { color: red; }
.nav li { color: blue; }
li { color: green; }Ответ:
Красный, потому что специфичность считается как (ID, Class, Tag):
Первый: (1, 1, 1) = 111
Второй: (0, 1, 1) = 11
Третий: (0, 0, 1) = 1
Лайфхак:!important перебивает всё, но использовать его — как писать код на CAPS LOCK. Технически работает, но все будут косо смотреть.
6. Семантический HTML — не просто модное слово
Вопрос: Зачем нужны семантические теги?
<header>, <nav>, <article>, <section>, <footer> — это не просто стильные <div>-ы.
Преимущества:
SEO — поисковики понимают структуру
Accessibility — скринридеры знают, что где
Читаемость кода — быстрее понять, что происходит
Анти-паттерн:
<div class="header">
<div class="nav">...</div>
</div>Это как называть переменную var1, var2 — работает, но зачем?
7. Псевдоклассы vs Псевдоэлементы
Вопрос: В чем разница?
Псевдоклассы (одно двоеточие):
a:hover { }
li:first-child { }
input:focus { }Выбирают элементы в определенном состоянии.
Псевдоэлементы (два двоеточия):
p::before { content: "👉 "; }
p::after { content: " 👈"; }Создают виртуальные элементы.
8. Z-index и контекст наложения
Вопрос: Почему мой элемент с z-index: 9999 всё равно под другим элементом?
Ответ:z-index работает только внутри своего stacking context (контекста наложения).
Создают новый контекст:
position: absolute/relative/fixed+z-indexopacity < 1transformfilterИ еще штук 10 свойств
Если видишь в кодеz-index: 99999, знай — тут кто-то отчаянно боролся с багом и проиграл.
9. Единицы измерения: px, em, rem, vh, vw
Вопрос: Какая разница?
Шпаргалка:
px — абсолютные пиксели
em — относительно размера шрифта родителя (каскадируется!)
rem — относительно размера шрифта
<html>(не каскадируется)vh/vw — процент от высоты/ширины viewport
% — относительно родителя
rem— лучший выбор для современной адаптивной верстки. Меняешь font-size на html — масштабируется всё.
10. Display: none vs Visibility: hidden vs Opacity: 0
Вопрос: Чем отличаются?
Ответ:
Свойство | Занимает место | Доступен для событий | Анимируется |
|---|---|---|---|
| ❌ | ❌ | ❌ |
| ✅ | ❌ | ❌ |
| ✅ | ✅ | ✅ |
Когда что использовать:
Полностью убрать —
display: noneСкрыть, сохранив место —
visibility: hiddenПлавное появление/исчезновение —
opacity
11. Адаптивность: Media Queries
Вопрос: Как сделать сайт адаптивным?
Базовый синтаксис:
/* Mobile first подход */
.container { width: 100%; }
@media (min-width: 768px) {
.container { width: 750px; }
}
@media (min-width: 1200px) {
.container { width: 1170px; }
}Современный тренд:
Использовать clamp() для плавного масштабирования:
font-size: clamp(1rem, 2vw, 2rem);12. CSS-переменные (Custom Properties)
Вопрос: Как работают CSS-переменные?
Пример:
:root {
--primary-color: #3498db;
--spacing: 16px;
}
.button {
background: var(--primary-color);
padding: var(--spacing);
}Преимущества перед Sass-переменными:
Можно менять через JavaScript
Поддерживают наследование
Работают нативно в браузере
13. Вертикальный margin collapse
Вопрос: Почему между двумя блоками margin не суммируется?
Ответ:
Вертикальные margin'ы схлопываются (берется больший). Это называется margin collapse.
Пример:
.block1 { margin-bottom: 20px; }
.block2 { margin-top: 30px; }
/* Расстояние между ними = 30px, а не 50px */Как отключить:
Flexbox/Grid контейнер
overflow: hiddenна родителеpaddingилиborderна родителе
14. Inline vs Inline-block vs Block
Вопрос: В чем разница?
Таблица истины:
Тип | Ширина/высота | На новой строке | Можно margin/padding |
|---|---|---|---|
| ❌ | ❌ | Только horizontal |
| ✅ | ❌ | ✅ Всё |
| ✅ | ✅ | ✅ Всё |
Жизненный пример:<span> — inline, <div> — block, а <button> по умолчанию — inline-block.
15. Псевдокласс :nth-child() и его друзья
Вопрос: Как выбрать каждый третий элемент?
Ответ:
li:nth-child(3n) { /* Каждый третий */ }
li:nth-child(odd) { /* Нечетные */ }
li:nth-child(even) { /* Четные */ }
li:nth-child(3n+1) { /* 1, 4, 7, 10... */ }Подводный камень::nth-child() считает всех соседей, даже разных типов. Если нужны только определенные — используй :nth-of-type().
🚀 А теперь про обучение (без занудства)
Окей, ты прочитал все эти вопросы, может, даже что-то законспектировал. Но давай честно — через неделю половина вылетит из головы. Так работает наш мозг.
Проблема: теория без практики — это как смотреть видео "Как научиться плавать". Понятно, но попробуй не утонуть.
Решение: Практика, практика, практика. И не просто "открыл редактор и написал три строки", а системно.
Вот где можно прокачаться реально:
Кодик — мобильное приложение для изучения программирования, где:
Теория дозируется по чуть-чуть (без перегруза)
Сразу же практика в интерактивных заданиях
Учишься прямо в телефоне (в метро, в очереди, где угодно)
Курсы по Python, JavaScript, HTML/CSS и другим технологиям
Фишка в том, что ты не просто читаешь "как работает flexbox", а тут же верстаешь настоящие элементы. Мышечная память формируется, и на собесе руки сами вспомнят синтаксис.
Бонус - Telegram-канал Кодик — сообщество, где мы делимся полезными постами и лайфхаками, обсуждаем свежие фичи языков и фреймворков, помогаем разобраться, если что-то не понятно.
Заключение: как не облажаться на собесе?
Три золотых правила:
Не паникуй, если не знаешь ответ. Лучше честно сказать "Не уверен, но предположу..." и порассуждать логически, чем нести околесицу.
Практика важнее зубрежки. Верстни pet-проекты, копируй любимые сайты, ломай и чини. Руками делать — лучше всего запоминается.
Понимание > Запоминание. Знать, что
display: flexделает элементы флексами — мало. Понимать, почему и когда это использовать — вот что нужно.
Удачи на собесах! Да пребудет с тобой флекс. 🚀