System Design
Вопросы:
1. Что такое System Design и почему оно важно в разработке крупных IT-систем?
2. Какие основные этапы включает процесс проектирования системы?
3. Как определить функциональные и нефункциональные требования при начале разработки системы?
4. Какие критерии следует учитывать при оценке масштабируемости системы?
5. В чем разница между горизонтальным и вертикальным масштабированием, и в каких случаях применяется каждый из них?
6. Что такое показатели SLA и как они влияют на выбор архитектурных решений?
7. Какие метрики важны для мониторинга производительности системы?
8. Объясните понятие отказоустойчивости и как ее можно обеспечить в системе.
9. Какие виды сбоев бывают в распределенных системах и как их можно минимизировать?
10. Что такое архитектурные паттерны, и какие из них наиболее часто используются (например, монолит, микросервисы)?
11. Что представляет собой микросервисная архитектура, и какие преимущества она дает по сравнению с монолитной?
12. Какие сложности могут возникнуть при внедрении микросервисной архитектуры?
13. Как принципы SOLID помогают в проектировании масштабируемых и поддерживаемых систем?
14. В чем разница между синхронной и асинхронной коммуникацией между сервисами?
15. Как работает eventual consistency и где она находит применение?
16. Объясните CAP теорему и как она отражается на выборе архитектуры распределенной системы.
17. Как сбалансировать компромисс между согласованностью, доступностью и устойчивостью системы в условиях CAP теоремы?
18. Какие стратегии можно использовать для обеспечения горизонтальной масштабируемости приложения?
19. Какую роль играет кэширование в System Design и какие типы кэшей существуют?
20. Что такое CDN и каким образом его использование улучшает пользовательский опыт?
21. В чем заключается принцип lazy loading и как он помогает оптимизировать работу системы?
22. Какие типы баз данных (SQL vs NoSQL) подходят для систем с высокой нагрузкой, и в чем их преимущества?
23. В каких сценариях оправдан выбор реляционной базы данных, а когда предпочтительнее NoSQL?
24. Объясните концепцию шардирования (partitioning) и как она помогает масштабировать базы данных.
25. Что такое репликация данных и как она повышает отказоустойчивость системы?
26. Какие методы разделения данных (data partitioning, horizontal partitioning) можно применять при проектировании масштабируемых систем?
27. Как использование очередей сообщений (message queues) помогает в построении распределенных систем?
28. Объясните разницу между моделями коммуникации publish/subscribe и point-to-point.
29. Что такое event-driven архитектура и чем она полезна для построения масштабируемых систем?
30. Какие примеры real-time processing систем вы знаете, и какие особенности их проектирования?
31. Какую роль играют брокеры сообщений, такие как RabbitMQ или Kafka, в архитектуре системы?
32. Какие подходы позволяют обеспечить надежную обработку сообщений в распределенной среде?
33. Что такое балансировка нагрузки (load balancing) и какие стратегии ее реализации существуют?
34. В чем различие между аппаратными и программными load balancers?
35. Когда и почему может использоваться DNS Round Robin для распределения трафика?
36. Какие методы позволяют снизить задержки (latency) в глобально распределенных системах?
37. Как можно использовать клиентское кэширование для улучшения времени отклика системы?
38. Что такое reverse proxy и какую роль оно играет в распределении запросов?
39. Какие инструменты мониторинга (например, Prometheus, Grafana) помогают в наблюдении за состоянием системы?
40. Как интегрировать системы логирования и мониторинга для оперативного обнаружения и устранения проблем?
41. Какие вопросы безопасности необходимо учитывать при проектировании систем с высокой нагрузкой?
42. Как обеспечить безопасную передачу данных между микросервисами?
43. В чем разница между шифрованием данных "at rest" и "in transit", и как правильно их применять?
44. Какие подходы используют для аутентификации и авторизации в распределенных системах?
45. Как работают системы на основе OAuth и JWT в обеспечении безопасности API?
46. Какие виды атак (например, DDoS) наиболее распространены и как можно защититься от них в рамках архитектуры системы?
47. Что такое API Gateway и как оно упрощает управление входящими запросами и маршрутизацию в микросервисной архитектуре?
48. Какой принцип следует использовать для реализации Circuit Breaker, и почему он важен для отказоустойчивости сервисов?
49. Что такое backpressure и как его реализовать для предотвращения перегрузок в распределенной системе?
50. Какие факторы могут стать узкими местами (bottlenecks) в системе и как их устранить?
51. Как правильно проводить стресс-тестирование и нагрузочное тестирование для выявления проблем производительности?
52. Какие методы автоматического масштабирования (autoscaling) применяются в облачных решениях?
53. Как внедрение облачных платформ (AWS, Google Cloud, Azure) влияет на процесс System Design?
54. Как использовать контейнеризацию (Docker) и оркестрацию (Kubernetes) для развертывания и управления микросервисами?
55. Какие преимущества и ограничения предоставляет serverless архитектура для современных приложений?
56. Что такое event sourcing и CQRS, и какие проблемы они помогают решать в проектировании систем?
57. Как определить потребность в асинхронной обработке процессов в конкретном проекте?
58. Какие компоненты входят в типичную архитектуру распределенной системы (Frontend, Backend, Middleware), и как они взаимодействуют?
59. В чем различие между синхронным RPC и асинхронной обменом сообщениями между сервисами?
60. Почему принцип идемпотентности критически важен при разработке API и распределенных систем?
61. Какие подходы применяются для управления распределенными транзакциями и обеспечения атомарности операций?
62. Объясните, как работает двухфазный commit (2PC) и почему его использование может снижать производительность.
63. Какие альтернативы 2PC существуют для управления транзакциями в распределённых системах?
64. Как проектировать систему, чтобы отделить масштабирование операций чтения от операций записи?
65. Какие методы оптимизации баз данных (индексация, денормализация) можно использовать для повышения производительности?
66. Как обеспечить консистентность данных при репликации между несколькими дата-центрами?
67. Что такое distributed cache и как он влияет на время отклика и загрузку базы данных?
68. Какие in-memory базы данных (например, Redis, Memcached) применимы для кеширования, и в чем их преимущества?
69. Как реализовать rate limiting для защиты системы от перегрузок и злоупотреблений?
70. Какие реальные примеры реализации паттерна Circuit Breaker вы знаете и как их применять на практике?
71. Как тестирование A/B помогает оценить влияние новых архитектурных решений на пользователей?
72. Как обеспечить плавное развертывание обновлений системы без прерывания работы пользователей (zero downtime deployments)?
73. Какие стратегии управления миграциями и релизами помогают минимизировать технический долг в крупных проектах?
74. Как проектировать систему с учетом переменного трафика и пиковых нагрузок в определенное время года?
75. Какие аспекты следует учитывать при интеграции новых технологий и подходов в существующую архитектуру для минимизации риска и максимизации производительности?