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

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

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

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

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

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

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

Каталог

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

Найдено: 889
System Design

Как устроен паттерн Sidecar в Kubernetes на примере Istio или Envoy? Как этот паттерн позволяет вынести логику шифрования трафика (mTLS), трассировки запросов и повторных попыток (retries) из приложения?

Sidecar — отдельный контейнер рядом с приложением в Pod; Envoy может перехватывать сетевой трафик и применять общие политики. В sidecar-режиме Istio управляет конфигурацией и идентичностью прокси.

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

Что такое Cache Stampede (также Cache Missile или Thundering Herd)? Представьте, что из кэша Redis одновременно удалился ключ с тяжелым отчетом, который запрашивают 5000 пользователей в секунду. Что произойдет со слоем БД и как это предотвратить?

Cache stampede — одновременный пересчёт одного дорогого значения множеством запросов после промаха. При 5000 запросах в секунду это может перегрузить БД и вызвать каскад тайм-аутов.

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

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

Открытое соединение остаётся на одном инстансе, но события могут возникать на другом. Используйте общий broker/pub-sub и маршрутизацию к владельцу соединения; важное состояние храните вне процесса.

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

Вы хорошо раскрыли проверку контракта и версионирование. А как бы вы организовали хранение и повтор фоновых задач, чтобы обеспечить надежность и патентность?

Вероятно, под «патентностью» имеется в виду идемпотентность: повтор задания не должен повторять бизнес-эффект. Нужны устойчивое хранение, статус, lease, retries и уникальный ключ операции.

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

В чём разница между балансировкой нагрузки на 4-м уровне (L4: TCP/UDP) и 7-м уровне (L7: HTTP/HTTPS) модели OSI? Какой тип балансировщика, например HAProxy/Nginx или AWS NLB/IPVS, эффективнее выбрать для терминации миллионов долгоживущих WebSocket-соединений?

L4 распределяет транспортные соединения, L7 понимает HTTP и может маршрутизировать по host/path/заголовкам. Для миллионов WebSocket важны ресурсы соединений и TLS, а не только номер уровня.

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

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

Сервисы находят друг друга через service discovery: DNS, реестр или стабильную точку балансировки. Приложение обращается к имени сервиса, а не хранит случайные IP экземпляров.

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

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

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

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

Как бороться с проблемой Hot Shard («горячего шарда»), когда 90% трафика распределённой системы приходится на одну физическую ноду?

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

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

Как синхронизировать данные в Redis-кэше и основной базе данных?

Обычно основная БД — источник истины, а Redis хранит восстанавливаемые копии. После commit изменения кеш инвалидируют или обновляют, учитывая гонки, повторы событий и допустимую устарелость.

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

Как устроена система (архитектура RAG-ассистента для страхового брокера)?

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

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

Спроектируйте ограничение запросов по RPM для URL из очереди: лимит задаётся отдельно для каждого домена и считается в фиксированных минутных окнах. Как не превышать лимиты?

Перед отправкой атомарно резервируйте слот в счётчике «домен + минутное окно». Если лимит исчерпан, отложите URL до следующего окна, не отправляя запрос заранее.

Читать ответ