Фреймворк ответа на System Design интервью
↑ 8.4 Backend System Design · → Следующая
Зачем это на собесе
Структура ответа важнее конкретной технологии: интервьюер оценивает ход мысли, компромиссы и умение общаться.
Объяснение
Порядок ответа на 45–60 минут:
| Шаг | Время | Что делать |
|---|---|---|
| 1. Требования | 5–8 мин | функциональные (что делает система), нефункциональные (нагрузка, задержка, доступность, согласованность, безопасность); что вне рамок |
| 2. Оценка нагрузки | 3–5 мин | пользователи, RPS, объём данных, соотношение чтение/запись (см. Оценка нагрузки: RPS, объём данных, back-of-the-envelope) |
| 3. API и модель данных | 5–8 мин | основные эндпоинты/события, сущности, ключи, индексы |
| 4. Верхнеуровневая схема | 8–10 мин | клиенты → балансировщик → сервисы → хранилища/кэш/очередь |
| 5. Углубление | 10–15 мин | узкие места: масштабирование БД, кэш, очереди, согласованность |
| 6. Надёжность и наблюдаемость | 3–5 мин | отказы, репликация, мониторинг, деградация, безопасность |
| 7. Компромиссы | 2–3 мин | что выбрали и почему, альтернативы, что улучшить |
Правила общения:
- Уточняйте требования, не начинайте рисовать сразу.
- Проговаривайте допущения и цифры.
- Начинайте с простого решения и итеративно усложняйте под нагрузку.
- Для каждого выбора называйте компромисс («Kafka даёт replay, но сложнее в эксплуатации»).
- Управляйте временем и вовлекайте интервьюера в выбор глубины.
Типовые «кирпичики»: DNS, CDN, балансировщик (L4/L7), API Gateway, stateless-сервисы, кэш (Redis), реляционная БД + реплики, шардирование, NoSQL, очереди/потоки, объектное хранилище, поиск, аналитическое хранилище, планировщик, наблюдаемость.
Нюансы и подводные камни
- Погружение в технологию вместо требований.
- Переусложнение (микросервисы и Kafka «для красоты»).
- Молчание при размышлении: говорите вслух.
- Игнорирование нефункциональных требований и сбоев.
- Отсутствие итогового резюме решения.
Практика
- Проведите пробное интервью на тему «URL shortener» на 45 минут с таймером.
- Составьте свой шаблон ответа и чек-лист нефункциональных вопросов.
- Запишите ответ голосом и оцените структуру.
Вопросы с ответами
С чего начинать System Design?
С требований и ограничений: функциональных, нагрузочных, нефункциональных.
Что оценивает интервьюер?
Структурность, понимание компромиссов, умение оценить нагрузку и обосновать выбор.