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

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

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

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

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

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

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

Каталог

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

Найдено: 889
System Design

Как бы вы спроектировали программу лояльности для физического магазина с несколькими кассами, чтобы предоставлять скидку первым десяти покупателям? Опишите весь процесс: работу кассы, запросы, сервисы и хранение данных.

Уточните, кто считается первым покупателем: начавший оплату или успешно оплативший, и что делать при отмене. Все кассы должны обращаться к общему сервису, который атомарно выдаёт не более десяти резервов.

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

Как предотвратить каскадное падение микросервисов (cascading failures) в распределенной системе, если один из сервисов в цепочке неожиданно начал сильно тормозить под нагрузкой?

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

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

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

Зафиксируйте вместимость слота на уровне БД: уникальность для одного места либо атомарное уменьшение остатка для нескольких. Проверка «свободно» перед отдельной записью не защищает от гонки.

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

Как спроектировать таблицу Transactional Outbox при одной реплике message relay и отсутствии существенной нагрузки: какие нужны поля и индексы?

Достаточно event_id, типа события, aggregate_id, payload, created_at, published_at и полей повторов. Нужны первичный ключ и индекс для поиска ещё не опубликованных событий в порядке обработки.

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

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

Сначала уточните тип поиска: точное имя, префикс, подстрока или опечатки. Для небольшого справочника начните с обычной БД; B-Tree и триграммный индекс решают разные варианты поиска.

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

В Docker-контейнере FastAPI есть фоновые задачи AsyncIO. Kubernetes завершает Pod, а часть операций ещё пишет результаты в PostgreSQL. Что сделаешь первым, чтобы не потерять работу при остановке?

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

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

Что такое идемпотентность API и как спроектировать надёжный слой дедупликации с помощью Idempotency-Key?

Идемпотентность означает, что повтор одного запроса не создаёт новый бизнес-эффект. Idempotency-Key должен связывать операцию с сохранённым результатом, а не просто передаваться в заголовке.

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

GitLab CI собрал Docker-образ, но интеграционные тесты проходят только локально: в Kubernetes сервис иногда стартует раньше PostgreSQL и падает. Релиз нужен сегодня. Какой путь выберешь, чтобы не выпустить нестабильный образ?

Не выпускайте образ с невоспроизводимой готовностью зависимостей. Добавьте ограниченное ожидание/повторы подключения, корректные probes и интеграционную проверку в окружении, похожем на Kubernetes.

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

Как спроектировать отдельный сервис авторизации, чтобы поддерживать внутренний логин/пароль, Keycloak и в будущем, например, вход через Госуслуги?

Отделите внутреннего пользователя от способов входа: единый user_id и таблица внешних идентичностей provider + subject. Подключайте провайдеров через адаптеры, сохраняя общий контракт сессии для приложений.

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

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

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

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

Как обновить высоконагруженный микросервис на новую версию без потери запросов? Что делать если миграция БД ломает старую версию?

Используйте постепенную замену экземпляров, readiness-проверки и завершение активных запросов. Несовместимую миграцию разбейте на expand–migrate–contract, чтобы обе версии временно работали с одной схемой.

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

Как решить проблему конкурентного доступа к товару при распродаже? Как использовать Redis для решения этой проблемы без блокировки на уровне БД?

Redis может атомарно проверить остаток и создать резерв через Lua-скрипт, не выполняя отдельные read и write. Но защита от overselling требует согласования долговечного учёта и отказов.

Читать ответ