Этапы собеседования
System design на собеседовании: как вести секцию проектирования
Содержание
- Коротко
- Что проверяют
- Как проходит
- Структура ответа: что сказать на каждом шаге
- Как оценить нагрузку за пять минут
- Типичные задачи и на чём они проверяют
- Частые вопросы внутри секции
- Для каких грейдов и чего ждут
- Фронтенд и мобильный варианты
- Вопросы из базы
- Частые ошибки
- Чек-лист подготовки
- Как тренировать
- Частые вопросы
System design это секция на 45-60 минут, где вы проектируете систему вслух: сокращатель ссылок, ленту, чат, rate limiter. Правильного ответа нет, оценивают ход рассуждений: уточнили ли требования, прикинули ли нагрузку, выбрали ли хранилище и объяснили ли компромиссы. Обычно секцию дают с уровня middle, для senior она часто решающая. Готовиться стоит по одной структуре ответа и нескольким разобранным задачам.
Что проверяют
- Умеете ли вы превратить расплывчатую задачу в список требований
- Можете ли прикинуть нагрузку и объём данных порядком величины
- Знаете ли строительные блоки: балансировщик, кеш, очередь, реплики, шардирование
- Объясняете ли компромиссы, а не перечисляете модные технологии
- Видите ли узкие места и точки отказа своей схемы
- Ведёте ли разговор сами, не дожидаясь вопросов на каждом шаге
Как проходит
- 1
Требования
Функциональные: что делает система. Нефункциональные: нагрузка, задержка, доступность, консистентность. 5-10 минут.
- 2
Оценка нагрузки
Запросы в секунду, соотношение чтения и записи, объём данных за год. Грубо, порядком величины.
- 3
API и модель данных
Основные методы и сущности. Это скелет, на который ляжет остальное.
- 4
Общая схема
Клиент, балансировщик, сервисы, хранилища, кеш, очереди. Нарисуйте на доске и пройдите путь запроса.
- 5
Углубление
Интервьюер выбирает 1-2 места: хранилище, кеш, масштабирование. Здесь и оценивают глубину.
- 6
Узкие места
Что сломается первым при росте в 10 раз, где точки отказа, как мониторить.
Структура ответа: что сказать на каждом шаге
Секция проходит лучше, когда вы ведёте её по понятному плану и проговариваете его вслух в начале. Интервьюеру легко следить, а вам сложнее забыть важный шаг. Подробнее о ведении секции в вопросе «Как вы ведёте секцию system design».
| Шаг | Ключевые вопросы | Результат на доске |
|---|---|---|
| Требования | Кто пользователи, какие сценарии главные, что можно не делать | Список функций и нефункциональных требований |
| Нагрузка | Сколько пользователей в день, сколько запросов на одного, сколько весит запись | RPS чтения и записи, объём данных |
| API | Какие методы нужны клиенту, что на входе и выходе | 3-5 методов |
| Данные | Какие сущности, как к ним обращаются, нужны ли транзакции | Схема и выбор хранилища |
| Схема | Через что проходит запрос, где состояние | Блоки и стрелки |
| Масштаб | Что делать при росте нагрузки и данных | Реплики, шарды, кеш, очереди |
| Надёжность | Что если упадёт сервис, база, сеть | Ретраи, резервирование, мониторинг |
Как оценить нагрузку за пять минут
Оценка нужна не ради точности, а чтобы решения были обоснованы: поместится ли всё в одну базу, нужен ли кеш, сколько серверов. Считайте порядком величины и округляйте смело.
- В сутках примерно 86 400 секунд, для оценки удобно брать 100 000
- Пиковая нагрузка обычно в несколько раз выше средней, назовите свой множитель
- Соотношение чтения и записи определяет, помогут ли реплики и кеш
- Объём данных: число записей в день × размер записи × срок хранения
Допустим, 10 млн новых ссылок в день. Это примерно 100 записей в секунду в среднем. Переходов в 100 раз больше: около 10 000 чтений в секунду. Запись около 500 байт, за год примерно 3,6 млрд ссылок и 1,8 ТБ. Вывод: чтений много, их стоит кешировать, а данные со временем придётся шардировать.
Типичные задачи и на чём они проверяют
| Задача | Главная сложность | Разбор |
|---|---|---|
| Сокращатель ссылок | Генерация коротких ключей, много чтений, кеш | Разбор |
| Rate limiter | Алгоритм ограничения, распределённый счётчик | Разбор |
| Лента новостей | Рассылка при записи или сборка при чтении, популярные авторы | Разбор |
| Мессенджер | Доставка в реальном времени, порядок сообщений, офлайн | Разбор |
| Сервис уведомлений | Очереди, ретраи, дедупликация, разные каналы | Разбор |
| Подсказки поиска | Префиксное дерево, задержка, обновление популярности | Разбор |
Частые вопросы внутри секции
Даже если задача целиком незнакома, внутри неё всплывают одни и те же вопросы. Ответы на них стоит подготовить отдельно.
SQL или NoSQL?
Какие бывают стратегии кеширования?
Объясните CAP
Kafka или RabbitMQ?
Как правильно делать ретраи?
Вертикальное или горизонтальное масштабирование?
Для каких грейдов и чего ждут
| Грейд | Бывает ли секция | Чего ждут |
|---|---|---|
| Junior | Редко | Понимание клиент-сервера, базы, кеша и зачем нужна очередь |
| Middle | Часто | Внятная схема по структуре, разумный выбор хранилища, базовая оценка нагрузки |
| Senior | Почти всегда | Глубина в 1-2 местах, компромиссы, отказоустойчивость, ведение разговора |
| Тимлид | Часто | То же, что у senior, плюс как это строить командой и поэтапно |
Что именно ждут по вашей роли и грейду, смотрите в разделе «Что должен знать».
Фронтенд и мобильный варианты
Фронтенду и мобильным разработчикам часто дают проектирование клиентской части. Структура та же, но фокус другой: состояние, рендеринг, кеш на клиенте, работа с сетью и офлайн.
- Фронтенд: лента с бесконечной прокруткой, автодополнение, таблица на миллион строк, загрузка больших файлов. Вопросы в треке Архитектура фронтенда
- Мобильная разработка: мессенджер, лента, синхронизация заметок офлайн, загрузка медиа. Вопросы в треке Архитектура мобильных приложений
Как вести такую секцию на фронте, разобрано в вопросе «Как вести секцию system design на фронте».
Вопросы из базы Техпрогона
Частые вопросы этого этапа с ответом и разбором. Откройте любой и попробуйте ответить сами.
- Как вы ведёте секцию system designSystem design
- Как вести секцию system design на фронтеАрхитектура фронтенда
- Вертикальное и горизонтальное масштабированиеSystem design
- Аутентификация и сессииАрхитектура фронтенда
- Стратегии кешированияSystem design
- Автодополнение поискаАрхитектура фронтенда
- SQL или NoSQLSystem design
- Чат в реальном времениАрхитектура фронтенда
- Kafka против RabbitMQSystem design
- Оформление заказа с оплатойАрхитектура фронтенда
- Объясните CAPSystem design
- Дашборд с виджетамиАрхитектура фронтенда
Частые ошибки
- Рисовать схему сразу, не уточнив требования
- Перечислять технологии без объяснения, зачем они здесь
- Проектировать для миллиарда пользователей, когда нужно для тысячи
- Молчать и ждать вопросов вместо того, чтобы вести разговор
- Не назвать ни одного компромисса своего решения
- Забыть про отказы: что будет, если упадёт база или кеш
- Утонуть в одной детали и не успеть показать общую картину
Чек-лист подготовки
- Выучил структуру ответа и могу проговорить её за минуту
- Умею оценить RPS и объём данных порядком величины
- Знаю строительные блоки: балансировщик, кеш, очереди, реплики, шарды
- Разобрал вслух 4-6 типичных задач по структуре
- Подготовил ответы на SQL или NoSQL, кеширование, CAP, ретраи
- Потренировался рисовать схему в онлайн-доске
- Провёл хотя бы один мок с человеком, который задаёт уточняющие вопросы
Как тренировать этот этап в Техпрогоне
- Уроки трека System design: подход к секции, масштабирование, кеш, хранилища, очереди, консистентность
- Устные вопросы и разборы систем с чек-листом тезисов: отвечаете вслух и отмечаете, что назвали
- Билеты по треку: вопросы на выбор решения и компромиссы, сдан при двух ошибках и меньше
- Задачи на проектирование со схемой на доске в треке мобильной архитектуры: рисуете и сверяете с эталоном
- Живой мок по ссылке: друг-интервьюер видит задачу и эталон, задаёт уточняющие вопросы и ставит оценку
- Раздел «Что спрашивают»: какие темы проектирования встречались у пользователей по роли и этапу
Частые вопросы
С какого грейда спрашивают system design?
Нужно ли знать конкретные технологии?
Есть ли правильный ответ на задачу system design?
Как готовиться к system design без опыта больших систем?
Сколько времени тратить на требования?
Чем system design отличается от архитектуры фронтенда?
Отрепетируйте system design до собеса
Уроки, билеты, устные вопросы с тезисами и мок вслух с таймером. Бесплатный тариф без ограничения по времени.
Другие этапы и разделы
Алгоритмы
Узнаёте ли вы паттерн задачи по условию
Лайвкодинг
Понимаете ли вы задачу до того, как начали писать код
Финал с командой
Подходите ли вы команде по стилю работы и общению
Техскрининг
Знаете ли вы базу своего стека без подсказок
Все этапы собеседования
Схема найма от отклика до оффера и сроки
Что должен знать junior, middle, senior
Темы и частые вопросы по 30 профессиям
Как войти в IT с нуля
Выбор профессии и план обучения по шагам