Мок-интервью по System Design: платёжный кошелёк
Кандидат проектирует кошелёк с пополнением, выводом и переводами между пользователями. Интервьюер проверяет расчёт нагрузки, консистентность, идемпотентность и обработку сбоев внешних платёжных систем.
- Опубликовано на YouTube:
- Просмотры на YouTube: 760
- Лайки на YouTube: 7
Таймлайн
Коротко о видео
В этом мок-интервью кандидат проектирует сервис кошелька с покупкой и тратой монет, выводом на карту и переводами между пользователями. Разговор начинается со сбора функциональных и нефункциональных требований, оценки нагрузки и выбора консистентности для денежных операций. Затем кандидат описывает PostgreSQL-схему счетов и append-only журнала транзакций, интеграцию с банком и платёжной системой. Интервьюер подробно проверяет граничные случаи: потерянный webhook, повторный запрос, потерю ответа внешнего сервиса и падение воркера. Кандидат предлагает идемпотентные ключи, polling, статусы pending/checking, select for update skip locked, таймауты и упорядочивание блокировок. После решения есть обратная связь и обсуждение распределённой синхронизации.
Затронутые темы
Что взять на заметку
- System Design начинается со сбора операций, ограничений и гарантий, а не с выбора технологий.
- Для денег приоритетны инварианты баланса и согласованность, а историю транзакций удобно хранить отдельно от текущего состояния счёта.
- Внешний сетевой вызов не следует держать внутри транзакции БД; работу можно передавать в состояние checking.
- Webhook и polling дополняют друг друга, когда доставка событий от платёжного провайдера ненадёжна.
- Идемпотентность, повторные запросы и порядок блокировок нужны для защиты от дублей и гонок.