System design на собеседовании

Не «нарисуйте 47 сервисов», а разговор о том, как вы проектируете под реальные ограничения: трафик, сбои, стоимость и сроки.

Раунд system design (проектирование систем) обычно появляется с уровня middle+ в компаниях с распределёнными продуктами. Длительность 45–60 минут. Задача звучит бытовой: лента, чат, загрузка файлов, биллинг, поиск. Интервьюер смотрит не на «единственно верную» схему, а на процесс мышления.

Чем отличается от live coding

На технической секции фокус на алгоритме и коде в одном процессе. В system design — компоненты, протоколы, хранение, кэш, очереди, консистентность, мониторинг. Код могут не писать вовсе; важны диаграмма на доске и устные компромиссы.

Рабочая структура часа

  1. Уточнение требований — пользователи, сценарии, SLA, объём данных, географии.
  2. Оценка нагрузки — порядок RPS, размер объектов, рост (грубые цифры лучше, чем молчание).
  3. Высокоуровневая схема — клиент, API, сервисы, БД, кэш, очередь.
  4. Углубление — модель данных, шардирование, индексы, hot paths.
  5. Надёжность — отказы, репликация, деградация, идемпотентность.
  6. Наблюдаемость и эволюция — метрики, логи, что сделаете в первую неделю vs через год.

Типичные темы

  • CAP и выбор между консистентностью и доступностью в конкретном сценарии;
  • кэш (CDN, Redis) и инвалидация;
  • очереди и асинхронная обработка;
  • идемпотентность платежей и заказов;
  • rate limiting и защита от злоупотреблений;
  • поиск и индексация при больших объёмах.

Как готовиться

Разберите 3–4 классических кейса вслух с таймером. Читайте postmortem крупных сервисов — не ради заучивания, а ради языка trade-offs. Повторите основы БД и сетей из вашего стека. На junior-грейде этот раунд могут заменить обсуждением pet-проекта; на staff добавят организационный контекст (несколько команд, legacy).

После раунда

Запишите формулировку задачи и вашу финальную схему — пригодится, если будет второй design с другим интервьюером. Дальше часто идут fit и финал с менеджером — полная цепочка этапов.