В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Используйте single-flight: один запрос на ключ URL и список подписчиков, ожидающих общий результат. Кеш последнего ответа — отдельная политика, особенно для меняющегося заряда батареи.
Создайте один общий поток соединения, разбирайте JSON один раз и раздавайте типизированные события подписчикам. Иначе каждый collector холодного Flow может открыть собственное соединение.
Такая система состоит из серверной платформы и клиентских SDK: одна библиотека не заменяет серверные авторизацию, хранение и доставку событий. Сначала определите минимальный набор сервисов и модель арендаторов.
Вынесите модели аккаунтов, расчёт TOTP и состояние таймеров в общую библиотеку, а UI и безопасное хранение секретов оставьте платформенными адаптерами. Kotlin Multiplatform подходит для такой границы.
Нужны два механизма: кеш готовых изображений и реестр выполняющихся загрузок по URL. Все параллельные потребители одного ключа ожидают одну общую задачу, а не создают свои HTTP-запросы.
Используйте локальную БД как источник данных для UI, репозиторий для синхронизации RSS и очередь обновлений. Строгое фоновое обновление каждые пять минут обычному Android-приложению гарантировать нельзя.
Разделите получение координат, поиск ближайшего аэропорта и загрузку табло прилётов. UI должен явно показывать загрузку, отсутствие разрешения, устаревшие данные и ошибки источника.
Оставьте общее ядро лаунчера и выделите платформенные интеграции в адаптеры. Различия устройств выбирайте конфигурацией сборки или проверкой возможностей, а релизы ведите по матрице совместимости.
Для системы отзывов с модерацией, где автор видит свой отзыв сразу, а другие пользователи — только после одобрения, можно спроектировать следующую архитектуру: