Мобильный system design: каталог и корзина маркетплейса
Вопрос
Спроектируйте клиент маркетплейса: главная витрина, каталог с фильтрами и поиском, карточка товара, корзина, синхронизация корзины между устройствами.
Коротко
Что должно быть в решении
- 1Требования: витрина меняется без релиза, поиск с подсказками, корзина офлайн и между устройствами
- 2Витрина: server-driven блоки с фолбэком для неизвестных типов
- 3Каталог: курсорная пагинация, фильтры в URL-подобном состоянии, кеш результатов
- 4Поиск: debounce, отмена устаревших запросов, история поиска локально
- 5Корзина: локальная копия, операции через outbox, слияние с серверной при входе
- 6Узкие места: картинки, цены и остатки (свежесть), deep links на товар
Что спросит интервьюер
- Как слить гостевую корзину с корзиной аккаунта при входе?
- Как показывать цену, если она могла измениться?
Разбор
Главная витрина приходит с сервера как список блоков (баннер, карусель, подборка) с данными; клиент рендерит известные типы из своей дизайн-системы и пропускает неизвестные, поэтому старые версии не ломаются. Ответ кешируется и показывается сразу при старте.
Каталог: запрос с фильтрами и курсором, состояние фильтров описано данными (его можно восстановить и передать ссылкой). Поиск: debounce 300 мс, отмена предыдущего запроса, подсказки с сервера и локальная история.
Карточка товара: базовые данные из списка показываем мгновенно, детали догружаем. Цена и наличие обновляются при открытии и обязательно при оформлении: сервер пересчитывает итог.
Корзина: локальная база и операции «добавить/изменить/удалить» в outbox с идемпотентностью. Для гостя корзина только локальная; при входе клиент отправляет её, и сервер сливает с корзиной аккаунта (суммируя количество или беря максимум, по правилам продукта). Изменения с других устройств приходят при открытии корзины и по тихому push.
Deep links ведут на товар, категорию и акцию через общий роутер.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Мобильный system design: перевод денег в банковском приложении
Следующий вопрос
Мобильный system design: лента новостей с картинками и видео
Ещё по теме «Мобильный system design»
- Мобильный system design: SDK аналитики событий
- Мобильный system design: загрузка фото и видео
- Мобильный system design: мессенджер
- Мобильный system design: заметки с синхронизацией между устройствами
- Мобильный system design: истории (stories)
- Мобильный system design: такси с отслеживанием машины на карте
- Оценка объёмов в мобильном system design
- Пагинация ленты на мобильном