В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Нагрузку оценивают по числу загрузок, размерам фотографий, пикам и времени обработки; эти данные определяют хранилище, параллелизм workers, партиции и допустимую очередь.
Передать байты изображения в Kafka технически можно, но обычно лучше хранить файл в объектном хранилище, а в событии передавать ключ, метаданные и идентификатор операции.
Типовой путь: расчёт предложения, заполнение и проверка данных, оформление, оплата, выдача полиса и последующее обслуживание; интеграции зависят от страховщика.
Разделите загрузку, транскодирование и доставку через CDN. Расчёт в условии ошибочен: 5 млн просмотров в сутки — примерно 58 стартов просмотра в секунду, а не 300.
События полезны для отделения вторичных реакций от основного бизнес-действия. В монолите достаточно явного dispatcher и зарегистрированных обработчиков, без обязательного брокера.
Для MVP достаточно модульного backend, PostgreSQL и объектного хранилища изображений. Категории и допустимые атрибуты храните отдельно от пользовательских публикаций.
Представьте модели как версионируемые ресурсы, а длительные inference/evaluation — как отдельные задания со статусами. Удаление и изменение должны проверять ownership.
Используйте ограниченные timeout и retry с backoff, circuit breaker, лимиты конкурентности и идемпотентность. Неопределённый исход записи нужно сверять, а не повторять вслепую.
Сохраняйте долговечные результаты обратно в объектное хранилище, а в БД — их ключи, статус задачи и метаданные. Локальный диск pod используйте только как временный.
Потоковое чтение решает размер файла, но не размер словаря частот. Для точного топ-N используйте внешнюю агрегацию: хеш-разбиение на дисковые бакеты или внешнюю сортировку.
Передавайте через очередь небольшие ссылки на блоки, а большие данные храните отдельно; применяйте streaming, ограниченные буферы и backpressure. Уточните допустимость потерь при at-most-once.