BA & SA | 10000 Interview questions
10.2K subscribers
171 photos
14 videos
341 links
Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7
Download Telegram
Объяснение:

Проблема
Когда сервис В недоступен, множество экземпляров сервиса А одновременно начинают повторные попытки с фиксированным интервалом. Это создаёт синхронизированные всплески нагрузки, которые мешают восстановлению. Это называется retry storm (шторм повторных вызовов).

Решение
Экспоненциальная задержка (exponential backoff) — интервал между ретраями удваивается (1, 2, 4, 8 секунд). Это раздвигает по времени пики нагрузки.

Джиттер (jitter) — случайное небольшое смещение, чтобы разные экземпляры не синхронизировались.
Ограничение числа ретраев (например, 5 попыток).
Circuit Breaker — после определённого числа ошибок быстрый сброс без вызова вообще.

Почему не другие варианты
A — deadlock относится к блокировкам в БД.
C — race condition — состояние гонки, не то.
D — thundering herd — асинхронная проблема, но решение с очередями не прямое.

Реальный случай
В Amazon одна из внутренних систем легла из-за retry storm. После внедрения экспоненциального бэккотта и джиттера инциденты прекратились.

Требования аналитика
Политика ретраев: начальная задержка 1 сек, максимум 10 сек, коэффициент 2, джиттер 0-30%.
Please open Telegram to view this post
VIEW IN TELEGRAM
№4823 категория вопросов: #DBMS
4823. Нужно отображать бесконечную ленту новостей (скроллинг). Запрос с OFFSET 10000 LIMIT 10работает очень медленно. Какой метод пагинации использовать для большой глубины?
Anonymous Quiz
1%
Повысить размер кэша БД
93%
Пагинация на основе курсора (keyset pagination) — использовать WHERE created_at < последнее_значение
5%
Использовать OFFSET с подзапросом
1%
Сгружать всю таблицу в приложение и фильтровать
Честно, мне кажется, через пару лет навык работы с ИИ будет таким же базовым,
как умение пользоваться интернетом.

И самое интересное — многие это до сих пор недооценивают.

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


Я для себя собрал папку с сильными экспертами по ИИ.
Там — реальные инструменты, кейсы и способы использовать нейросети с пользой.

Если вам тоже интересна эта тема — добавляйте папку 👇

https://t.me/addlist/KuqHb68lTqhhNDJi


доступ 48 часов
Объяснение:

Почему OFFSET плох
OFFSET заставляет базу пропускать все предыдущие строки (10000 записей), даже если они не нужны. При глубине 1 млн строк производительность катастрофична.

Пагинация на основе курсора
Вместо 
OFFSET запрос использует условие на индексированное поле, по которому идёт сортировка, например:
SELECT * FROM news WHERE created_at < last_seen_date ORDER BY created_at DESC LIMIT 10.
Переменная 
last_seen_date — значение из последней записи предыдущей страницы. Это называется keyset pagination или seek method.

Преимущества
База сканирует только нужные строки + ограниченный диапазон.
Работает за O(логарифм) по индексу.
Не зависает на больших смещениях.

Требования
Индекс на поле сортировки (например, 
created_at).
Уникальный вторичный ключ для разрешения связей (добавить 
id в ORDER BY).

Реальный пример
Twitter и Reddit используют курсоры для бесконечной ленты.

Вывод
Аналитик должен потребовать использования курсора вместо 
OFFSET для любых бесконечных списков.
Please open Telegram to view this post
VIEW IN TELEGRAM
№4824 категория вопросов: #ARCHITECTURE
4824. В системе из 5 микросервисов при каждом обновлении данных нужно уведомлять 3 других сервиса. Прямые вызовы привели к большой связанности и падению одного сервиса, блокирующему других. Какой архитектурный стиль снизит связанность?
Anonymous Quiz
1%
Перейти на синхронные вызовы с ретраями
99%
Внедрить событийно-ориентированную архитектуру, где сервисы публикуют события в брокер
0%
Сделать всё в одном монолите
0%
Использовать общую базу данных для уведомлений
Объяснение:

Проблема
Прямые синхронные вызовы между сервисами создают жесткую связанность. Когда сервис А вызывает Б, В, Г, то падение любого из них может затронуть А. Событийная архитектура решает это.

Event-driven
Сервис-источник публикует событие в брокер (Kafka, RabbitMQ).
Подписчики (другие сервисы) получают события асинхронно.
Источник не знает о подписчиках и не ждёт ответа.
Отказ одного подписчика не влияет на источник и других.

Почему это снижает связанность
Слабая связанность — публикация события и его обработка разделены.
Отказоустойчивость — брокер буферизует события, упавший подписчик получит их при восстановлении.
Легко добавлять новых подписчиков без изменения источника.

Почему не другие
A — ретраи не решат связанность.
C — монолит против микросервисной идеи.
D — общая БД создаёт другую связанность.

Реальный пример
Upwork перешёл на event-driven и ускорил доставку уведомлений в реальном времени.

Вывод аналитика
Событийная архитектура — стандарт для слабо связанных микросервисов. Аналитик должен в требованиях указывать асинхронное взаимодействие для всех бизнес-событий, не требующих немедленного ответа.
Please open Telegram to view this post
VIEW IN TELEGRAM
№4825 категория вопросов: #REQUIREMENTS
4825. Вам нужно оценить стоимость разработки системы для аренды самокатов. Бизнес-функции: «заблокировать самокат», «начать поездку», «завершить поездку», «списать оплату». Какой метод позволит измерить объём требований независимо от технологии?
Anonymous Quiz
10%
Количество пользовательских историй
82%
Метод COSMIC – считаем функциональные процессы, триггеры и объекты данных
1%
Количество экранов в прототипе
7%
Стори-поинты на основе усреднения
Объяснение:

Почему это важно
Заказчикам нужна объективная оценка размера требований до начала разработки. Метод COSMIC позволяет измерить функциональный размер в единицах CFP (COSMIC Function Points) на основе логики данных, независимо от языка и платформы.

Как работает COSMIC (упрощённо)
Выделяем функциональные процессы (например, «Начать поездку»).
Для каждого процесса определяем триггер (событие, инициирующее процесс – например, пользователь отсканировал QR-код).
Определяем объекты данных, которые процесс читает или изменяет (например, состояние самоката, ID пользователя, временная метка).
Каждое перемещение данных (вход, выход, чтение, запись) – 1 CFP.
В примере с самокатом:
«Начать поездку»: триггер – сканирование; читается статус самоката, записывается начало поездки, обновляется счётчик. Это даст, скажем, 4 CFP.
Суммируя по всем процессам, получим объективный размер.

Почему не другие варианты
A (количество историй) – зависит от степени детализации, субъективно.
C (количество экранов) – не отражает сложность логики.
D (стори-поинты) – относительная оценка, не переносится между проектами.

Реальный кейс
Крупный банк использовал COSMIC для оценки размера кредитного конвейера. Оказалось, что оценка в CFP отличается от экспертной на 15%, но зато прозрачна для заказчика.

Вывод
Аналитик, владеющий COSMIC, может дать объективную оценку размера требований и обосновать бюджет.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21
№4826 категория вопросов: #INTEGRATION
4826. Вам нужно синхронизировать данные из реляционной OLTP-базы в аналитическое хранилище (DWH) с минимальной задержкой (< 5 секунд). Традиционный ETL ночью не подходит. Какой подход обеспечит почти реальное время и не нагрузит исходную систему?
Anonymous Quiz
1%
Периодический SELECT всех изменённых строк по флагу
95%
Change Data Capture (CDC) через чтение лога транзакций (например, Debezium + Kafka)
1%
Триггеры на каждую таблицу
2%
Отказ от синхронизации, использовать прямое чтение из OLTP для отчётов
Объяснение:

Проблема
Периодический SELECT из большой OLTP-базы создаёт нагрузку и не обеспечивает задержку 5 секунд. Триггеры замедляют транзакции прямо в продовой системе.

Решение – CDC
Change Data Capture читает журнал транзакций (WAL в PostgreSQL, binlog в MySQL) и отправляет изменения (INSERT, UPDATE, DELETE) в Kafka. Потребитель (например, коннектор к ClickHouse) воспроизводит их в DWH с задержкой миллисекунды.
Преимущества
Минимальная нагрузка на исходную БД (читается уже сформированный лог).
Гарантированный порядок и сохранность (можно воспроизвести с любого смещения).
Не требует изменений в таблицах (ни триггеров, ни флагов).
Почему не другие варианты
A – высокий load, не даст 5 секунд.
C – триггеры замедляют вставку/обновление.
D – прямое чтение из OLTP убивает производительность аналитики.

Реальный пример
В крупном ритейлере CDC + Kafka синхронизирует 5000 изменений/сек с задержкой 1 секунда.

Требования аналитика
Использовать логическую репликацию или инструмент типа Debezium.
Обеспечить идемпотентность в целевой системе.
Please open Telegram to view this post
VIEW IN TELEGRAM
№4827 категория вопросов: #SYSTEMDESIGN
Объяснение:

Проблема
Если параметры зашиты в код или переменные окружения на каждом сервере, изменение требует передеплоя десятков сервисов – долго и рискованно.

Централизованная конфигурация
Сервисы при старте обращаются к серверу конфигурации (Spring Cloud Config, Consul, etcd) и получают значения. Некоторые системы позволяют обновлять конфигурацию на лету через механизм watch (сервисы подписываются на изменения). Kubernetes ConfigMap можно обновить, но требуется перезапуск подов (или reinterpret средствами operator).

Преимущества
Централизованное управление одной точкой.
Возможность версионирования и отката конфигурации.
Без передеплоя (если сервис перечитывает конфиг по сигналу или периодически).

Почему не подходят другие
A – передеплой каждого сервиса при каждом изменении параметра.
C – нет стандартного механизма для любого языка.
D – глобальные env подразумевают остановку сервисов.

Реальный пример
Netflix использует Archaius + свой сервер конфигурации, чтобы управлять тысячами сервисов.

Вывод аналитика
В требованиях к архитектуре нужно указать: «Конфигурация должна быть вынесена из кода и управляться централизованно».
Please open Telegram to view this post
VIEW IN TELEGRAM
ХОЧЕШЬ ПОСТОЯННО БЫТЬ В КУРСЕ И ДЕРЖАТЬ РУКУ НА ПУЛЬСЕ НОВИНОК AI & IT ?! Технологии не ждут. А ты?

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

Пока большинство спит, лишь немногие тестируют новые связки и вырываются вперёд. Хочешь быть среди них?

Забирай ПОДБОРКУ со свежими ИИ-инструментами и фишками. Без воды — только то, что реально упрощает работу.

👉 Делимся знаниями и аудиторией — растём вместе ⚡️ Забирай ПАПКУ бесплатно. * Отписаться можно в любой момент. Остаться — тоже. ✔️

Не выпадай из обоймы - будь всегда на острие ! 📌
🔥1
№4828 категория вопросов: #REQUIREMENTS
4828. Через полгода заказчик просит удалить функцию «печать отчёта». После удаления ломается другой модуль. Чего не хватало с самого начала?
Anonymous Quiz
15%
Детальной API-спецификации
76%
Матрицы трассируемости требований (RTM)
0%
Еженедельных созвонов с заказчиком
9%
Логирования всех вызовов функций
Объяснение:

Почему RTM важна?
В больших системах требования редко живут изолированно. Функция «печать отчёта» может использоваться в других модулях: например, отчёт может быть вложением в email, данными для экспорта в Excel, основой для графика. Удаляя её, разработчик должен знать обо всех связях.

Что такое RTM?
Это таблица, где строки — требования, столбцы — компоненты системы (тест-кейсы, модули кода, UI-экраны). На пересечении отмечается связь. Когда требование меняется или удаляется, аналитик сразу видит, какие артефакты нужно проверить.

Реальный кейс: В CRM при удалении поля «регион» из формы клиента перестала работать валидация адреса в модуле доставки — разработчик не знал о связи. RTM выявила бы её за минуту.

Вывод: RTM — не бюрократия, а инструмент контроля изменений. Аналитик обязан поддерживать её хотя бы в простом виде (Excel, Jira связи).
Please open Telegram to view this post
VIEW IN TELEGRAM