Этапы собеседования

System design на собеседовании: как вести секцию проектирования

Обновлено 7 мин чтения 45-60 минут Опытный инженер или архитектор, иногда двое
Содержание
  1. Коротко
  2. Что проверяют
  3. Как проходит
  4. Структура ответа: что сказать на каждом шаге
  5. Как оценить нагрузку за пять минут
  6. Типичные задачи и на чём они проверяют
  7. Частые вопросы внутри секции
  8. Для каких грейдов и чего ждут
  9. Фронтенд и мобильный варианты
  10. Вопросы из базы
  11. Частые ошибки
  12. Чек-лист подготовки
  13. Как тренировать
  14. Частые вопросы
Коротко

System design это секция на 45-60 минут, где вы проектируете систему вслух: сокращатель ссылок, ленту, чат, rate limiter. Правильного ответа нет, оценивают ход рассуждений: уточнили ли требования, прикинули ли нагрузку, выбрали ли хранилище и объяснили ли компромиссы. Обычно секцию дают с уровня middle, для senior она часто решающая. Готовиться стоит по одной структуре ответа и нескольким разобранным задачам.

Что проверяют

  • Умеете ли вы превратить расплывчатую задачу в список требований
  • Можете ли прикинуть нагрузку и объём данных порядком величины
  • Знаете ли строительные блоки: балансировщик, кеш, очередь, реплики, шардирование
  • Объясняете ли компромиссы, а не перечисляете модные технологии
  • Видите ли узкие места и точки отказа своей схемы
  • Ведёте ли разговор сами, не дожидаясь вопросов на каждом шаге

Как проходит

  1. 1

    Требования

    Функциональные: что делает система. Нефункциональные: нагрузка, задержка, доступность, консистентность. 5-10 минут.

  2. 2

    Оценка нагрузки

    Запросы в секунду, соотношение чтения и записи, объём данных за год. Грубо, порядком величины.

  3. 3

    API и модель данных

    Основные методы и сущности. Это скелет, на который ляжет остальное.

  4. 4

    Общая схема

    Клиент, балансировщик, сервисы, хранилища, кеш, очереди. Нарисуйте на доске и пройдите путь запроса.

  5. 5

    Углубление

    Интервьюер выбирает 1-2 места: хранилище, кеш, масштабирование. Здесь и оценивают глубину.

  6. 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?

Как отвечать
Отталкивайтесь от паттерна доступа. Реляционная база, когда нужны транзакции, связи и гибкие запросы. Ключ-значение или документная, когда доступ простой по ключу и нужна горизонтальная запись. Назовите цену выбора.
Тезисы ответа и тренировка вслух

Какие бывают стратегии кеширования?

Как отвечать
Cache-aside, write-through, write-back. Для каждой: кто пишет в кеш, что с консистентностью, что при падении кеша. Скажите про TTL и инвалидацию.
Тезисы ответа и тренировка вслух

Объясните CAP

Как отвечать
При сетевом разделении приходится выбирать между доступностью и согласованностью. Приведите пример, где важнее одно, где другое: баланс счёта против счётчика лайков.
Тезисы ответа и тренировка вслух

Kafka или RabbitMQ?

Как отвечать
Kafka это журнал с хранением и повторным чтением, хорош для потоков событий и большой пропускной способности. RabbitMQ это брокер с гибкой маршрутизацией и подтверждениями для очередей задач. Выбор от сценария.
Тезисы ответа и тренировка вслух

Как правильно делать ретраи?

Как отвечать
Только для идемпотентных операций или с ключом идемпотентности, с экспоненциальной паузой и случайным разбросом, с ограничением попыток. Иначе ретраи добивают и так перегруженный сервис.
Тезисы ответа и тренировка вслух

Вертикальное или горизонтальное масштабирование?

Как отвечать
Вертикальное: мощнее машина, просто, но есть потолок и одна точка отказа. Горизонтальное: больше машин, нужна балансировка и сервисы без состояния, данные сложнее.
Тезисы ответа и тренировка вслух

Для каких грейдов и чего ждут

ГрейдБывает ли секцияЧего ждут
JuniorРедкоПонимание клиент-сервера, базы, кеша и зачем нужна очередь
MiddleЧастоВнятная схема по структуре, разумный выбор хранилища, базовая оценка нагрузки
SeniorПочти всегдаГлубина в 1-2 местах, компромиссы, отказоустойчивость, ведение разговора
ТимлидЧастоТо же, что у senior, плюс как это строить командой и поэтапно

Что именно ждут по вашей роли и грейду, смотрите в разделе «Что должен знать».

Фронтенд и мобильный варианты

Фронтенду и мобильным разработчикам часто дают проектирование клиентской части. Структура та же, но фокус другой: состояние, рендеринг, кеш на клиенте, работа с сетью и офлайн.

  • Фронтенд: лента с бесконечной прокруткой, автодополнение, таблица на миллион строк, загрузка больших файлов. Вопросы в треке Архитектура фронтенда
  • Мобильная разработка: мессенджер, лента, синхронизация заметок офлайн, загрузка медиа. Вопросы в треке Архитектура мобильных приложений

Как вести такую секцию на фронте, разобрано в вопросе «Как вести секцию system design на фронте».

Вопросы из базы Техпрогона

Частые вопросы этого этапа с ответом и разбором. Откройте любой и попробуйте ответить сами.

Частые ошибки

  • Рисовать схему сразу, не уточнив требования
  • Перечислять технологии без объяснения, зачем они здесь
  • Проектировать для миллиарда пользователей, когда нужно для тысячи
  • Молчать и ждать вопросов вместо того, чтобы вести разговор
  • Не назвать ни одного компромисса своего решения
  • Забыть про отказы: что будет, если упадёт база или кеш
  • Утонуть в одной детали и не успеть показать общую картину

Чек-лист подготовки

  • Выучил структуру ответа и могу проговорить её за минуту
  • Умею оценить RPS и объём данных порядком величины
  • Знаю строительные блоки: балансировщик, кеш, очереди, реплики, шарды
  • Разобрал вслух 4-6 типичных задач по структуре
  • Подготовил ответы на SQL или NoSQL, кеширование, CAP, ретраи
  • Потренировался рисовать схему в онлайн-доске
  • Провёл хотя бы один мок с человеком, который задаёт уточняющие вопросы

Как тренировать этот этап в Техпрогоне

  • Уроки трека System design: подход к секции, масштабирование, кеш, хранилища, очереди, консистентность
  • Устные вопросы и разборы систем с чек-листом тезисов: отвечаете вслух и отмечаете, что назвали
  • Билеты по треку: вопросы на выбор решения и компромиссы, сдан при двух ошибках и меньше
  • Задачи на проектирование со схемой на доске в треке мобильной архитектуры: рисуете и сверяете с эталоном
  • Живой мок по ссылке: друг-интервьюер видит задачу и эталон, задаёт уточняющие вопросы и ставит оценку
  • Раздел «Что спрашивают»: какие темы проектирования встречались у пользователей по роли и этапу

Частые вопросы

С какого грейда спрашивают system design?
Чаще всего с middle. У junior секция встречается редко и проще: про клиент-сервер, базу и кеш. Для senior и тимлидов она обычно обязательна и сильно влияет на итог.
Нужно ли знать конкретные технологии?
Нужно понимать классы решений: реляционная база, ключ-значение, очередь, кеш. Конкретные названия помогают, если вы можете объяснить их свойства и почему выбрали именно их.
Есть ли правильный ответ на задачу system design?
Нет. Разные решения могут быть хорошими, если они следуют из требований и вы объясняете компромиссы. Плохой ответ это схема без обоснования.
Как готовиться к system design без опыта больших систем?
Выучите строительные блоки и структуру ответа, разберите вслух несколько типичных задач, читайте технические статьи компаний о своих системах. Затем проведите мок с человеком, который будет задавать уточняющие вопросы.
Сколько времени тратить на требования?
Обычно 5-10 минут из часа. Меньше рискованно: можно спроектировать не то. Больше тоже плохо: не останется времени на схему и углубление.
Чем system design отличается от архитектуры фронтенда?
Структура разговора та же, но фокус на клиенте: состояние, рендеринг, кеш в браузере, работа с сетью, производительность интерфейса. Бэкенд часто считают данным через API.

Отрепетируйте system design до собеса

Уроки, билеты, устные вопросы с тезисами и мок вслух с таймером. Бесплатный тариф без ограничения по времени.

Другие этапы и разделы