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 років досвіду у розподілених системах, хмарній інфраструктурі, high-load backend-розробці та identity-платформах. Проєктує складні архітектури, створює безпечні системи автентифікації та розробляє сучасні освітні програми, які допомагають студентам досягати реальних кар'єрних результатів.

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-хвилинний праймер для інженерів — спочатку інтуїція, потім математика.

Зв'язатися з нами