System Design интервью
System Design
На этом этапе нужно спроектировать гипотетическую систему. Без опыта очень сложно или невозможно.
Подготовка
Егор Бирюков предлагает оптимизировать следующие умения:
- понимать задачу
 - уточняющими вопросами и предположениями определять скоуп и функциональные и не очень требования
 - набросать от руки нагрузку и требования к технологиям
 - набросать быстро высокоуровневую архитектуру, не погружаясь в детали
 - понять, где нас ожидает главная сложность, определить возможные решения
 - (самое главное) вслух, громко и четко говорить о трейд-оффах.
 
В процессе подготовки важно:
- Научиться вмещать процесс в 45-55 минут
 - Научиться соблюдать определённый порядок
 - Научиться для больших задач отделять важное от неважного
 - Научиться брать на себя и проявлять инициативу
 
Подготовка происходит так:
- Изучить книгу Understanding Distributed Systems
 - Изучить книгу Кабан - Designing Data-Intensive Applications - опционально
 - Пройти курс Grokking the System Design Interview
 - Прочитать книгу System Design Interview – An insider's guide
 - Пройти мок-интервью на нужном языке (обязательно)
 
План интервью с таймером:
- Требования и вопросы: задача, пользователи, нагрузка и т.д. — 5-10 минут
 - Estimations: storage, нагрузка на сеть и т.д. — 5 минут - Высокоуровневый дизайн: квадраты со стрелками. Цели, результаты, потенциально узкие места, трейд-оффы — 10 минут
 - Глубокое погружение: некоторые части системы — 20 минут
 - Завершение: что получилось, как расти, как запускать — 5-10 минут
 
СОВЕТ
Постоянно показывать «инженерное мышление»: минусы, трейдофы, решения в терминах требований. Минимум конкретных технологий, можно упомянуть опыт.
Ссылки
- System Design Primer — GitHub
 - My System Design Template — topcat, LeetCode (2019)
 - System Design Interview — YouTube Channel (2020)
 - System Design CheatSheet — Никита Субботин