Зачем на .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.*