Мобильный system design: перевод денег в банковском приложении
Вопрос
Спроектируйте клиентскую часть перевода денег по номеру телефона в банковском приложении: поиск получателя, ввод суммы, подтверждение, статус операции, история.
Коротко
Что должно быть в решении
- 1Требования: безопасность, точность статуса, плохая сеть, повторные нажатия, доступность
- 2Безопасность: сессия и биометрия через Keychain/Keystore, подтверждение операции, защита экрана, аттестация
- 3Идемпотентность: клиентский id операции, повтор без двойного списания
- 4Состояния: черновик, на подтверждении, в обработке, успех, отказ, неизвестно
- 5Данные: история с пагинацией, кеш получателей, без хранения лишних персональных данных
- 6Наблюдаемость: логирование без ПДн, метрики успешности и времени
Что спросит интервьюер
- Что увидит пользователь, если приложение закрыли во время перевода?
- Как защититься от подмены получателя вредоносным приложением?
Разбор
Поток: выбор получателя (поиск по номеру через сервер, показ имени для проверки), ввод суммы с проверкой лимитов на сервере, экран подтверждения с итоговой комиссией, подтверждение биометрией или кодом.
Идемпотентность: при переходе на подтверждение клиент получает или создаёт id операции. Отправка POST /transfers с этим id; если ответ не пришёл, клиент повторяет с тем же id или запрашивает статус. Двойное нажатие блокируется на уровне UI и сервера.
Состояния операции явные, включая «неизвестно, проверяем»: пользователь видит статус, а не ошибку, и операция появится в истории с актуальным статусом. Если приложение закрыли, при следующем открытии незавершённые операции досинхронизируются по id.
Безопасность: токены в Keychain/Keystore, биометрия открывает криптографический ключ, подпись операции может выполняться ключом устройства; экран подтверждения защищён от скриншотов и оверлеев; сервер проверяет аттестацию и антифрод. Логи без номеров и сумм в открытом виде.
История: курсорная пагинация, кеш последних операций для быстрого показа.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Мобильный system design: SDK аналитики событий
Следующий вопрос
Мобильный system design: каталог и корзина маркетплейса
Ещё по теме «Мобильный system design»
- Мобильный system design: лента новостей с картинками и видео
- Мобильный system design: загрузка фото и видео
- Мобильный system design: мессенджер
- Мобильный system design: заметки с синхронизацией между устройствами
- Мобильный system design: истории (stories)
- Мобильный system design: такси с отслеживанием машины на карте
- Оценка объёмов в мобильном system design
- Пагинация ленты на мобильном