В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Разделите продукт, конкретное предложение и его доступность: платформа, регион, длительность подписки, цена, валюта и остаток цифровых кодов имеют разные роли.
Сообщению нужны серверный ID, ID чата и отправителя, тип, содержимое, время создания и версия изменения. client_message_id связывает повторный запрос с тем же результатом.
WebSocket доставляет сообщения, но согласованность обеспечивает прикладной протокол с серверным состоянием, версиями, подтверждениями и восстановлением.
Отдавайте компактную проекцию списка с пагинацией и отдельный ресурс подробностей. Загружайте данные тогда, когда они нужны экрану, не возвращая весь каталог целиком.
Разделите постоянное хранение истории, доставку событий и локальное состояние клиента. Используйте устойчивые ID сообщений, идемпотентную отправку и восстановление по серверному курсору.