В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.
Проверьте всю цепочку статусов и учётных записей: списание у пользователя, комиссия провайдера, баланс компании, settlement и отображение отчёта. Отсутствие цифры в интерфейсе не доказывает потерю денег.
После оценки моделью результат должен пройти проверку формата и бизнес-правил, а затем попасть в предусмотренный процесс: хранение, показ, очередь или ручную проверку. Единой обязательной схемы нет.
Outbox читает отдельный relay: фоновой процесс приложения, специальный сервис или CDC-коннектор. Kafka и RabbitMQ сами по себе не начинают читать произвольную таблицу вашей БД.
Аутентификация устанавливает, кто пользователь, авторизация — что ему разрешено. Пароли хранят как стойкий адаптивный хеш, а социальный вход связывают с проверенной внешней идентичностью.
Применяйте expand–migrate–contract: сначала совместимое расширение схемы, затем перенос данных и клиентов, и только потом удаление старого. Старые и новые версии должны временно работать вместе.
Из вариантов наиболее полный — отдельный контролируемый запуск миграций и readinessProbe приложения. Readiness не допускает трафик до готовности, а миграции не конкурируют при старте каждой реплики.
Начните с функций и масштаба: профили, подписки, публикации, лента и уведомления. Разделите хранение контента, граф связей, формирование ленты и доставку медиа.
Сохраните состояние процесса и повторяйте упавший шаг идемпотентно. Для нескольких сервисов используйте saga с явно заданными компенсациями, а не попытку удержать одну общую DB-транзакцию.
Нет, брокер нужен не всегда. Синхронный HTTP/gRPC подходит для запроса с немедленным результатом, а сообщения — для развязки по времени, буферизации и независимой обработки.
Храните соответствие короткого уникального кода и исходного URL. Сервис создания валидирует URL и генерирует код, а сервис перехода находит запись и возвращает HTTP redirect.
Создайте задачу с ID, надёжно поставьте её в очередь и верните 202 со ссылкой на статус. Worker выполняет парсинг и сохранение, клиент опрашивает статус или получает событие.
Место размещения модели выбирают по требованиям к GPU, памяти, задержке, данным и эксплуатации. Виртуальная машина — один из вариантов, а не достаточное описание deployment.