Что чаще всего спрашивают про распределённые системы на собеседованиях + подборка материалов
За последние полгода я посетил более 10 собеседований на позиции от синьор бэкенд разработчика до техлида и тимлида команды. Во время технической части очень популярны вопросы по распределённым системам. Ниже расскажу с чем по этой тематике сталкивался лично я.
Теоретические вопросы
Паттерны - какую проблему решает, есть ли недостатки.
- circuit-breaker;
- cqrs;
- retry;
- bff;
- saga;
- двухфазный коммит;
- api gateway;
- graceful degradation;
- heart-beat;
- outbox.
Подходы - зачем нужны, какие есть особенности, в каких случаях лучше использовать.
- шардирование;
- репликация;
- кэширование;
- синхронное и асинхронное взаимодействие сервисов;
- консистентное хэширование;
- масштабирование - горизонтальное и вертикальное.
Архитектура - что и когда использовать, какие есть компромиссы при выборе.
- монолит;
- микросервисы;
- сервис-ориентированная архитектура.
Практические вопросы
В некоторых компаниях были отдельные system design секции - во время которой нужно спроектировать архитектуру какой-то большой системы. Про одно из таких расскажу в отдельном посте.
В основном - это проектирование какой-то фичи. Цель - не углубиться во все детали и придумать идеально работающее решение, а определить общую архитектуру, учитывающую основные ограничения. Более детально спроектировать аспекты, на которых акцентирует внимание интервьюер.
Какие практические вопросы задавали мне:
- спроектировать фичу синхронизации данных из стороннего источника раз в сутки - недостающие нужно добавить, изменившиеся обновить и удалить убранные. Упор на то, чтобы делать это максимально эффективно и быстро;
- спроектировать высоконагруженный сервис заказов - заказы приходят в большом количестве из разных источников, данные нужно сразу валидировать, есть сезонные пики нагрузки;
- спроектировать высоконагруженный сервис отправки уведомлений с гарантированной доставкой - нагруженный сервис по отправке различных уведомлений - sms, email, telegram. Обеспечить гарантированную доставку с минимальной задержкой, исключить повторную отправку одного уведомления.
Подборка материалов
По ссылкам - материалы для подготовки.
Паттерны:
- circuit breaker
- cqrs основы
- cqrs архитектурная схема
- retry
- bff
- api gateway
- outbox
БД:
- большой пост про основные виды БД для system design interview
- ACID и BASE
- репликация первая часть
- репликация вторая часть
- репликация третья часть
Распределённые системы:
- кэширование
- компенсирующие транзакции
- replication lag и способы его решения
- компромиссы при проектировании распределённых систем
- способы генерации уникальных идентификаторов в распределённых системах
- как плавно перейти от монолита к микросервисной архитектуре
- 10 мифах о микросервисах
И отдельно - шпаргалка по system design inteview
#архитектура_и_распределённые_системы
Post #119
1.98K
- 👍 27