Data System Design Interview
Что это за зверь 🤔
Data system design - это подмножество сисдиз интервью, но с упором на data-driven задачу, где кандидат показывает способность построения систем в области хранения, управления и обработки данных.
Пример задачи 💁♂️
(Пример подробный, часто кандидат сам формулирует требования через диалог)
Мы компания Х, новая платформа для авторов. У каждого автора есть свое пространство и люди могут подписываться или отписываться от них. Запрос отписки может приходит либо от пользователя из UI интерфейса, отдельного запроса от департамента Customer Success или Legal (может содержать в себе большое число пользователей за один раз)
Нам необходимо разработать решение, у которого будет:
1. Возможность отправлять near real-time событие в уже разработанный UnsubMe сервис для отписки
2. Финальный отчет для сеньор менеджмента для анализа воронки отписок (с возможностью работы на разных уровнях агрегаций и времени)
3. Возможность для аналитиков осуществлять ad-hoc аналитику
Как проходит интервью 😅
Формат интервью обычно соответствует тем же временным рамкам, что и сис дизайн интервью (пример для интервью в 90 минут):
1. Интро (5 минут)
• Вы представляетесь друг другу и пара слов о бекграунде каждого. Для больших компаний обычно присутствуют 2 интервьюера.
2. Понимание проблемы и сбор требований (10-15 минут)
• Интервьюер описывает вам проблему и предлагает задавать вопросы
• Ваша задача проговорить функциональные и нефункциональные требования и те ограничения, которые будут приняты в виду ограничения по времени (например, если у вас задача по имплементации GDPR, то вы обсуждаете только часть удаления пользовательских данных)
• Также вы обсуждаете текущую нагрузку на систему и как это изменится в краткосрочной и среднесрочной перспективе
• В какой среде будет задача (клауд/гибрид/on-prem)? Есть ли доп ограничения вида Cloud Agnostic?
3. Высокоуровневый дизайн (15-20 минут)
• Вы совместно рисуете и обсуждает общую схему решения на уровне компонетов / сервисов / технологий. Тут часто бывают общие обсуждения уровня нужен ли нам дополнительной слой DWH, выбора синхронного или асинхронного метода передачи сообщения, необходимости какой-то шины данных и т.п.
4. Детальное обсуждения какого-то компонента (20-35 минут)
• Идет углубленное обсуждение какого-то компонента. В виду дата ориентированности, обычно это завязано на какой-то компонент стриминга, етл, дата модели и т.п.
5. (Опционально) Обсуждение оптимизаций, масштабирования или каких-то адаптаций для решения (10-15 минут)
• Такие обсуждения часто бывают в процессе предыдущих этапов или кандидат инициирует их
• Интервьюер может предложить изменение требований и спросить, какие адаптации надо сделать под них (например, подключение 3rd party vendor в примере компании X, который может работать с отписками)
6. Q&A и Вопросы Кандидата
• Обычная Q&A сессия, которая позволяет кандидату спросить про работу в компании
Примеры детальных обсуждений 👨🦳
Неполный список тем, который может быть в детальном обсуждении
• CDC. Как организовать, зачем, какой тип выбрать
• Message Broker, какой выбрать, какой критерий выбор, формат сообщений, какая модель обработки
• DWH. Нужен? Какая модель данных? Какие основные сущности будут?
• Качество данных. на каком этапе, какие тулзы, что покрыть
• Мониторинг. Что мониторить, как мониторить?
• Batch Processing. Как будет организована загрузка? Как выглядит инициализирующая / инкрементальная загрузка? Как ускорить загрузку?
• Оркестрация, как организовать, на каком этапе?
Как готовиться 😺
Курс/книги по системному дизайну (educative / карпов / System Design Interview от Alex Xu), общие книги по дата инженерии (Fundamentals of Data Engineering / DDIA) и более глубокое погружение в конкретные темы, которые могут всплыть.
Если времени не много, попробовать поделать мок интервью и по фидбеку пытаться что-то доизучить, но мок-интервьюеры смотрят на то, что интересно им, и могут упустить часть вещей. Я также провожу их в рамках моих менторинг сессий =)
Post #46
1.56K
- 🔥 25
- 👍 5