- Дать достаточное кол-во сигналов для интервьюеру, что вы можете колаборировать, работать в команде проектировать и делать это сообща вместе
- Можно ли интервьюер представить вас в качестве члена команды? Сделать так что бы смог
L5-L6 отличаются интервью: На Л6 уровне нужно добавлять знания и показывать ваш личный экспирианс Систем дизайн это про общение с интервьюером
Первое что нужно сделать это выработать навык общения с интервьюером Интервьюер самый главный фактор при прохождении систем дизайн интервью
Try exponent - manager - сервис с курсами, моками, коучами для подготовки к систем дизайн интервью
Спрашивайте вопросы, уточняйте и разъесняйте все непонятные вещи в задаче в начале.
- Нарисовать хай левел дизайн
- Спускаться в глубь тех или иных аспектов
- Ответы на вопросы от интервьюера или ваши вопросы
https://rode.com/en/microphones/usb/nt-usb-mini https://www.shure.com/en-GB/products/microphones/mv7
Когда дают задание "например задизайнить твиттер"? Ожидают что с вашей стороны последует ряд вопросов по разъяснению функциональный не функциональных требований! В противном случае (если вы начнете сразу рисовать хай левел дизайн) интервью будет провалено
Всегда задавайте вопросы про функциональные требования! Всегда! Выясняйте есть ли у системе трейдофы! (вещи на которые мы не можем повлиять)
- Интерграции
L6 вопросы включают более широкое виденье:
- Команда
- Бюджет
- Прайваси
- Есть ли екзекьютив мемберы которые уже имели опыт с похоже задачей
В конце задайте уточняющий вопрос:
- Есть ли что то что я пропустил?
- Все ли реквайременты вы включили?
- Хотите ли вы видеть реквайременты как АПИ или углубиться в "рисование"?
Нужно понять критичность и задел на скайлабилити
https://systemdesignthinking.thinkific.com/courses/system-design-for-interviews-and-beyond
Какой уровень availability имеет наша система?
Каждый компонент системы должен учитывать уровень availability! 100% availability is not possible
https://abseil.io/resources/swe-book
Нужно держать в голове должны ли вы делать упор на high availability (HA) в данном компоненте или части системы
- Скорее всего: Сервисы и базы данных должны находится в разных местах желательно далеко друг от друга (AZ and regions)
- Fallback - рекавери сценарий при краше (можем ли построить fallback в том или ином сценарии)
- Вариант ответа на вопрос а что если что-то упадет? - Fallback сценарий
- Gossip protocol (peer service discovery)
- Rate limiting, load shading, sharding способы справиться с нагрузкой и предоставить то же высокий уровень HA
- Timeouts, circuit breaker, idempotency - спосибо избежать перформанс дегродейшена
- SLO->SLA - постайм метрики, мы не можем говорить об этих политиках основываясь на текущих данных, мы рассчитываем их с использованиям исторических данных
Совет: Записывайте все вопросы/ответы во время сбора требований
Fault Tolerance - это 0 downtime (Банки, биржи, финтех, медицина и тд)
https://www.amazon.co.uk/Scalability-Startup-Engineers-Artur-Ejsmont/dp/0071843655
Cкайлебилити отвечает на вопросы: может ли система справиться с нагрузкой? и как она может с нагрузкой с той или иной нагрузкой?
- Что бы понимать уровень нагрузки нужно собирать метрики
- Один из способов скейлинга который часто забывают - вертикальный
- Elasticity: автоскейлинг + скейлинг для peak hours
- peak hours - про прогнозирование повышенной нагрузки в те или иные часы или дни
Вопросы от интрвьюера:
- Как мы можем улучшить сетевую составляющую? (Может быть он хочет другой протокол или уровень)
- Перформанс улучшения на сервер сайде:
- кеши
- алгоритмы
- Меймори вс диск
- Какие персентили важны
- p50
- p75
- p90
- p95
- p99
В гугл могут часто задавать вопросы по поводу квотирования
Дюрабилити:
- Бекапы
- фулл
- Диффириншиал
- Инкрементал
- Репликации
- multi levels!
- Рейдмассивы (https://www.youtube.com/watch?v=U-OCdTeZLac)
- RAID 1
- RAID 10 Проверка дьюрабилити - чексумма
Консистенси выбор между слабой и строгой Понять ожидания по перформенсу исходя из которых мы можем выбрать уровень консистентности в том числе
Single point of failure - pay attention to it!
Нужно проектировать систему с учетом того что мы должны избегать SPOF
- Maitainents - APM
L6 - затрагивать cost management если еще есть время