← Все гайды

C# / .NET

System design на собеседовании .NET Middle/Senior: как готовиться

System design (проектирование систем) на собеседовании .NET-разработчика Middle и Senior: типовые задачи, структура ответа, пример на ASP.NET Core и подготовка с mock.

Зачем на .NET-собесе спрашивают system design

На Middle+ в продуктовых командах и fintech backend-разработчик — не «кодер задач», а инженер, который проектирует сервисы. System design на собеседовании .NET проверяет:

  • мыслите ли вы масштабом (RPS, data size);
  • знаете ли trade-offs (SQL vs cache vs queue);
  • умеете ли говорить структурно под pressure.

Это не рисование C4 на час — обычно 30–45 минут на одну задачу.

Типовые задачи system design для .NET backend

  • Notification service (push/email/SMS).
  • Rate limiter для API.
  • Payment / billing pipeline с идемпотентностью.
  • Feed или catalog с кэшем.
  • File upload / media processing.
  • Migration monolith → services (high level).

Интервьюер смотрит процесс, не «единственно верный» ответ.

Структура ответа за 45 минут

1. Уточнения (3–5 мин) — пользователи, SLA, read/write ratio, geo.

2. High-level (5–10 мин) — клиент → API (ASP.NET Core) → DB / cache / queue.

3. Deep dive (15–20 мин) — одна-две подсистемы: schema, API contracts, failure.

4. Scale & ops (5–10 мин) — sharding, monitoring, deployment.

5. Trade-offs (5 мин) — что вы сознательно не делаете на v1.

Говорите вслух. Молчание хуже неверной гипотезы с оговоркой «проверим на load test».

Пример: notification service на .NET

Запрос: «Спроектируй сервис уведомлений на 1M пользователей».

Скелет ответа:

  • API: ASP.NET Core, REST или minimal API, JWT auth.
  • Write path: POST /notifications → validate → publish to RabbitMQ.
  • Workers: .NET worker service, шаблоны email/push, retry + dead letter.
  • Storage: PostgreSQL — статус delivery, idempotency key.
  • Read path: GET history — cache Redis, TTL 5 min.
  • Scale: horizontal workers, partition queue by user_id hash.

Упомяните outbox pattern, если обсуждаете транзакции БД + очередь — это плюс на fintech-собесе.

Что часто ломает .NET-кандидатов

  • Сразу 15 микросервисов без обоснования.
  • Забыть про идемпотентность и duplicate delivery.
  • Не назвать observability (logs, metrics, traces — OpenTelemetry в .NET).
  • Игнорировать DI и bounded contexts — всё в одном DbContext «для простоты».

Как тренировать system design

1. Раз в 2 дня — одна задача на доске (Excalidraw), таймер 45 мин.

2. Запись экрана + self-review.

3. Mock с ментором на system design — один такой mock = месяц самостоятельной теории.

Техника C# без design на Senior часто не проходит bar.

Связанные материалы

---

*System design mock с руководителем разработки — excalib.ru/#apply.*