Подготовка к интервью

Вопросы по System Design на собеседовании

889 вопросов по System Design

889 вопросов 1634 компании 353 технологии

Что проверяют на интервью

Как устроена подборка

В этой подборке вопросы сгруппированы по формату «System Design», чтобы подготовку можно было вести от базовых тем к практическим задачам. В подборке чаще встречаются темы: backend, api, database.

Каталог

Результаты поиска

Найдено: 889
System Design

Спроектируйте масштабируемый сервис ежедневных SMS-напоминаний о платеже по кредиту: данные о клиентах и кредитах находятся в БД, отправка SMS выполняется через Kafka. Учтите отказоустойчивость, дублирование, нагрузку и граничные случаи.

Планировщик порциями создаёт уникальные задания и outbox в БД, publisher отправляет их в Kafka, consumer вызывает SMS-провайдера. Ключ кредита, даты и типа напоминания подавляет повторное планирование.

Читать ответ
System Design

Почему нельзя было просто масштабировать синхронные API, добавить экземпляры приложения или мощности БД вместо Kafka?

Kafka позволяет отделить приём от обработки и сгладить пики долговечной очередью. Масштабирование синхронного API не создаёт такую гарантию и может усилить давление на ограниченную БД.

Читать ответ
System Design

[имя] спросил: Как проектировать количество партиций для нового приложения с нагрузкой 3000 сообщений в минуту?

3000 сообщений в минуту — в среднем 50 в секунду, но этого недостаточно для выбора partition. Нужны размер сообщения, стоимость обработки, пиковый поток, порядок и требуемый запас мощности.

Читать ответ
System Design

Зачем вы использовали Kafka вместо того, чтобы просто принять запрос и обработать его синхронно? Почему не масштабировать инстансы?

Kafka полезна для отделения приёма от обработки, сглаживания пиков и независимых подписчиков. Масштабирование синхронных экземпляров не устраняет медленную зависимость и не создаёт долговечную очередь само по себе.

Читать ответ
System Design

Сервис не успевает обрабатывать запросы в пиковое время. Что можно сделать?

Сначала найдите узкое место и защитите систему от перегрузки: ограничьте входящий поток и очереди, затем оптимизируйте или масштабируйте ограничивающий ресурс. Больше экземпляров не всегда помогает.

Читать ответ
System Design

Почему используется самописный брокер вместо Kafka или RabbitMQ; какие у него преимущества и недостатки?

Самописный брокер может быть оправдан узкой семантикой или историческими ограничениями, но требует самостоятельно обеспечивать надёжность и эксплуатацию. Конкретную причину выбора нужно подтвердить контекстом.

Читать ответ
System Design

Как обеспечить надёжность при оплате мобильного телефона (списание у нас + начисление у МТС)?

Используйте устойчивую операцию со статусами, идемпотентным списанием и одним ключом обращения к провайдеру. Неизвестный результат сначала сверяют, а не сразу списывают или возвращают деньги повторно.

Читать ответ
System Design

В чём проблема того, что вы вызываете REST прямо из Kafka consumer?

REST-вызов внутри consumer связывает скорость Kafka-обработки с доступностью внешнего сервиса. Медленный вызов блокирует обработку partition, накапливает lag и может вызвать rebalance при превышении poll-интервала.

Читать ответ
System Design

Как изолировать медленных/нестабильных провайдеров чтобы они не влияли на остальных?

Используйте изоляцию ресурсов по провайдерам: отдельные лимиты параллелизма и очередей, timeout, circuit breaker и ограниченные retries. Медленная зависимость не должна занимать все workers и соединения.

Читать ответ
System Design

Auth Service стоит в разрыв между API и Transaction Service — если он падает, всё рушится. Как вы это обезопасивали?

Снижают зависимость от синхронного Auth Service: при подходящей модели подписанные access tokens проверяют локально, а сервис авторизации делают отказоустойчивым. Отказ проверки не должен автоматически разрешать доступ.

Читать ответ
System Design

Где лучше выполнять преобразование данных, видимое клиенту: на backend или frontend? Например, расчёт годовых процентов.

Бизнес-значимые расчёты и итоговые денежные значения должны определяться backend по единому правилу. Frontend может форматировать результат и показывать предварительную оценку, не становясь источником истины.

Читать ответ
System Design

Какую стратегию вытеснения (eviction policy) поставить в Redis для хранения отложенных нотификаций?

Для единственной копии отложенных уведомлений вытеснение недопустимо: выбирают noeviction и обрабатывают отказ записи при нехватке памяти. Надёжнее хранить источник истины в долговечном хранилище.

Читать ответ