Раунд system design (проектирование систем) обычно появляется с уровня middle+ в компаниях с распределёнными продуктами. Длительность 45–60 минут. Задача звучит бытовой: лента, чат, загрузка файлов, биллинг, поиск. Интервьюер смотрит не на «единственно верную» схему, а на процесс мышления.
Чем отличается от live coding
На технической секции фокус на алгоритме и коде в одном процессе. В system design — компоненты, протоколы, хранение, кэш, очереди, консистентность, мониторинг. Код могут не писать вовсе; важны диаграмма на доске и устные компромиссы.
Рабочая структура часа
- Уточнение требований — пользователи, сценарии, SLA, объём данных, географии.
- Оценка нагрузки — порядок RPS, размер объектов, рост (грубые цифры лучше, чем молчание).
- Высокоуровневая схема — клиент, API, сервисы, БД, кэш, очередь.
- Углубление — модель данных, шардирование, индексы, hot paths.
- Надёжность — отказы, репликация, деградация, идемпотентность.
- Наблюдаемость и эволюция — метрики, логи, что сделаете в первую неделю vs через год.
Типичные темы
- CAP и выбор между консистентностью и доступностью в конкретном сценарии;
- кэш (CDN, Redis) и инвалидация;
- очереди и асинхронная обработка;
- идемпотентность платежей и заказов;
- rate limiting и защита от злоупотреблений;
- поиск и индексация при больших объёмах.
Как готовиться
Разберите 3–4 классических кейса вслух с таймером. Читайте postmortem крупных сервисов — не ради заучивания, а ради языка trade-offs. Повторите основы БД и сетей из вашего стека. На junior-грейде этот раунд могут заменить обсуждением pet-проекта; на staff добавят организационный контекст (несколько команд, legacy).
После раунда
Запишите формулировку задачи и вашу финальную схему — пригодится, если будет второй design с другим интервьюером. Дальше часто идут fit и финал с менеджером — полная цепочка этапов.