Мобильный system design: истории (stories)
Вопрос
Спроектируйте клиент историй как в популярных соцсетях: лента кружков авторов, полноэкранный просмотр фото и видео с автопереключением, отметка просмотра, ответы.
Коротко
Что должно быть в решении
- 1Требования: мгновенное начало просмотра, автопереход, жесты, отметки просмотра, 24 часа жизни
- 2API: список авторов с непросмотренными, истории автора, батч отметок просмотра
- 3Предзагрузка: следующие истории и следующий автор, приоритеты, ограничение трафика
- 4Плеер: переиспользование плееров, буферизация, жесты паузы и перехода
- 5Данные: локальный кеш с TTL, офлайн-отметки просмотров в очереди
- 6Узкие места: время до первого кадра, память на видео, трафик
Что спросит интервьюер
- Сколько историй предзагружать и как это зависит от сети?
- Как отмечать просмотры без запроса на каждую историю?
Разбор
Главная метрика: время от нажатия на кружок до первого кадра. Поэтому при показе ленты кружков клиент заранее загружает первую историю первых нескольких авторов, а во время просмотра предзагружает следующие 1-2 истории текущего автора и первую следующего. Глубина предзагрузки зависит от сети: на Wi-Fi больше, в мобильной меньше, при режиме экономии трафика только по требованию.
Плеер: пул из 2-3 плееров переиспользуется, видео буферизуется частично, прогресс-бар по длительности, жесты: удержание это пауза, тап это следующая, свайп это следующий автор.
Отметки просмотра копятся локально и отправляются пачкой (раз в несколько секунд и при уходе с экрана), это экономит запросы и работает офлайн. Список авторов сортируется с учётом непросмотренных.
Кеш историй с TTL 24 часа, медиа в дисковом кеше с ограничением размера. Ответ на историю это сообщение в чат через общий механизм отправки.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Мобильный system design: заметки с синхронизацией между устройствами
Следующий вопрос
Мобильный system design: такси с отслеживанием машины на карте
Ещё по теме «Мобильный system design»
- Мобильный system design: SDK аналитики событий
- Мобильный system design: перевод денег в банковском приложении
- Мобильный system design: каталог и корзина маркетплейса
- Мобильный system design: лента новостей с картинками и видео
- Мобильный system design: загрузка фото и видео
- Мобильный system design: мессенджер
- Оценка объёмов в мобильном system design
- Пагинация ленты на мобильном