BA & SA | 10000 Interview questions
10.2K subscribers
172 photos
14 videos
342 links
Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7
Download Telegram
4769. Для системы заказов нужны: порядок событий для каждого заказа, 100 000 событий/с, отказоустойчивость. Какой брокер и настройка обеспечат баланс?
Anonymous Quiz
17%
RabbitMQ с классической очередью и несколькими потребителями
76%
Kafka с партиционированием по order_id и acks=all
2%
Redis Pub/Sub с постоянным хранением на диске
5%
ActiveMQ с персистентными очередями
Объяснение:

Почему Kafka подходит лучше всего?

Порядок сообщений: Kafka гарантирует строгий порядок внутри одной партиции. Если отправлять все события одного заказа с одинаковым ключом (order_id), они попадут в одну партицию и будут обрабатываться последовательно. RabbitMQ при нескольких потребителях порядок не гарантирует (даже с одним потребителем — да, но пропускная способность упадёт).

Высокая пропускная способность: Kafka рассчитана на 100 000+ событий/сек благодаря пакетной обработке, последовательной записи на диск и эффективному сжатию. RabbitMQ на таких объемах начинает деградировать (особенно с персистентностью).
Отказоустойчивость: acks=all в Kafka означает, что лидер ждёт подтверждения от всех реплик (in-sync replicas) перед ответом продюсеру. Ни одно сообщение не теряется, если хотя бы одна реплика жива. RabbitMQ с зеркалированием очередей тоже отказоустойчив, но при высоких нагрузках это снижает производительность сильнее, чем в Kafka.
Почему не подходят другие варианты?

A (RabbitMQ) — при нескольких потребителях порядок не гарантируется. Даже с одним потребителем пропускная способность будет ниже 100 000/с, особенно с персистентностью.
C (Redis Pub/Sub) — Pub/Sub не хранит сообщения для отставших потребителей (если потребитель упал — сообщения теряются). Redis Streams может, но уступает Kafka по масштабируемости.
D (ActiveMQ) — устаревший брокер, не рассчитан на такие нагрузки.

Реальный кейс:
Логистическая компания перешла с RabbitMQ на Kafka после того, как при пике 50 000 заказов/час порядок обработки начал нарушаться (сообщения одного заказа уходили разным потребителям). После настройки партиционирования по order_id и acks=all производительность выросла до 200 000/сек, а порядок стал строгим.

Что должен зафиксировать аналитик:

Выбор брокера не на вкус, а под требования: Kafka — для потоков больших объёмов с гарантией порядка и отказоустойчивостью; RabbitMQ — для сложной маршрутизации и малых/средних нагрузок.
В требованиях указать ключ партиционирования (order_id), настройку acks, количество реплик.

Вывод: Выбор брокера сообщений — архитектурное решение, влияющее на масштабируемость и надёжность. Аналитик должен понимать разницу, чтобы закладывать правильные нефункциональные требования.
🎯
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
⏱️Папка скоро исчезнет. И это не кликбейт.

Если ты маркетолог и до сих пор откладываешь «посмотреть потом»потом может не наступить.

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


📌 Готовые решения, которые можно брать и внедрять;
📌 Формулировки, которые реально продают;
📌 Подходы, которые выделяют тебя среди остальных.

☝️Но есть нюанс.

Доступ к папке закрывается.

Без громких анонсов, без второго шанса и без «ещё пару дней подержим».

Если ты понимаешь, что тебе это нужно — забирай сейчас👇

https://t.me/addlist/KJwPBSB44eg5NTli

Потом останется только читать чужие результаты.
2
№4770 категория вопросов: #TESTING
4770. В API заказа автотест в тесте стабилен, в бое падает при параллельных заказе и бонусе. Какой тип тестирования выявил бы дефект?
Anonymous Quiz
4%
Модульное тестирование
19%
Интеграционное тестирование
77%
Нагрузочное тестирование (или тестирование параллельных запросов)
0%
Тестирование безопасности
Объяснение:

Дефект проявляется только при параллельном выполнении двух операций (создание заказа и начисление бонусов), что указывает на проблему конкурентного доступа к общим данным (race condition). В тестовой среде автотесты выполнялись последовательно, поэтому дефект не проявлялся. В боевой среде при реальной нагрузке запросы идут параллельно, и возникает состояние гонки, приводящее к ошибке.

Нагрузочное тестирование (или тестирование параллелизма) специально симулирует одновременные запросы нескольких пользователей. Именно оно могло бы воспроизвести проблему на этапе тестирования до релиза.

Почему не другие варианты:

A (модульное) — проверяет отдельные функции изолированно, race condition не поймает.
B (интеграционное) — обычно проверяет взаимодействие компонентов в последовательном режиме.
D (безопасность) — не относится к проблеме.
Реальный кейс: В интернет-магазине при параллельном оформлении заказа и начислении кешбэка иногда списывались лишние бонусы. Причина — отсутствие блокировки строки в БД. Нагрузочный тест с 50 одновременными пользователями выявил бы проблему.

Что должен сделать аналитик:

Включать в план тестирования сценарии параллельных запросов для критичных операций.
Требовать от команды проведения нагрузочных тестов перед релизом.
В требованиях указывать необходимость блокировок (пессимистических или оптимистических) для разделяемых ресурсов.

#TESTING
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
№4771 категория вопросов: #TESTING
4771. После добавления промокода автотесты заказа упали. Баг исправлен, но тесты падают из-за нового поля в API. Какой вид тестирования нужен?
Anonymous Quiz
14%
Модульное тестирование
74%
Тестирование контрактов (Contract testing)
7%
Нагрузочное тестирование
5%
Юзабилити-тестирование
1
Объяснение:

Что произошло?
Разработчик изменил API (добавил новое поле в ответ), но не уведомил команду, которая пишет автотесты на клиентской стороне. Старые тесты ожидали старый формат ответа и упали. Это классический пример ломающего изменения (breaking change) в контракте между сервисами.

Что такое тестирование контрактов?
Это практика, при которой обе стороны (поставщик API и потребитель) договариваются о спецификации (контракте) и автоматически проверяют, что ни одна сторона не нарушает его. Инструменты: Pact, Spring Cloud Contract, Postman с коллекциями.

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

Потребитель пишет тест, в котором описывает ожидаемый формат ответа (поля, типы, обязательность).
Поставщик API запускает эти тесты в своём CI и не может выкатить изменение, которое их ломает, без согласования.
Пример контракт-теста на Pact (Python):

```python
from pact import Consumer, Provider

def test_order_contract():
expected = {
"order_id": 123,
"total": 1000,
"delivery_discount": 0 # новое поле
}
# Ожидаем, что API вернёт именно такую структуру
...
```
Почему не другие варианты:

A (модульное) — проверяет функции изолированно, не поймает изменение API.
C (нагрузочное) — проверяет производительность, а не корректность формата.
D (юзабилити) — про удобство интерфейса.

Реальный кейс:
В микросервисной архитектуре компании из 20 сервисов каждый месяц происходило несколько инцидентов из-за несовместимых изменений API. После внедрения контракт-тестов с Pact число таких инцидентов упало до нуля.

Что должен сделать аналитик:

Включить в определение готовности (DoD) требование наличия контракт-тестов для всех публичных API.
Фиксировать в спецификации обязательные и опциональные поля, а также версионирование API.
Требовать, чтобы breaking changes вводились только с новой версией API (v1, v2).

Вывод: Тестирование контрактов — это страховка от неожиданных изменений API, которые ломают интеграции. Аналитик, знающий этот инструмент, помогает команде избежать многих ночных дежурств. 🎯

#TESTING
Please open Telegram to view this post
VIEW IN TELEGRAM
1
This media is not supported in your browser
VIEW IN TELEGRAM
Заработай за месяц от 50000₽ на входящих заявках

Ниже делюсь экспертами, которые помогают выстроить систему продаж. Вы получаете гарантированный результат без выгораний и стресса.

Добавляй папку экспертов к себе и начинай зарабатывать уже сегодня

Все методы работают 💯. Начни делать продажи и ты

Все уже готово за тебя. Просто бери и делай https://t.me/addlist/yWaHGpxI5ethOGYy

Добавляй себе всю папку https://t.me/addlist/yWaHGpxI5ethOGYy и
Записывайся в подборку🫶
Please open Telegram to view this post
VIEW IN TELEGRAM
№4772 категория вопросов: #BA #SYSTEMDESIGN
4772. В микросервисной системе при оформлении заказа нужно: проверить остатки, зарезервировать товар, списать деньги (платежи), отправить уведомление. Сервис склада часто тормозит. Какой подход минимизирует задержку для пользователя и не потеряет заказы?
Anonymous Quiz
5%
Синхронно вызвать все сервисы в цепочке: склад → платежи → уведомления
78%
Асинхронно через брокер: принять заказ, ответить клиенту, выполнить шаги с компенсациями при ошибке
3%
Вызывать сервисы параллельно и ждать все ответы
14%
Использовать распределённую транзакцию (2PC)
😁😆😁 Ты ведь тоже это замечаешь?

Пока одни «присматриваются» к нейросетям— другие уже зарабатывают на этом 💵

И самое интересное — порог входа сейчас минимальный.
Не нужно быть программистом.
Нужно только одно:
понимать, как именно использовать ИИ под свои задачи.


Я тут собрал папку с экспертами в этой теме.
Можешь добавиться и посмотреть, как это делают другие 👇

https://t.me/addlist/A0vy8zWBM1gyNTky
Please open Telegram to view this post
VIEW IN TELEGRAM
Объяснение:

Проблема: Если сервис склада тормозит, синхронный вызов (A) заставит пользователя ждать. Параллельные вызовы (C) тоже приведут к ожиданию самого медленного. 2PC (D) ещё медленнее и не масштабируется.

Решение — асинхронная сага (Saga):

Пользователь нажал «Оформить» → система сразу отвечает «Заказ принят в обработку».
Событие OrderCreated кладётся в брокер (Kafka/RabbitMQ).
Отдельные обработчики (часто воркеры) слушают события и выполняют шаги: резервирование, списание, уведомление.
Если шаг упал (например, товара нет), запускается компенсация: возврат денег, отмена резерва.
Пример кода (Kafka + компенсация):

```python
# Сервис заказов
def create_order(order):
save_to_db(order, status='PENDING')
kafka.send('order_created', order)
return {"status": "accepted", "order_id":
order.id}

# Сервис склада
def on_order_created(order):
if reserve_stock(order.items):
kafka.send('stock_reserved', order)
else:
kafka.send('stock_failed', order)

# Сервис платежей
def on_stock_reserved(order):
if process_payment(order):
kafka.send('payment_succeeded', order)
else:
kafka.send('payment_failed', order)

# Компенсация
def on_stock_failed(order):
kafka.send('compensate_payment', order) # возврат денег
```
Почему это выигрывает:

Пользователь не ждёт — UX высокий.
Система не блокируется на тормозящем сервисе склада.
При сбое можно откатить через компенсации (eventual consistency).
Легко масштабировать обработчики.
Реальный кейс: В Ozon при оформлении заказа пользователь сразу видит подтверждение, а резервирование и оплата идут фоном. Если товар закончился — приходит push‑уведомление, а деньги возвращаются автоматически. Это и есть асинхронная сага.

Что должен заложить аналитик:

Асинхронность для длительных операций.
Идемпотентность обработчиков (чтобы дубликаты не ломали логику).
Компенсации для каждого шага (откат).
Мониторинг «зависших» саг.

Вывод: Асинхронная сага — стандарт для микросервисов, где важна скорость отклика и слабая связанность. Аналитик, предлагающий такое решение, спасает и пользовательский опыт, и надёжность. 🎯

#SYSTEMDESIGN
Please open Telegram to view this post
VIEW IN TELEGRAM
Всё, можно выдыхать — мы собрали для вас идеальную папку Telegram-каналов 📱 по схеме ALL IN ONE 🔥

Серьёзно. Больше не нужно мониторить сотни источников в надежде найти адекватных авторов. Мы сделали это за вас и заодно попали в эту ПОДБОРКУ сами ✔️

Что внутри? Только лучшее:
* ИИ — не хайп, а реальные инструменты и внедрения
* Технологии — тренды, обзоры, инсайты от первых лиц
* Карьера — как найти работу, вырасти и не выгореть
* HR Tech — кто и как нанимает профессионалов прямо сейчас
* AI Life hacks — как выжить и зарабатывать за границей с помощью возможностей ИИ
Открываете вечером, завариваете что покрепче — и улетаете в чтение с пользой 📑
ПАПКА 👈 здесь, забирайте - там реально круто 👌

📌 Добавляйте в избранное и скидывайте ссылку коллегам. Отписаться можно в любой момент. Остаться — тоже ✔️ * Ссылка ➡️ https://t.me/addlist/g24qP0CEdUs5N2Jk
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
ИИ — ЭТО УЖЕ НЕ «КОГДА-НИБУДЬ ПОТОМ» ... ОН ПРЯМО СЕЙЧАС ПЕРЕПИСЫВАЕТ ПРАВИЛА ИГРЫ 🖋

Тексты, аналитика, продажи, дизайн, экономия десятков часов в неделю — это не футурология.
Это ваш обычный вторник, если вы в теме.

Вопрос больше не в том, заменит ли ИИ людей.
Вопрос в том, кто обгонит вас, пока вы раздумываете.


Хотите быть среди первых, кто использует нейросети на все сто?

Тогда вот что вам нужно ⚡️:
👉 ПОДБОРКА реально сильных и продвинутых экспертов по нейросетям, ИИ, IT & HR Tech, а также последние - AI Life hacks

Забирайте, пока другие бездумно скролят ленту новостей.
Отписаться можно в любой момент — без проблем ✔️

Ссылка на ПАПКУ ⬇️
https://t.me/addlist/g24qP0CEdUs5N2Jk * Добавляйте себе в избранное и скидывайте ссылку коллегам.
🔥1
№4773 категория вопросов: #BA #SYSTEMDESIGN
4773. При росте до миллиона пользователей видеочата: медиасерверы перегружены, БД не выдерживает записей комнат. Какое архитектурное решение масштабирует систему?
Anonymous Quiz
2%
Увеличить мощность одного сервера (вертикальное масштабирование)
95%
Горизонтальное масштабирование с шардированием комнат по географическому признаку и WebRTC SFU
0%
Переписать всё на одном сервере на Go
4%
Хранить все комнаты в Redis без репликации
Объяснение:

Почему вертикальное масштабирование (A) не спасёт?
Рано или поздно упираемся в физические пределы (память, CPU, сеть). К тому же медиасерверы (WebRTC) требуют низкой задержки — один сервер физически не обработает миллион пользователей.

Почему B — правильное решение?

Горизонтальное масштабирование (добавление серверов) — каждую комнату можно отдать на отдельный сервер или группу серверов.
Шардирование по географическому признаку — пользователи из России идут на сервер в Москве, из Европы — во Франкфурт, что снижает задержку (latency).
WebRTC Selective Forwarding Unit (SFU) — сервер, который ретранслирует потоки между участниками, оптимизируя трафик. SFU могут быть объединены в кластер.
Пример схемы:

Балансировщик (например, HAProxy) по геолокации направляет запрос на создание комнаты на ближайший SFU-кластер.
База данных комнат шардирована по room_id или географическому региону.
При выходе из строя одного SFU, участники переподключаются к другому в том же регионе (failover).

Почему не C (один сервер на Go)?
Не поможет, проблема в распределении нагрузки, не в языке.

Почему не D (только Redis без репликации)?
Redis не подходит как первичное хранилище для метаданных комнат (нет персистентности, сложно масштабировать запись). Можно использовать Redis как кэш, но нужна основная БД с репликами.

Реальный кейс:
Zoom использует географически распределённые кластеры медиасерверов. При создании комнаты она назначается на ближайший дата-центр, внутри дата-центра — на конкретный сервер. Балансировка и шардирование позволили масштабироваться до сотен миллионов участников.

Что должен заложить аналитик:

Требование к географической маршрутизации (например, «время ответа не более 100 мс для 95% пользователей»).
Отказоустойчивость кластера — при падении одного сервера комнаты перераспределяются.
Мониторинг загрузки медиасерверов и автоматическое добавление новых узлов.
Шардирование БД по room_id или по региону.

Вывод: Проектирование масштабируемой системы видеоконференций — это не про «взять сервер побольше», а про распределённую архитектуру с географическими шардами и специализированными медиасерверами. Аналитик, понимающий эти принципы, закладывает в требования горизонтальное масштабирование и географическую маршрутизацию. 🎯

#SYSTEMDESIGN
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
№4774 категория вопросов: #REQUIREMENTS
4774. Заказчик просил автоматически находить аномалии и сообщать о них. Аналитик записал общее требование. На приёмке система находила не те аномалии и уведомляла слишком часто. Что упустил аналитик?
Anonymous Quiz
0%
Согласование с разработчиками
99%
Конкретизацию термина «аномалия» и правил уведомления (бизнес-правила, пороги, примеры)
1%
Требования к производительности
1%
Прототип интерфейса уведомлений