System Design собеседование: универсальный фреймворк (с примерами)
•автор MicroStudio
System Design собеседование: универсальный фреймворк (с примерами)
System design проверяет структурность, умение выбирать компромиссы и ясность мышления. Сильный кандидат не начинает с Kafka, а сначала фиксирует задачу.
1) Уточните цель (и что такое “успех”)
Задайте 3–5 вопросов, чтобы не строить не то:
- Сколько пользователей? Пиковый RPS? Одна страна или глобально?
- Целевая задержка (p50/p95)? Доступность?
- Хранение данных? Сроки? Регуляторика?
- Преобладают чтения или записи? Нужен real-time?
2) Обозначьте MVP-скоуп
Скажите, что делаете и что не делаете:
- “MVP: посты, лента, лайки. Без рекомендаций и личных сообщений.”
3) Сущности и модель данных
Запишите объекты и связи:
- User, Post, Follow, Like, Comment
- Кардинальности: 1-to-many, many-to-many
4) API (попроще)
Покажите минимальный набор:
POST /posts
GET /feed?cursor=...
POST /posts/{id}/like
GET /users/{id}
5) Архитектура верхнего уровня
Сначала простая схема, потом масштабирование:
- CDN + app servers
- Основная БД (Postgres / MySQL)
- Redis для горячих чтений
- Воркеры для fanout / индексов
6) Самое важное: решения для масштабирования
Классические точки:
- Пагинация: cursor-based лучше offset-based для больших лент
- Read path: кэш горячих лент, избегайте N+1
- Write path: очередь и асинхрон для не-критичных задач
7) Компромиссы (проговаривайте)
Это любят интервьюеры:
- “Предрасчет ленты снижает задержку, но удорожает запись.”
- “Согласованность vs доступность: что важнее в этой задаче?”
8) Чеклист (можно использовать всегда)
- Требования (функциональные + нефункциональные)
- Модель данных
- API
- Архитектурная схема
- Узкие места + решения
- Компромиссы
- Наблюдаемость (логи/метрики/трейсы)
Если вы спокойно проходите по этому плану за 30–40 минут, вы уже сильнее большинства кандидатов.