Skip to main content

Как пройти System Design интервью: плейбук senior-инженера

Большинство советов по system design — теоретический шум. Это повторяемый фреймворк, который я использую для оценки кандидатов — и который вы можете использовать, чтобы пройти любое system design интервью на mid или senior.

Как пройти System Design интервью: плейбук senior-инженера

System design интервью пугают большинство разработчиков, потому что задача неограниченна. «Спроектируй Twitter». «Спроектируй URL-shortener». «Спроектируй распределённый кеш». С чего вообще начать?

После 100+ технических интервью и менторинга инженеров для FAANG и MAANG я свёл процесс к повторяемому фреймворку. Вот он.

6-шаговый фреймворк

Шаг 1: Уточните требования (5 минут)

Никогда не начинайте проектировать без этих вопросов:

  • Масштаб: Сколько пользователей? Read-heavy или write-heavy? Ожидаемые QPS (запросы в секунду)?
  • Consistency vs availability: Нормально ли отдавать слегка устаревшие данные? Можем ли потерять запись?
  • География: Один регион или глобально?
  • SLA: Какая допустимая latency? Требование к uptime?

Большинство кандидатов это пропускают и сразу рисуют квадратики. Интервьюеры замечают. Senior сначала задаёт вопросы.

Шаг 2: Определите API-контракт

До любой инфраструктуры — что система отдаёт наружу:

POST /urls
Body: { "long_url": "https://example.com/very-long-path" }
Response: { "short_code": "abc123", "short_url": "https://short.ly/abc123" }

GET /{short_code}
Response: 301 Redirect to long_url

Это заставляет думать о пользовательском контракте до деталей реализации.

Шаг 3: Оцените масштаб (back-of-envelope)

Считайте вслух:

  • «100M URL в день = ~1 200 записей/сек»
  • «Соотношение read/write 10:1 = 12 000 чтений/сек»
  • «Средний URL ~500 байт, 100M/день × 365 дней × 500 байт = ~18ТБ/год»

Точные числа не нужны. Нужно показать, что вы мыслите порядками величин.

Шаг 4: Спроектируйте data model

SQL vs NoSQL — почти всегда первое реальное решение:

ФакторВ пользу SQLВ пользу NoSQL
Нужна strong consistency
Сложные join’ы / отчёты
Горизонтальный масштаб 100M+ строкСложнее
Схема стабильнаЛюбое
Access pattern — key-valueЛюбое

Для URL-shortener простой key-value (Redis или DynamoDB) для lookup — правильный выбор. Метаданные (время создания, click-аналитика) — в PostgreSQL.

Шаг 5: Компоненты системы

Рисуйте квадратики и объясняйте каждый:

Client → CDN/Load Balancer → API Servers (stateless)
                           → Redis (short_code → long_url кеш)
                           → PostgreSQL (метаданные, аналитика)

Затем разбирайте сложное:

  • Генерация short_code: Base62 от auto-increment ID, либо hash + обработка коллизий
  • Cache invalidation: TTL на записях Redis, write-through на создании
  • Rate limiting: per-IP, алгоритм token bucket

Шаг 6: Bottlenecks и trade-offs

Здесь senior отделяется от mid’а. Проактивно обсуждайте:

  • Single points of failure: «БД — SPOF; добавим read-реплики и primary failover»
  • Горячие партиции: «Если short URL виральный, один Redis-нод бьётся; consistent hashing распределяет нагрузку»
  • Стоимость vs производительность: «CDN-кеширование экономит 90% обращений к origin, но добавляет риск stale-редиректов для удалённых URL»

Что интервьюеры реально оценивают

  1. Коммуникацию: Можете объяснить мысли вслух?
  2. Системную декомпозицию: Разбиваете задачу на части?
  3. Awareness trade-off’ов: Понимаете, что идеального ответа нет?
  4. Production-mindset: Думаете о failure modes, не только о happy path?

Не проверяют, помните ли вы наизусть архитектурные диаграммы. Проверяют, как вы думаете.

Единственное практическое упражнение, которое работает

Возьмите любое приложение, которым пользуетесь ежедневно (Slack, Netflix, мобильный банк). За 20 минут на бумаге набросайте:

  • Какие основные сущности?
  • Какое соотношение read/write?
  • Где bottlenecks?
  • Как масштабировать в 10× к текущей нагрузке?

Сделайте это 20 раз. И белая доска перестанет пугать.


Мышление system design мы разбираем в курсе Backend Architecture Foundations — где учат думать как senior до того, как им станешь.

Поделиться
X LinkedIn
Следующий шаг

Закрепите эту тему на курсе

Структурированный путь от теории к production-коду — с проектами и код-ревью.

Oleksii Anzhiiak

Автор статьи

Oleksii Anzhiiak

Софтвер-архитектор, Senior .NET инженер и со-основатель

Алексей Анжияк — софтвер-архитектор, Senior .NET инженер и со-основатель ToyCRM.com и ProfectusLab. Имея более 15 лет опыта, он специализируется на распределённых системах, облачной инфраструктуре, высоконагруженной backend-разработке и платформах аутентификации. Занимается проектированием архитектуры, созданием безопасных систем авторизации и разработкой современных образовательных программ, которые помогают студентам получить реальные карьерные результаты.

LinkedIn →

Рекомендуем посмотреть

Подобранные сторонние видео по теме. Открываются на YouTube.

~8:00:00
Средний AI Engineer (AI Engineer World's Fair)

AI Engineer World's Fair 2024 — кейноуты и трек CodeGen

Кейноут-стрим крупнейшей технической AI-конференции 2024. Снимок состояния AI-инженерии — что выкатили, что сработало, что нет — от команд, которые это строят.

~1:56:00
Продвинутый Andrej Karpathy

Создаём GPT с нуля

Редкий практический разбор внутреннего устройства GPT — от теории к коду. Для инженеров, а не пользователей.

~27:00
Средний 3Blue1Brown

Трансформеры — технология за LLM (Deep Learning, глава 5)

Фирменное визуальное объяснение архитектуры трансформера от 3Blue1Brown. Лучший 30-минутный праймер для инженеров — сначала интуиция, потом математика.

Связаться с нами