TGViewer
Baba Нюра's Wisdom Baba Нюра's Wisdom @babanyurawisdom · 226 subscribers
Post #819 120
ПЛАН ОТВЕТА НА SYSTEM DESIGN. ЧАСТЬ 1

Сегодня немного обсудим один из видов технических интервью — System Design.

Обычно это секция, где вам дают около часа на задачу с открытым ответом: «спроектируйте Amazon», «спроектируйте сервис такси» и т.д. Правильного ответа тут, в отличие от алгоритмической задачи, нет. Будут оценивать, как вы согласовываете требования, о чем думаете при проектировании системы, какие архитектурные паттерны используете. Такую секцию обычно не дают на младшие грейды (чаще Senior+).

Несмотря на то, что задача открытая, есть более-менее стандартный план, которому удобно следовать во время ответа. Сохраняйте себе как шпаргалку.

5–10 минут — сбор требований

Это один из самых важных этапов. Задача обычно сформулирована очень абстрактно. Если кандидат сразу бросается что-то рисовать — это скорее негативная отметка. В реальной работе так тоже не делают.

Даже если вас просят спроектировать Amazon и вы прекрасно знаете, что это такое, за час вы не сможете спроектировать весь Amazon. Только запутаете себя. Поэтому сначала уточняем требования.

1️⃣ Функциональные требования

Определяем, на каком сценарии фокусируемся.

Например, если проектируем покупку товара:
⬛поиск по тексту (и больше ничего: без фильтров, рекомендаций, скидок и т.д.);
⬛выбор товара из результатов поиска;
⬛добавление в корзину;
⬛покупка.
Максимально упрощаем себе жизнь, но оставляем базовый пользовательский сценарий.

2️⃣ Нефункциональные требования

Именно они сильнее всего влияют на архитектуру.
Например:
⬛сколько одновременно ожидается пользователей;
⬛сколько товаров хранится в системе;
⬛предполагается ли рост нагрузки;
⬛должен ли сервис работать 24/7 или только в рабочее время;
⬛нужен ли ответ пользователю мгновенно или подтверждение покупки можно отправить через час.

Ответ на каждый из этих вопросов влияет на итоговый дизайн.

15–20 минут — высокоуровневый дизайн

Проектируем API.
Например:
1️⃣search
Вход:
{
"text": "iphone"
}

Выход:
{
"products": [
{
"id": 1,
"name": "Best One",
"price": 100
}
]
}

2️⃣add-to-cart
Вход:
{
"id": 1,
"count": 5
}

Выход:
yes / no

3️⃣buy
Вход:
{}

Выход:
yes / no

Дальше набрасываем модель данных:
⬛описание товара;
⬛стоимость;
⬛остатки на складе;
⬛изображение товара.

Потом рисуем архитектуру.
Например:
🤩сервис поиска;
🤩сервис авторизации;
🤩сервис склада;
🤩сервис оплаты;
🤩база данных;
🤩балансировщик нагрузки.

В целом эти этапы можно менять местами. Но проектирование API я бы оставила первым. Очень часто именно оно помогает понять, какие компоненты вообще должны существовать в системе.

Продолжим завтра!

#бабанюра_заходит_в_айти
  • ❤ 2
  • 🔥 2
  • 🤓 1
  • 👨‍💻 1
More from @babanyurawisdom
  1. Sep 28, 2026ВЕДИ СЕБЯ КВАЗИСЛУЧАЙНО. ЧАСТЬ I Если вас попросят загадать случайное число, то ваш мозг л…
  2. Sep 25, 2026ПОДАРОК СО СМЫСЛОМ Снова в том возрасте, когда уместно дарить родителям подарки, сделанные…
  3. Sep 23, 2026САПОЖНИК БЕЗ САПОГ Не так давно на работе закончилось очередное ревью. Можно поздравить с…
  4. Sep 22, 2026КЮРАСАО Вторая страна для изучения после ЧМ-2026 — Кюрасао. Я по себя называю её исключите…
  5. Sep 21, 2026Post #832
  6. Sep 18, 2026ГРАФ МОНТЕ-КРИСТО. СЕРИАЛ Мы с Александром Юрьевичем почти никогда не смотрим сериалы. Зна…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →