BA & SA | 10000 Interview questions
10.2K subscribers
175 photos
14 videos
346 links
Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7
Download Telegram
№4616 категория вопросов: #INTEGRATION
👩‍🏫Объяснение:
Backpressure (Обратное давление) — это механизм устойчивости и саморегулирования в системах, работающих с потоками данных. Его можно сравнить с предохранительным клапаном в водопроводе, который не дает трубе разорваться при слишком высоком давлении.
Классическая проблема без Backpressure:
1. Продюсер (Producer) генерирует сообщения с высокой скоростью (например, 10 000 в секунду).
2. Консьюмер (Consumer) может стабильно обрабатывать только 1 000 сообщений в секунду.
3. Сообщения начинают накапливаться в очереди (буфере).
4. Очередь переполняется → потребляется вся доступная память → процесс консьюмера (или брокера) падает с OutOfMemoryError. Система ломается.
Как работает Backpressure?
Это сигнальная обратная связь от получателя к отправителю. Консьюмер явно или неявно сообщает: «Стоп! Я перегружен, присылай данные медленнее или подожди».
Реализации в разных технологиях:
* На уровне TCP: Протокол TCP имеет встроенный механизм контроля перегрузки (congestion control) — получатель указывает размер своего приемного буфера (window size).
* Reactive Streams (RxJava, Project Reactor): Это стандартизированная модель, где Subscriber запрашивает у Publisher N элементов, и только после их обработки запрашивает следующую порцию (request(N)).
* Apache Kafka: Консьюмеры сами управляют offset'ами. Если консьюмер отстает, он просто не перемещает offset дальше, и сообщения остаются в партиции. Продюсер же может регулировать отправку на основе мониторинга отставания (lag) консьюмеров.
* HTTP/2 и gRPC: Поддерживают механизмы управления потоком (flow control).
Почему это важно для аналитика?
При проектировании высоконагруженных интеграций необходимо понимать не только happy path, но и поведение системы под нагрузкой. Нужно задавать вопросы:
* Что произойдет, если источник данных начнет генерировать информацию в 100 раз быстрее, чем обычно?
* Есть ли в нашей архитектуре механизмы, которые не дадут системе-приемнику «утонуть» в таком потоке?
* Как система сообщит о перегрузке? (Через метрики? Через падение? Через замедление?)
Без Backpressure система либо теряет данные (если очередь ограничена), либо падает. С Backpressure она устойчиво снижает производительность, но продолжает работать, давая время на масштабирование или устранение проблемы.
№4617 категория вопросов: #INTEGRATION
№4618 категория вопросов: #INTEGRATION
4618. Какой подход позволяет системам обмениваться данными напрямую, без промежуточных компонентов?
Anonymous Quiz
11%
Паттерн «Общая база данных»
74%
Прямая интеграция Point-to-Point
10%
Использование Enterprise Service Bus
5%
Шина событий (Event Bus)
👩‍🏫Объяснение:
Point-to-Point (P2P, «точка-точка») — это самый простой подход к интеграции, при котором две системы соединяются напрямую, без посредников.

Как это работает:

Система A знает точный адрес и протокол системы B
Отправляет данные напрямую (например, через HTTP-вызов или прямой доступ к БД)
Система B принимает и обрабатывает запрос
Пример: Мобильное приложение вызывает REST API бэкенда напрямую.

Плюсы:

Простота начальной реализации
Минимальная задержка (нет промежуточных звеньев)
Минусы (и почему это часто антипаттерн):
При добавлении третьей, четвертой системы количество связей растет экспоненциально
Создает «спагетти-архитектуру», которую невозможно поддерживать
Нет централизованного управления, логирования, мониторинга
Высокая связанность: изменение в одной системе требует изменений во всех связанных
№4619 категория вопросов: #INTEGRATION
4619. Какой протокол использует бинарный формат Protocol Buffers и HTTP/2 для высокопроизводительной интеграции?
Anonymous Quiz
7%
REST API
82%
gRPC
10%
SOAP/WSDL
2%
GraphQL
👩‍🏫Объяснение:
gRPC (Google Remote Procedure Call) — это современный высокопроизводительный фреймворк для удаленного вызова процедур, разработанный Google.

Ключевые особенности:

Protocol Buffers (protobuf):
Бинарный формат (в отличие от текстового JSON/XML)
Занимает меньше места, быстрее сериализуется/десериализуется
Строгая типизация через .proto файлы

Пример определения:

protobuf
message User {
int32 id = 1;
string name = 2;
string email = 3;
}


HTTP/2:

Мультиплексирование (несколько запросов в одном соединении)
Сжатие заголовков
Server push (сервер может отправлять данные без запроса)

Типы взаимодействия:

Унарный (один запрос — один ответ)
Стриминг (потоковая передача в обе стороны)
Клиентский или серверный стриминг

Где применяется:

Внутренняя коммуникация микросервисов
Системы реального времени (чат, уведомления)
Когда важны производительность и низкая задержка
№4620 категория вопросов: #INTEGRATION
4620. Какой механизм используется для изоляции сообщений, которые не могут быть обработаны после нескольких попыток?
Anonymous Quiz
4%
Retry Policy
12%
Circuit Breaker
79%
Dead Letter Queue
4%
Message Buffer
👩‍🏫Объяснение:
Change Data Capture (CDC) — это современный, эффективный паттерн интеграции, который кардинально меняет подход к синхронизации данных между системами.
Как работает (упрощенно):
1. Каждая серьезная СУБД (PostgreSQL, MySQL, Oracle) ведет журнал транзакций (Write-Ahead Log, WAL; binlog). Это низкоуровневая последовательность всех операций изменения данных (INSERT, UPDATE, DELETE), записанная перед их фактическим применением к таблицам. Цель СУБД — обеспечение согласованности и восстановление после сбоев.
2. CDC-агент (например, Debezium) подключается к СУБД не как обычное приложение, а читает этот журнал транзакций.
3. Агент превращает низкоуровневые записи журнала в удобные, структурированные события (например, { "op": "c", "after": { "id": 123, "name": "New Product" } }).
4. Эти события публикуются в шину событий (чаще всего Apache Kafka).
Практическое применение для системного аналитика:
1. Актуализация кэшей и поисковых индексов: При изменении товара в основной БД, событие через CDC мгновенно отправляется в Elasticsearch для обновления поискового индекса.
2. Построение агрегированных витрин данных: События из операционной БД стримятся в систему аналитики (например, ClickHouse) для построения актуальных отчетов.
3. Микросервисная синхронизация: Сервис «Заказы» и сервис «Доставка» имеют свои БД. При создании заказа, событие через CDC уведомляет сервис «Доставка», что нужно планировать доставку. Это альтернатива прямому вызову API.
4. Аудитинг и compliance: Полный поток всех изменений данных можно сохранять для целей аудита.
Роль аналитика: При проектировании систем, где критична актуальность данных или требуется реагирование на изменения, предлагать рассмотреть CDC как более эффективную и надежную альтернативу традиционному опросу (polling) по расписанию.
🤔1
№4621 категория вопросов: #INTEGRATION
4621. Какой паттерн используется для чтения изменений данных из журнала транзакций БД в реальном времени?
Anonymous Quiz
6%
API Gateway
15%
ETL Process
14%
Database Replication
66%
Change Data Capture
👩‍🏫Объяснение:
Change Data Capture (CDC) — это паттерн интеграции, который отслеживает изменения в базе данных (INSERT, UPDATE, DELETE) и передает их другим системам почти в реальном времени.

Как работает CDC:

Чтение журнала транзакций:

Каждая СУБД ведет журнал: WAL в PostgreSQL, binlog в MySQL, redo log в Oracle
В этот журнал записывается все, что происходит с данными
CDC-агент (например, Debezium) читает этот журнал
Преобразование в события:

```json
{
"op": "u", // операция: u=update, c=create, d=delete
"before": {"id": 1, "name": "Старое имя"},
"after": {"id": 1, "name": "Новое имя"},
"source": {"table": "users", "db": "main"}
}
```

Отправка в шину событий:

События публикуются в Kafka, RabbitMQ или другую очередь
Другие сервисы подписываются на эти события

Где применяется:

Синхронизация кэшей: При изменении товара в БД → обновление кэша в Redis
Аналитика в реальном времени: События сразу попадают в ClickHouse для отчетов
Уведомления: При создании заказа → отправка email клиенту
Поисковые индексы: Обновление Elasticsearch при изменении данных
№4622 категория вопросов: #INTEGRATION
4622. Какой компонент служит единой точкой входа для внешних клиентов и управляет аутентификацией, роутингом и ограничением запросов?
Anonymous Quiz
8%
Message Broker
83%
API Gateway
3%
Service Mesh
6%
Load Balancer
👩‍🏫Объяснение:
API Gateway — это специализированный сервер, который выступает в роли единого фасада для всех внешних клиентов (мобильных приложений, браузеров, партнерских систем).

Основные функции API Gateway:

🔐 Аутентификация и авторизация:

Проверка API-ключей, JWT-токенов, OAuth
Определение прав доступа для каждого клиента
Пример: Authorization: Bearer eyJhbGciOiJIUzI1NiIs...

🛣 Роутинг и версионирование:

Маршрутизация запросов к нужному внутреннему сервису
Поддержка разных версий API
Пример: /api/v1/orders → сервис заказов, /api/v2/orders → новая версия

⚡️ Ограничение скорости (Rate Limiting):

Защита от DDoS-атак и злоупотреблений
Квотирование по клиентам (например, 1000 запросов/час)
Пример: X-RateLimit-Limit: 1000, X-RateLimit-Remaining: 950

🔄 Агрегация данных:

Объединение ответов нескольких сервисов в один
Пример: данные о заказе + данные о доставке + данные о клиенте

📊 Мониторинг и аналитика:

Сбор метрик по всем запросам
Логирование для аудита и отладки
Архитектурный контекст:

```
text
Внешний клиент (мобильное приложение)

API Gateway ←─ Здесь аутентификация, rate limiting

┌──────┴──────┐
↓ ↓
Сервис Сервис
Заказов Платежей
```
👍3
№4623 категория вопросов: #INTEGRATION