System Design
Вопросы:
1. Что такое System Design и зачем он нужен?
2. В чем разница между функциональными и нефункциональными требованиями? Приведите примеры.
3. Объясните основные преимущества и недостатки монолитной архитектуры по сравнению с микросервисной.
4. Что такое CAP-теорема? Расскажите о её дополнениях и практическом применении.
5. Чем отличаются горизонтальное и вертикальное масштабирование? В каких случаях применяют каждое?
6. Опишите стратегии масштабирования: read/write split, кеширование, партиционирование. Какие проблемы они решают?
7. Что такое Load Balancer и Reverse Proxy? Какова их роль в системе?
8. В чем отличие SQL и NoSQL баз данных? Как влияет выбор на архитектуру системы?
9. Как выбрать СУБД для конкретного проекта? Рассмотрите примеры PostgreSQL, MongoDB, Cassandra.
10. Что такое шардирование (sharding) и как оно помогает масштабировать базы данных?
11. Объясните, что такое репликация данных и какие существуют её виды.
12. Что такое проблема N+1 и как её избежать?
13. В чем разница между batch и stream обработкой данных? Когда применять каждую?
14. Как индексы влияют на производительность базы данных? Какие бывают типы индексов?
15. Почему и когда необходимо использовать кэширование в системах?
16. Перечислите и объясните виды кэша: клиентский, CDN, серверный (Redis/Memcached).
17. Опишите алгоритмы балансировки нагрузки: Round Robin, Least Connections, Hash-based. В каких случаях их применяют?
18. Что такое Nginx, HAProxy, ELB? Какую роль они играют в инфраструктуре?
19. Что такое health checks и зачем их используют?
20. Объясните проблемы race conditions и lost updates в распределённых системах. Как их избежать?
21. Расскажите про eventual consistency. В каких системах её использование оправдано?
22. Сравните принципы ACID и BASE. Где и когда применяются обе модели?
23. Что такое MVCC и уровни изоляции транзакций в базах данных?
24. Опишите назначение и отличия message brokers: RabbitMQ, Kafka, SQS.
25. Как работают очереди задач и фоновые воркеры? Какие преимущества они дают?
26. Что такое retrying и Dead Letter Queue (DLQ)? Как с ними работать?
27. Объясните механизмы replication, failover и heartbeats в высокодоступных системах.
28. Что такое паттерны Circuit Breaker, Retry и Timeout в контексте устойчивости системы?
29. Что такое backpressure? Как его реализовать в потоковых системах?
30. Почему важно использовать HTTPS и TLS? Как они обеспечивают безопасность?
31. Что такое rate limiting и как его реализовать на уровне API?
32. Объясните угрозы CORS, CSRF, XSS и SQL Injection. Как защититься от них?
33. Для чего используются Prometheus, Grafana и ELK Stack в мониторинге?
34. Опишите что такое трассировка (tracing) в распределённых системах, приведите примеры OpenTelemetry, Jaeger.
35. Как определяются и используются метрики SLA, SLO, SLI? Почему важны health checks?
36. Что такое optimistic locking и pessimistic?