ru
Feedback
BA & SA | 10000 Interview questions

BA & SA | 10000 Interview questions

Открыть в Telegram

Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7

Больше

📈 Аналитический обзор Telegram-канала BA & SA | 10000 Interview questions

Канал BA & SA | 10000 Interview questions (@systemanalystinterview) языкового сегмента Русский является активным участником. Сейчас сообщество объединяет 10 212 подписчиков, занимая 3 868 место в категории Карьера и 63 918 место в регионе Россия.

📊 Показатели аудитории и динамика

С момента создания невідомо проект демонстрирует стремительный рост, собрав аудиторию из 10 212 подписчиков.

Согласно последним данным от 21 июня, 2026, канал показывает стабильную активность. За последние 30 дней изменение числа участников составило 324, а за последние 24 часа — -3, при этом общий охват остаётся высоким.

  • Статус верификации: Не верифицирован
  • Уровень вовлечённости (ER): Средний показатель вовлечённости аудитории составляет 3.49%. В первые 24 часа после публикации контент обычно набирает 2.62% реакций от общего числа подписчиков.
  • Охват публикаций: В среднем каждый пост получает 356 просмотров. В течение первых суток публикация набирает 268 просмотров.
  • Реакции и взаимодействия: Аудитория активно поддерживает контент: среднее количество реакций на один пост — 2.
  • Тематические интересы: Контент сосредоточен на ключевых темах, таких как объяснение, индекс, user_id, субд, паттерн.

📝 Описание и контентная политика

Автор описывает ресурс как площадку для выражения субъективного мнения:
Вопросы и задачи, которые задают на собеседованиях на позицию Бизнес и Системного аналитика. По вопросам сотрудничества- @DeliveryManager7

Благодаря высокой частоте обновлений (последние данные получены 22 июня, 2026) канал поддерживает актуальность и высокий уровень охвата публикаций. Аналитика показывает, что аудитория активно взаимодействует с контентом, что делает его важной точкой влияния в категории Карьера.

10 212
Подписчики
-324 часа
+37 дней
+32430 день
Архив постов
👩‍🏫Объяснение: Партиционирование — наиболее фундаментальное и эффективное решение для временных рядов с ярко выраженным паттерном доступа к «горячим» (свежим) данным. Оно позволяет: * Резко уменьшить объем сканируемых данных: оптимизатор запросов будет обращаться только к партициям за последние 7 дней (партициональная прунинг). * Упростить управление жизненным циклом: удаление старых данных (DROP PARTITION) — мгновенная и дешевая операция. * Улучшить производительность обслуживания: операции VACUUM, REINDEX можно выполнять точечно на устаревших партициях. Создание покрывающего индекса (B) или его перестройка (C) могут помочь, но не решат проблему работы с огромной неделимой таблицей. Ручное перемещение данных (D) — это, по сути, «ручное» партиционирование, но менее эффективное и встроенное в СУБД.

4678. Вы обнаружили, что в таблице events с временными рядами 99% запросов обращаются только к данным за последние 7 дней. Таблица содержит данные за 5 лет. Какое изменение структуры хранения даст максимальный эффект ?
Anonymous voting

№4678 категория вопросов: #DBMS

👩‍🏫Объяснение: Здесь важны две вещи: гарантия уникальности комбинации «пользователь-сущность» и скорость проверки этой уникальности при вставке. Составной первичный ключ (user_id, entity_type, entity_id) (B) идеально решает обе задачи: 1. Он на уровне БД гарантирует, что дубликат невозможен. 2. Запрос SELECT 1 FROM votes WHERE user_id = ? AND entity_type = ? AND entity_id = ? для проверки будет выполняться очень быстро, используя поиск по первичному ключу (т.е. по кластеризованному индексу). Порядок колонок важен: если чаще проверяют по user_id, он должен быть первым. Ключ из варианта C тоже рабочий, но оптимизирован для поиска всех голосов за сущность, что менее частый сценарий. Автоинкремент (A) и UUID (D) не предотвращают дублирование логических записей без отдельного UNIQUE-ограничения.

4677. Таблица votes потенциально может расти на миллиарды строк. Критически важна скорость проверки, голосовал ли пользователь. Какой первичный ключ для таблицы votes будет оптимальным?
Anonymous voting

№4677 категория вопросов: #DBMS

👩‍🏫Объяснение: Когда требования к поиску выходят за рамки базовых возможностей реляционных СУБД, используется специализированный поисковый движок. Elasticsearch/Solr построены на инвертированных индексах, созданных именно для задач: * Полнотекстового поиска со стеммингом, синонимами, обработкой омонимов. * Нечеткого поиска (fuzzy). * Сложного ранжирования (relevance scoring) на основе TF-IDF, BM25. * Масштабирования и отказоустойчивости за счет распределенной кластеризации. «Подкручивание» существующей БД (A, D) дает лишь временный и ограниченный эффект. Кастомная реализация (B) неоправданно сложна и не будет соответствовать по качеству и производительности готовым решениям.

4676. Требуется сложная морфология, ранжирование по релевантности, фасетный поиск и отказоустойчивость. Какое решение является индустриальным стандартом?
Anonymous voting

№4676 категория вопросов: #DBMS

👩‍🏫Объяснение: Суть оптимистичной блокировки — позволить всем читать данные, но проверять, изменились ли они с момента чтения, в момент записи. Ключевой элемент — проверка версии в условии WHERE. Если другой процесс уже успел обновить документ, то его version изменился, и запрос текущего процесса (B) не затронет ни одной строки (affected rows = 0). Приложение, увидев 0 измененных строк, поймет, что произошел конфликт и должно предложить пользователю разрешить его. Вариант A увеличит версию всегда, потеряв первое обновление. Вариант C — это пессимистическая блокировка. Вариант D не использует версионирование вовсе.

4675. В таблице documents есть поле version (целое число). Как должен выглядеть SQL-запрос для обновления документа, который гарантированно предотвратит «потерянное обновление» (lost update), если два пользователя редактируют один документ?
Anonymous voting

№4675 категория вопросов: #DBMS

👩‍🏫Объяснение: Это классический паттерн разделения на OLTP (операционная обработка транзакций) и OLAP (аналитическая обработка). Прямые аналитические запросы к OLTP-системе (A, B) блокируют операционные транзакции и убивают производительность. ETL-процесс (C) переносит данные в специально спроектированное хранилище (DWH), где данные денормализованы, структурированы по темам (схема «звезда»/«снежинка») и используют эффективные для чтения форматы хранения (колоночные СУБД). Кэш (D) хорош для простых метрик, но не для гибкой, многомерной аналитики.

4674. Вы проектируете аналитическую систему для ритейла, где ключевые отчеты строятся по итогам дня, недели, месяца. Какой наиболее правильный и распространенный архитектурный подход?
Anonymous voting

№4674 категория вопросов: #DBMS

👩‍🏫Объяснение: На самом деле, для удаления 10к строк из 50 млн можно смело использовать осторожный DELETE с ограничением по времени (A), выполнив его в периоды низкой нагрузки, возможно, батчами (LIMIT 1000), чтобы не блокировать таблицу надолго. Однако, если бы речь шла об удалении миллионов строк, то вариант B (создание новой таблицы) был бы предпочтительнее, так как DELETE при огромном объеме — долгая, тяжелая операция, генерирующая много WAL-логов и потенциально блокирующая. Варианты C и D не очищают данные, а лишь маскируют проблему. В реалистичном кейсе с 10к записей правильнее A, но понимание альтернативы B для больших объемов — ключевое.

После обновления приложения в продекшене появилась ошибка, из-за которой в таблицу записывались платежи с нулевой суммой. Ошибку исправили. Как безопасно удалить ~10 000 некорректных записей из таблицы с 50 миллионами строк, не нарушая работу операций?
Anonymous voting

№4673 категория вопросов: #DBMS

👩‍🏫Объяснение: Независимые логические атрибуты (аспекты статуса) лучше хранить в отдельных колонках. Это дает максимальную простоту и эффективность: фильтрация (WHERE status_legal = 'approved') и индексация по каждому аспекту тривиальны, целостность данных легко контролируется. Хранение в одной строке (A) делает запросы неэффективными. Связь многие-ко-многим (B) избыточна для простых атрибутов. JSONB (D) гибок, но сложнее в валидации и обычно медленнее для частой фильтрации. Подход C следует принципу «одна колонка — один атомарный факт».

4670. В системе электронного документооборота у сущности «Договор» есть несколько взаимозависимых статусов: status_system, status_lega, status_financial. Как лучше смоделировать это в БД, чтобы легко добавлять новые аспекты статусов?
Anonymous voting