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

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

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

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

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

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

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

Каталог

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

Найдено: 889
System Design

Как моделировать жизненный цикл заказа: например, от черновика до завершённого состояния? Это event-driven architecture (событийно-ориентированная архитектура)?

Жизненный цикл заказа удобно моделировать конечным автоматом: состояния, допустимые переходы, условия и эффекты. Наличие состояний само по себе не делает архитектуру event-driven.

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

Как паттерн Transactional Outbox гарантирует атомарность обновления БД и отправки события в брокер без 2PC?

Outbox атомарно сохраняет бизнес-изменение и запись о будущем событии в одной БД-транзакции. Отправка в брокер выполняется отдельно; паттерн не делает commit БД и сетевую отправку одной атомарной операцией.

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

Что такое CQRS и как вы применяли его в проекте?

CQRS разделяет модели и пути изменения состояния и чтения данных. Команды выражают намерение изменить систему, запросы возвращают представление; отдельные базы и event sourcing не обязательны.

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

Опишите паттерн Idempotent Consumer. Как гарантировать корректность данных, если одно и то же событие пришло в систему параллельно?

Idempotent Consumer делает повторную обработку события безопасной. Для параллельных копий недостаточно сначала проверить наличие ID: уникальная отметка обработки и бизнес-изменение должны быть атомарны.

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

Когда связь между сервисами лучше делать через брокер, а когда синхронно?

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

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

Как спроектировать систему отложенных задач (Delayed Messages) в RabbitMQ с помощью TTL и DLX?

Сообщение помещают в очередь задержки без consumers, задают message TTL и DLX на рабочий exchange. После истечения TTL оно направляется в рабочую очередь, где его получает обработчик.

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

Что такое оптимистическая и пессимистическая блокировки и когда их лучше применять в системе записи на консульские услуги?

Пессимистическая блокировка заранее ограничивает конкурирующие изменения, оптимистическая проверяет версию при записи. Для дефицитных слотов важен атомарный запрет двойного бронирования, независимо от выбранного подхода.

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

Как бы ты построил систему агента для банка: клиент пишет вопрос, система либо отвечает сама, либо передаёт оператору? Какие компоненты, как обеспечить надёжность и правильность ответов?

Разделите диалог, поиск по утверждённой базе знаний, доступ к банковским данным и передачу оператору. Модель не должна сама выдавать полномочия или выполнять финансовые действия по одному текстовому запросу.

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

Как собираешь и структурируешь базу знаний из документов, регламентов, правил? Как решаешь сложные страховые правила с региональными исключениями?

Базу знаний строят из версионируемых источников с владельцами, датами действия и областью применимости. Региональные исключения нужно хранить явно и выбирать по контексту, а не смешивать в один текст.

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

Спроектируйте масштабируемый мессенджер: только личные чаты, отправка текста и изображений, доставка онлайн и офлайн через push-уведомления, статусы «отправлено/доставлено/прочитано», история переписки и статус присутствия онлайн/офлайн.

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

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

Что такое паттерн Bulkhead («перегородки») в системном дизайне и как изоляция пулов соединений защищает систему от полного отказа?

Bulkhead изолирует ресурсы разных направлений нагрузки. Отдельные пулы соединений, workers и очереди не дают зависшему внешнему сервису занять все ресурсы приложения и остановить остальные функции.

Читать ответ