BA & SA | 10000 Interview questions
10.2K subscribers
173 photos
14 videos
343 links
Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7
Download Telegram
4692. налитик в финтех-компании, разрабатывающей приложение для трейдинга. Требуется защитить функцию перевода крупных сумм на внешние счета. Какой подход к аутентификации будет наиболее сбалансированным по соотношению безопасности и юзабилити?
Anonymous Quiz
48%
Адаптивная аутентификация: 2FA срабатывает при переводе > 50 000 ₽ или с нового устройства
1%
Использование только пароля, но с усиленным шифрованием канала связи
42%
Обязательная двухфакторная аутентификация (2FA) по SMS для каждого перевода
8%
2FA только при входе в приложение, а переводы — без дополнительных подтверждений
🧑‍🎓Объяснение:
В security-требованиях аналитик должен искать баланс между защитой и удобством.

А (Адаптивная аутентификация) — это risk-based подход:

Безопасность: Срабатывает на рисковые события (большая сумма, новое устройство, необычная геолокация).
Юзабилити: Не беспокоит пользователя при рутинных операциях.
Соответствие стандартам: Отвечает требованиям ЦБ РФ и 115-ФЗ по контролю за подозрительными операциями.

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

С (2FA на каждый перевод): Надежно, но убивает юзабилити — пользователи начнут искать более удобных конкурентов.
B (2FA только на вход): Оставляет уязвимость — если сессия украдена, злоумышленник сможет перевести любую сумму.
D (Только пароль): Не соответствует современным стандартам безопасности для финансовых операций.

💡 Ключевой вывод для аналитика:
Security-требования должны быть контекстно-зависимыми. Ваша задача — прописать в ТЗ правила, когда и при каких условиях срабатывают дополнительные проверки, основываясь на оценке рисков. Это и есть профессиональный подход к проектированию защищенных систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
№4693 категория вопросов: #ARCHINECTURE
4693. Вы анализируете проблему в e-commerce: ежедневный отчёт выполняется 25+ минут, хотя данные за день — всего ~50 000 заказов. Таблица orders проиндексирована, запрос использует SUM() и GROUP BY. В чём вероятная причина и как это исправить?
Anonymous Quiz
6%
Увеличить выделенную память для СУБД
28%
Добавить индекс на поле category_id
50%
Создать материализованное представление (materialized view), которое обновляется ночью
16%
Разделить запрос на несколько более простых
👍1
🧑‍🎓Объяснение:
Это классическая ситуация, когда аналитические (OLAP) запросы пытаются выполняться на операционной (OLTP) базе данных, что приводит к конфликту ресурсов и медленной работе.

Почему вариант C правильный:

Разделение нагрузки: Материализованное представление — это физическая копия результата запроса, которая обновляется по расписанию (например, раз в ночь). Отчёт получает данные из готовой «слепка», не нагружая основную таблицу orders в рабочее время.
Скорость: Выборка из материализованного представления происходит мгновенно, так как это простой SELECT из предварительно рассчитанной таблицы.
Предсказуемость: Время формирования отчёта не зависит от пиковой нагрузки на операционную систему.
Почему другие варианты не решат проблему:

A (Увеличить память): Поможет только если проблема именно в нехватке RAM для обработки запроса, но не устранит конфликт OLTP/OLAP.
B (Добавить индекс): Индекс на category_id уже, скорее всего, есть (раз используется GROUP BY). Новый индекс может даже замедлить вставку новых заказов.
D (Разделить запрос): Не решит фундаментальную проблему — тяжёлый аналитический запрос в рабочее время на операционных данных.
🔍 Глубинный анализ для системного аналитика:
Проблема здесь не техническая, а архитектурная. Аналитик должен был выявить это требование на этапе проектирования и предложить отдельное решение для отчётности:

Data Warehouse — для сложной аналитики
Материализованные представления — для ежедневных отчётов
OLAP-кубы — для многомерного анализа
📌 Практический совет: Когда в требованиях есть «ежедневные отчёты», сразу задавайте вопросы:

Какую задержку данных можно допустить? (реальное время/час/ночь)
В какое время запускать расчёты?
Нужна ли детализация до отдельных транзакций в отчёте?
Этот кейс показывает, как важно разделять операционную обработку и аналитическую обработку данных — принцип, лежащий в основе архитектуры современных data-driven приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
5
№4694 категория вопросов: #DBMS
4694. Запросы по поиску документов конкретного пользователя за последний месяц стали выполняться неприемлемо долго, хотя на поле user_id есть индекс. В чём наиболее вероятная причина проблемы и как её решить?
Anonymous Quiz
23%
Индекс на user_id фрагментирован — нужно выполнить REINDEX
57%
Запрос выбирает слишком много строк — добавить условие по дате и составной индекс
3%
Не хватает оперативной памяти — увеличить shared_buffers
17%
Нужно включить механизм кэширования запросов на уровне приложения
🧑‍🎓Объяснение:
Это классическая ситуация работы с большими таблицами временных данных, где начальный индекс становится неэффективным из-за специфики запросов.

🔍 Почему проблема возникает:

Индекс на user_id позволяет быстро найти ВСЕ документы пользователя за всю историю
У активного пользователя может быть 100K+ документов за несколько лет
После поиска по индексу СУБД всё равно должна просканировать и отсортировать все эти строки
При выборке "за последний месяц" фактически обрабатывается 99% ненужных данных
Почему вариант B правильный:

Составной индекс (user_id, created_at) решает проблему кардинально:

Данные уже отсортированы по пользователю И дате
СУБД находит первую запись пользователя за нужный период и читает последовательно только релевантные строки
Не нужно сортировать результаты или фильтровать лишнее
Статистика эффективности:

До: Сканирование 100K записей пользователя → фильтрация → сортировка
После: Сканирование 1-2K записей (только за нужный месяц) → готовый результат
Пример запроса, который станет эффективным:

```sql
SELECT * FROM documents
WHERE user_id = 12345
AND created_at >= '2024-10-01'
ORDER BY created_at DESC
```

-- Использует индекс (user_id, created_at)
Почему другие варианты не решат проблему:

A (REINDEX): Поможет, если индекс действительно фрагментирован на 40%+, но не изменит принципиальную неэффективность одно-колоночного индекса для такого запроса.
C (Увеличить память): Симптоматичное лечение. Проблема в логике доступа к данным, а не в ресурсах.
D (Кэширование): Маскирует проблему, но не решает её. При первом запросе или сбросе кэша задержки вернутся.
💡 Профессиональный совет аналитику:

При проектировании таблиц с историческими данными всегда задавайте вопросы:

«По каким полям чаще всего будет фильтрация?» → Составные индексы на комбинации этих полей
«Какой типичный диапазон выборки?» → Индексы должны поддерживать типичные сценарии (последние N дней/записей)
«Нужна ли сортировка в результатах?» → Индекс может обеспечивать предварительную сортировку
📊 Реальный пример из практики:
В одной из систем после добавления составного индекса (user_id, created_at, status) время выполнения типовых запросов сократилось:

Поиск документов пользователя: с 14 сек → 120 мс
Отчёт "Документы за месяц": с 8 сек → 90 мс
Нагрузка на БД: снизилась на 40%
🎯 Вывод: Правильные индексы — это не просто техническая оптимизация, а архитектурное решение, которое должно закладываться на этапе проектирования схемы данных. Аналитик, понимающий паттерны доступа к данным, может предотвратить такие проблемы до их возникновения.
Please open Telegram to view this post
VIEW IN TELEGRAM
5
№4695 категория вопросов: #REQUIREMENTS
4695. При сборе требований на модуль «Мгновенные переводы» заказчик хочет: 1) Переводы мгновенные, 2) Максимально безопасные, 3) С возможностью отмены в течение 24 часов, 4) Без нагрузки на основную БД. Что должен сделать аналитик?
Anonymous Quiz
1%
Зафиксировать как есть и передать разработчикам
97%
Структурировать требования, выявить противоречия и организовать сессию с заказчиком
2%
Отклонить требование об отмене как небезопасное
0%
Сразу предложить архитектурное решение
🧑‍🎓Объяснение:
Это классическая ситуация, когда стейкхолдеры выдают смешанные, частично противоречивые требования. Задача аналитика — не просто записать, а проанализировать, структурировать и разрешить противоречия.

🎯 Почему вариант B — правильный:
Разделение требований — первый шаг к ясности:
Функциональные:
«Переводы между клиентами банка»
«Возможность отмены перевода в течение 24 часов»
Нефункциональные:
«Мгновенное проведение» (скорость, latency)
«Максимальная безопасность» (security, compliance)
«Без нагрузки на основную транзакционную БД» (производительность, масштабируемость)
Выявление противоречий:
«Мгновенно» vs «Максимальная безопасность» — усиленные проверки безопасности (3D-Secure, фрод-мониторинг) требуют времени.
«Отмена в течение 24 часов» vs «Безопасность» — может создавать риски мошенничества (chargeback).
«Мгновенно» vs «Без нагрузки на основную БД» — синхронные транзакции нагружают БД.
Организация сессии с заказчиком позволяет:
Выяснить бизнес-цели за каждым требованием.
Определить приоритеты: что критично, а чем можно пожертвовать.
Найти компромиссы: например, «мгновенно» = до 5 секунд, отмена только через службу поддержки с аудитом.

Почему другие варианты ошибочны:
A (Передать как есть): Это позиция безответственного аналитика. Разработчики потратят время на уточнения, возможны переделки, сроки сорвутся. Аналитик — не курьер требований, а их архитектор и валидатор.

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

D (Предложить техническое решение сразу): Это преждевременное погружение в реализацию. Сначала нужно согласовать что и зачем, а потом уже как. К тому же, асинхронная очередь с модерацией нарушает требование «мгновенно».

💡 Как правильно действовать аналитику в таком кейсе:
Уточнить и детализировать каждое требование через вопросы:

«Что значит мгновенно? 1 секунда? 5 секунд?»
«Какие сценарии отмены переводов? Кто может инициировать?»
«Какую нагрузку на основную БД считаем допустимой?»
Документировать в формате, например:

```text
FR-001: Перевод между клиентами банка...
NFR-001: Время обработки 95% переводов ≤ 3 сек...
CONSTRAINT-001: Не использовать прямые транзакции в основной БД OLTP...
```

Провести воркшоп с участием бизнеса и техлидов, чтобы:
Обсудить технические ограничения
Оценить риски и стоимость реализации каждого требования
Зафиксировать осознанные компромиссы в согласованном бэклоге
Предложить варианты архитектуры уже после согласования требований:
Кэширование балансов
Event-driven архитектура с сагой для отмены
Отдельный read-only слой для переводов

Вывод для аналитика: Ваша ключевая ценность — не в записи пожеланий, а в управлении ожиданиями, выявлении противоречий и нахождении жизнеспособного баланса между бизнес-целями и техническими возможностями. Именно это отличает профессионального аналитика от простого «сборщика требований».
Please open Telegram to view this post
VIEW IN TELEGRAM
№4696 категория вопросов: #INTEGRATION
🧑‍🎓Объяснение:
Это классический сценарий использования паттерна «Strangler Fig Application» (Удушающий инжир) — стратегии постепенной замены унаследованных систем.

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

Постепенность и бесшовность:
Адаптер выступает «прослойкой», которая скрывает от нового микросервиса детали реализации legacy. Новый сервис вызывает единый REST-интерфейс, адаптер транслирует вызовы в SOAP и преобразует ответы.
Результат: Legacy продолжает работать без изменений, новый сервис разрабатывается в современном стеке.
Минимизация рисков:
Не нужно останавливать бизнес-критичную систему
Нет необходимости в risky big-bang миграции
Возможно поэтапное замещение: по мере готовности отдельных модулей новой системы адаптер перенаправляет вызовы на них
Гибкость и контролируемость:
Адаптер можно развивать: добавлять кэширование, мониторинг, circuit breaker, балансировку — не трогая legacy.
Почему другие варианты хуже или опасны:

A (Полная перепись legacy):
Это Big Bang migration — высокорисковый подход. Legacy-система часто не имеет тестов, документации, в ней скрыта критическая бизнес-логика. Ошибки при переписывании могут остановить работу склада на недели.
C (Общая база данных):
Антипаттерн интеграции. Нарушает инкапсуляцию, создаёт жёсткую связанность, усложняет развитие и масштабирование. Новый сервис будет завязан на схему данных legacy, которую сложно менять.
D (Остановка legacy на время миграции):
Бизнес-критичная система склада не может быть остановлена — это остановка отгрузок, приёмки товаров, работы всего e-commerce. Недопустимо.
📌 Роль аналитика в этом кейсе:

Вы должны:

Выявить ограничения: Legacy-систему нельзя менять, её схема данных не оптимизирована для новых нагрузок.
Предложить архитектурный паттерн: Strangler Fig, Anti-Corruption Layer.
Специфицировать функционал адаптера: какие методы SOAP маппятся на какие REST-эндпоинты, форматы данных, обработку ошибок, таймауты.
Заложить требования к наблюдаемости: логирование, метрики, алерты для мониторинга качества трансляции.
💡 Инсайт:
Адаптер — это не временный костыль, а полноценный стратегический компонент архитектуры. Он позволяет провести миграцию без остановки бизнеса и даёт время на тщательное тестирование новой системы. Десятки крупных компаний (Amazon, Netflix) прошли этот путь именно через Strangler Fig.

Практический пример:
Когда Spotify переходил с монолита на микросервисы, они вынесли авторизацию в отдельный сервис, но оставили заглушку в монолите, которая проксировала запросы в новый сервис. Только убедившись в стабильности, они удалили код из монолита.

Вывод:
Правильная стратегия интеграции с legacy — не разрушать, а оборачивать. Адаптер — ваш главный инструмент для эволюционной миграции.
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Разобраться в IT без перегруза

Сейчас легко утонуть в потоке новостей про AI, автоматизацию и цифровые инструменты. Каждый день - новые сервисы, громкие заголовки.

Мы сделали проще

В папке «IT» собраны Telegram-каналы экспертов, которые объясняют технологии по делу: что реально работает, где экономит ресурсы, где даёт рост. Папка сэкономит вам часы поиска и десятки случайных подписок.

Добавить можно здесь 🔡 https://t.me/addlist/kUCHduSsW5IxZjRi

Ссылка действительна только 24ч, успейте сохранить!

Попасть в папку
Please open Telegram to view this post
VIEW IN TELEGRAM
2
№4697 категория вопросов: #SECURITY
4697. Права зависят от должности, отдела, типа проекта и статуса. Какую модель доступа выбрать?
Anonymous Quiz
4%
DAC — владелец ресурса назначает права
2%
MAC — метки конфиденциальности
49%
RBAC — права назначаются ролям
44%
ABAC — доступ на основе атрибутов
🧑‍🎓Объяснение:
ABAC позволяет строить правила на основе множества атрибутов (должность, отдел, статус проекта, тип данных).
Ни одна другая модель не даёт такой гибкости:

DAC — создаст хаос из личных назначений
MAC — слишком жёсткая, не учитывает бизнес-атрибуты
RBAC — потребует сотни узких ролей (например, «Руководитель_Продаж_Активные_Проекты»)

ABAC описывает всё несколькими декларативными правилами:

text
Если должность = Руководитель отдела И отдел сотрудника = отдел проекта → полный доступ
Если должность = Аудитор И статус проекта = Закрыт → чтение
Вывод: Когда доступ зависит от контекста — выбирайте ABAC.
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥1
№4698 категория вопросов: #SECURITY
4698. Вы проектируете интеграцию с государственным порталом для получения персональных данных клиентов (паспортные данные, СНИЛС). Портал предоставляет REST API. Какое требование по безопасности обязательно должно быть в спецификации?
Anonymous Quiz
94%
Использовать шифрование TLS и взаимную аутентификацию (mTLS)
1%
Передавать данные в открытом виде внутри корпоративной сети
4%
Хранить логи всех запросов с персональными данными в открытом доступе
1%
Передавать данные через общую базу данных, доступную обоим системам
🧑‍🎓Объяснение:
Почему вариант А — единственно верный:

Шифрование при передаче (TLS) — обязательное требование
Любая передача персональных данных по открытым каналам (интернет) должна быть зашифрована. TLS (Transport Layer Security) гарантирует, что данные не будут перехвачены или изменены в пути. Это базовое требование и 152-ФЗ, и PCI DSS, и здравого смысла.

Взаимная аутентификация (mTLS) — best practice для B2B-интеграций
Взаимный TLS (mutual TLS) позволяет обеим сторонам удостовериться в подлинности друг друга: не только клиент проверяет сертификат сервера, но и сервер проверяет сертификат клиента. Это исключает риск подключения к поддельному порталу или приёма данных от неавторизованного отправителя.

Соответствие законодательству
Статья 19 152-ФЗ «Персональные данные» прямо требует обеспечивать конфиденциальность при обработке, в том числе при передаче. Роскомнадзор при проверках запрашивает наличие шифрования.

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

В (Открытая передача внутри сети):
Даже внутри корпоративной сети могут быть внутренние угрозы, перехват, скомпрометированные сегменты. PCI DSS и стандарты безопасности требуют шифрования везде, где данные покидают доверенную среду.

C (Открытые логи с ПДн):
Хранение персональных данных в логах в открытом виде — грубейшее нарушение. Логи часто имеют более слабую защиту, чем основные базы данных, и становятся источником утечек. Требуется либо не логировать ПДн вовсе, либо обезличивать/шифровать их.

D (Общая база данных):
Предоставление прямого доступа к своей БД внешней системе — антипаттерн интеграции и безопасности. Это создаёт неприемлемые риски: избыточный доступ, сложность контроля, масштабирование проблем доступа. Нарушается принцип наименьших привилегий.

📌 Что ещё должен учесть аналитик в требованиях:

Протокол и версия TLS — не ниже 1.2, с запретом устаревших шифров.
Управление сертификатами — кто выпускает, как обновлять, кто отвечает за отзыв.
Логирование без ПДн — фиксировать факт обмена, но не содержимое, либо маскировать данные.
Контракт данных — какие поля передаются, в каком формате, с какой периодичностью.

💡 Реальный кейс из практики:
При интеграции с Госуслугами (ЕСИА) обязательным требованием является использование ГОСТ-криптографии и взаимной аутентификации по сертификатам. Если аналитик этого не заложит в ТЗ, разработка интеграции остановится на этапе подключения к песочнице.

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