Вопросы для собеседования бизнес-аналитика
Готовый набор для интервьюера: 36 вопросов с тезисами эталонного ответа, задача, рубрика и план встречи.
На собеседовании бизнес-аналитика хорошо работает схема на 60 минут: 3-4 устных вопроса по стеку, практический кейс, проектирование для middle и выше и вопросы кандидата. Ниже вопросы по грейдам из базы Техпрогона: у каждого тезисы, которые должен назвать сильный кандидат.
Всего в базе по этой роли 220 устных вопросов с чек-листом ответа.
Как построить техсобес на 60 минут
0-5 мин
Знакомство
Кто вы, формат встречи, кандидат коротко о себе и последнем проекте.
5-20 мин
Вопросы по стеку
3-4 устных вопроса из набора ниже. Сверяйте ответ с тезисами.
20-45 мин
Практический кейс
Ситуация из работы. Важно, как кандидат рассуждает и что уточняет.
45-55 мин
Проектирование
Для middle и выше: система или решение целиком. Для junior: ещё вопросы.
55-60 мин
Вопросы кандидата
Что спросил кандидат, тоже сигнал: интерес к задачам и команде.
Junior: 12 вопросов
Основы: как устроено и зачем. Хватит 3-4 вопросов на встречу.
Расскажите, как вы строите CJM.
Что хотим услышать
- Выбор сегмента и сценария
- Сбор данных: интервью, обращения, аналитика, наблюдение
- Слои: этапы, действия, точки контакта, эмоции, боли
- Метрики на этапах
- Возможности и приоритеты, владельцы улучшений
Если ответил, копните глубже
Расскажи, какие шлюзы и события бывают в BPMN и как не ошибиться при их использовании.
Что хотим услышать
- XOR, AND, OR, событийный: смысл каждого
- Слияние тем же типом шлюза, что и разделение
- События: стартовое, промежуточное, конечное, граничное
- Триггеры: сообщение, таймер, ошибка
- Пулы и поток сообщений между ними
Если ответил, копните глубже
Объясните, как считать retention и какие бывают виды.
Что хотим услышать
- Когорты по моменту начала
- Классический N-day: активен ровно в день N
- Rolling: в день N или позже
- Bracket: активен в интервале
- Выбор по естественной частоте продукта
- Взвешенное среднее по когортам
Если ответил, копните глубже
Чем отличается WHERE от HAVING? Приведи пример, где нужны оба.
Что хотим услышать
- WHERE фильтрует строки до группировки, HAVING фильтрует группы после
- В WHERE нельзя агрегаты, в HAVING можно
- Порядок: FROM, WHERE, GROUP BY, HAVING, SELECT
- Условия без агрегатов лучше писать в WHERE: меньше строк до группировки
- Пример: WHERE status = 'paid' и HAVING SUM(total) > 10000
Если ответил, копните глубже
Назовите ваши сильные стороны.
Что хотим услышать
- Две-три стороны, а не список из десяти
- Каждая подкреплена примером
- Стороны связаны с вакансией
- Нет пустых слов вроде «стрессоустойчивый, коммуникабельный» без доказательств
- Уверенно, без хвастовства
Если ответил, копните глубже
Что такое scope creep и как вы с ним боретесь?
Что хотим услышать
- Определение: расползание объёма мелкими добавлениями
- Фиксация объёма и раздела «вне рамок» на старте
- Процесс изменений: оценка, решение владельца
- Ответ «да, и вот что выпадет» вместо молчаливого «да»
- Пример из практики
Если ответил, копните глубже
Объясни нормальные формы до третьей на примере и скажи, когда денормализация оправдана.
Что хотим услышать
- 1НФ: атомарность, пример с телефонами в одной ячейке
- 2НФ: зависимость от всего составного ключа, пример order_items и название товара
- 3НФ: нет транзитивных зависимостей, пример сотрудник и название отдела
- Зачем: аномалии вставки, обновления, удаления
- Денормализация ради чтения и её цена: поддержка согласованности
- Исторические снимки (цена в заказе) не дублирование
Если ответил, копните глубже
Какие метрики вовлечённости вы будете смотреть для приложения для фитнеса?
Что хотим услышать
- Определение активности через тренировку, а не открытие
- DAU, WAU, MAU и stickiness с учётом естественной частоты
- Частота: тренировок в неделю на активного
- Глубина: завершённые тренировки, длительность
- Распределение L28 или L7
- Связь с удержанием и подпиской
Если ответил, копните глубже
Расскажи, какие бывают JOIN и как каждый влияет на число строк в результате.
Что хотим услышать
- INNER: только пары, где условие ON истинно
- LEFT/RIGHT: все строки одной стороны, у недостающей стороны NULL
- FULL: все строки обеих сторон
- CROSS: декартово произведение, N × M строк
- Связь один ко многим размножает строки «одной» стороны, два таких JOIN перемножают
- Строки с NULL в ключе не соединяются: NULL = NULL не true
Если ответил, копните глубже
Какие у вас слабые стороны?
Что хотим услышать
- Назвал реальную слабость, а не штамп
- Слабость не критична для роли
- Рассказал, что делает, чтобы её компенсировать
- Есть пример прогресса
- Коротко, без самобичевания
Если ответил, копните глубже
Какие документы вы писали как бизнес-аналитик и как они устроены?
Что хотим услышать
- Vision and Scope: цели и границы
- BRD: структура по разделам
- Глоссарий и журнал решений
- Отличие от SRS
- Документ под читателя, а не ради документа
Если ответил, копните глубже
Какие техники выявления требований ты знаешь и как выбираешь технику под ситуацию?
Что хотим услышать
- Интервью: глубина по одному стейкхолдеру
- Воркшоп: согласование нескольких сторон, нужен фасилитатор
- Наблюдение: рутинные действия, которые не проговаривают
- Анкета и аналитика: большая аудитория, статистика
- Анализ документов и существующей системы
- Выбор зависит от числа людей, доступа к ним, типа знаний и сроков
Если ответил, копните глубже
Middle: 12 вопросов
Практика: почему так, какие компромиссы, что ломается.
Как вы ищете корневую причину проблемы? Какими инструментами пользуетесь?
Что хотим услышать
- Формулирую проблему с цифрами, без решения
- Собираю данные, где и когда проявляется
- Исикава на воркшопе для широкого списка гипотез
- 5 почему для углубления
- Проверяю гипотезы данными, а не мнениями
- Ищу причину в процессе, а не виноватого
Если ответил, копните глубже
Расскажи, чем Kafka отличается от RabbitMQ и как ты выбираешь между ними.
Что хотим услышать
- RabbitMQ: брокер очередей, exchange и маршрутизация, сообщение удаляется после ack
- Kafka: журнал, топики и партиции, хранение по сроку, перечитывание
- Порядок: в очереди у RabbitMQ, в партиции у Kafka по ключу
- Масштабирование: consumer groups в Kafka
- Выбор: задачи и маршрутизация против потока событий, нагрузки и перечитки
Если ответил, копните глубже
Спроектируйте дашборд для продакта мобильного приложения доставки.
Что хотим услышать
- Аудитория и вопрос: как чувствует себя продукт сегодня и за неделю
- Верхний ряд: North Star и 3-4 ключевые метрики со сравнением
- Воронка заказа по шагам
- Retention и новые пользователи
- Срезы: платформа, город, канал
- Определения, источники, алерты
Если ответил, копните глубже
Спроектируй схему базы для заказов интернет-магазина: клиенты, товары, заказы, оплаты. Какие таблицы, ключи и ограничения?
Что хотим услышать
- Таблицы customers, products, orders, order_items, payments и их связи
- order_items как связь заказа и товара с qty и ценой на момент покупки
- Ограничения: FK, NOT NULL, CHECK (qty > 0), UNIQUE там, где нужно
- Типы: numeric или копейки для денег, timestamptz для времени, статус через CHECK или enum
- Индексы на FK и под частые запросы (заказы клиента по дате)
- Платежи отдельной таблицей с идемпотентным внешним id от платёжки
Если ответил, копните глубже
Почему вы ищете новую работу?
Что хотим услышать
- Причина через цель, а не через бегство
- Ни слова негатива о текущем работодателе
- Показано, что на текущем месте был рост и результаты
- Связка с этой вакансией
- Коротко: до минуты
Если ответил, копните глубже
Руководитель отдела закупок пишет: «Нужна выгрузка всех остатков склада в Excel каждый день». Как вы будете работать с этим запросом?
Что хотим услышать
- Не беру решение как требование: выясняю, зачем выгрузка и что с ней делают
- Смотрю текущий процесс: кто, когда, какие решения принимает по данным
- Определяю потребность и ценность (например, не допустить дефицита)
- Предлагаю варианты: отчёт в системе, уведомление о низком остатке, выгрузка
- Фиксирую требование с метрикой успеха и подтверждаю с заказчиком
Если ответил, копните глубже
Сравни REST, gRPC, SOAP и GraphQL. Когда что выберешь?
Что хотим услышать
- REST: ресурсы, HTTP, JSON, OpenAPI, публичные API
- gRPC: HTTP/2, protobuf, генерация клиентов, внутренние быстрые вызовы, стриминг
- SOAP: XML, WSDL, WS-Security, банки и госсистемы
- GraphQL: клиент выбирает поля, BFF для фронта, сложность кеширования и защиты
- Выбор по потребителям, нагрузке, существующим системам и команде
Если ответил, копните глубже
Число оплаченных заказов за неделю упало на 15%. Опишите свои шаги.
Что хотим услышать
- Проверка данных: трекинг, расчёт, сверка с биллингом
- Форма и момент, сравнение с обычным разбросом и прошлым годом
- Внешние причины: сезон, праздники, конкуренты, платёжные сбои
- Внутренние: релизы, эксперименты, цены, маркетинг
- Декомпозиция и срезы: платформа, версия, регион, канал, новые и старые
- Гипотеза, проверка, исправление, коммуникация, алерт
Если ответил, копните глубже
Индекс есть, а в плане Seq Scan. Назови возможные причины и как каждую проверить.
Что хотим услышать
- Низкая селективность: нужна большая доля строк, seq scan дешевле
- Функция или приведение типа над колонкой: нужен индекс по выражению или переписать условие
- Условие не по ведущей колонке составного индекса
- Устаревшая статистика: оценки rows не совпадают с фактом, помогает ANALYZE
- Маленькая таблица, LIKE с % в начале, OR по разным колонкам
- Проверка: EXPLAIN (ANALYZE, BUFFERS), сравнить оценки с фактом
Если ответил, копните глубже
Почему вы считаете себя middle-разработчиком?
Что хотим услышать
- Показал самостоятельность: вёл задачу сам от требований до прода
- Привёл пример фичи, которую довёл целиком
- Упомянул работу с неясными требованиями
- Есть результат с цифрой
- Не завысил и не принизил себя
Если ответил, копните глубже
Зачем нужна матрица RACI и какие ошибки в ней встречаются?
Что хотим услышать
- Расшифровка R, A, C, I
- Снимает вопрос «кто решает» и ускоряет согласования
- Ошибка: несколько A на строке
- Ошибка: все в C, согласование тянется
- Строки это решения или артефакты, а не только задачи
Если ответил, копните глубже
Опиши словами диаграмму последовательностей оплаты заказа в интернет-магазине через внешнего платёжного провайдера с переходом на его страницу оплаты.
Что хотим услышать
- Участники: покупатель, фронт, бэкенд магазина, платёжный провайдер
- Создание платежа с ключом идемпотентности, редирект на страницу провайдера
- Подтверждение через вебхук, проверка подписи, обновление статуса заказа
- Возврат покупателя на сайт и показ статуса (опрос или ожидание)
- Альтернативы: отказ, таймаут, повторный вебхук, вебхук не пришёл (сверка)
Если ответил, копните глубже
Senior: 12 вопросов
Глубина и опыт: границы подходов, решения в продакшене.
Как вы собираете бизнес-кейс для проекта?
Что хотим услышать
- Проблема и базовая линия в цифрах
- Варианты, включая «ничего не делать»
- Затраты разовые и текущие, выгоды по видам
- NPV, ROI, окупаемость
- Допущения и анализ чувствительности
- Рекомендация и метрики, по которым проверим
Если ответил, копните глубже
Какие гарантии доставки бывают и как в реальной системе обеспечить, чтобы событие обработалось ровно один раз по смыслу?
Что хотим услышать
- At most once, at least once, exactly once
- Практика: at least once плюс идемпотентный потребитель
- Таблица обработанных event_id или upsert, проверка версии
- Outbox на стороне отправителя
- DLQ и мониторинг
Если ответил, копните глубже
Директор по маркетингу хочет урезать соцсети, потому что в отчёте по last click у них худший CPA. Что вы скажете?
Что хотим услышать
- Last click недооценивает каналы знакомства
- Посмотреть пути и другие модели: first click, position-based
- Учесть качество клиентов: LTV по каналам
- Проверить инкрементальность экспериментом
- Предложить постепенное изменение с контролем
- Решение по приросту выручки, а не по отчёту
Если ответил, копните глубже
Расскажите, как в PostgreSQL устроен MVCC, откуда берутся мёртвые строки и зачем нужен VACUUM.
Что хотим услышать
UPDATEсоздаёт новую версию строки, старая остаётся сxmax;DELETEтолько помечает версию- Каждая транзакция видит версии по своему снимку, поэтому чтение не блокирует запись и наоборот
- VACUUM удаляет версии, которые уже никому не видны, обновляет visibility map и замораживает старые строки
- Долгие транзакции и забытые слоты репликации мешают очистке и раздувают таблицы
- Autovacuum настраивают по таблицам:
autovacuum_vacuum_scale_factor, лимиты стоимости; мониторинг черезpg_stat_user_tables - HOT-обновления и
fillfactorуменьшают нагрузку на индексы
Если ответил, копните глубже
VACUUM FULL отличается от обычного?Вы претендуете на senior. Расскажите о себе.
Что хотим услышать
- Назван масштаб: команда, нагрузка, пользователи или деньги
- Есть решения, которые повлияли дальше своего кода
- Есть метрики результата
- Упомянуто влияние на команду: менторинг, процессы, ревью
- Уложился в 2 минуты, не утонул в деталях
Если ответил, копните глубже
Решение внедрено. Как вы оцените, достигло ли оно цели?
Что хотим услышать
- Метрики, базовая линия и цели заданы до разработки
- Опережающие и запаздывающие показатели
- Отделение эффекта от внешних факторов: контрольная группа, сезонность
- Поиск мест, где решение недодаёт ценность, и причин
- Рекомендации: доработать, обучить, поменять процесс или отказаться
Если ответил, копните глубже
Фича затрагивает четыре микросервиса разных команд. Что ты как аналитик должен описать и согласовать?
Что хотим услышать
- Какой сервис владеет какими данными и какие изменения в каждом
- Контракты: API и события, версии, кто владелец
- Последовательность взаимодействия, синхронно или асинхронно
- Консистентность: где допустима задержка, компенсации
- Поведение при отказах и таймаутах, наблюдаемость
- План выкатки и совместимость версий
Если ответил, копните глубже
Конверсия из корзины в оплату упала с 30% до 24% за неделю. Как будете разбираться по воронке?
Что хотим услышать
- Проверить данные и разметку событий
- Найти шаг между корзиной и оплатой, где выросли потери
- Срезы: платформа, версия, способ оплаты, регион, новые и старые
- Сопоставить с релизами, сбоями провайдера, изменениями цен и доставки
- Проверить окно конверсии и микс трафика
- Подтвердить гипотезу и исправить, поставить алерт
Если ответил, копните глубже
На проде в логах появились ошибки deadlock detected. Как вы будете разбираться и что сделаете, чтобы они ушли?
Что хотим услышать
- Deadlock это цикл ожидания: транзакции держат блокировки и ждут друг друга
- PostgreSQL проверяет цикл после
deadlock_timeout(1 с по умолчанию) и откатывает одну из транзакций с ошибкой 40P01 - В логе есть оба запроса и тип блокировок; включаю
log_lock_waitsдля долгих ожиданий - Главное лечение: единый порядок взятия блокировок, короткие транзакции, блокировка заранее через
SELECT ... FOR UPDATEв порядке ключа - Приложение должно уметь повторять транзакцию при 40P01 и 40001
Если ответил, копните глубже
FOR UPDATE отличается от FOR NO KEY UPDATE?lock_timeout?Чем, по-вашему, резюме senior должно отличаться от резюме middle?
Что хотим услышать
- Акцент на масштаб и влияние, а не на список фич
- Метрики бизнес-эффекта
- Лидерство: менторинг, процессы, архитектурные решения
- Компактность: старый опыт свёрнут
- Понимание, что резюме под роль, а не под всё сразу
Если ответил, копните глубже
Интернет-магазин электроники: возврат денег занимает в среднем 12 дней, клиенты жалуются, растут обращения в поддержку. Как вы построите AS-IS и TO-BE?
Что хотим услышать
- Определяю границы: от заявки клиента до поступления денег
- Собираю AS-IS: интервью поддержки, склада, бухгалтерии, данные по срокам шагов
- Нахожу, где ожидания и передачи: например, проверка на складе и ручной реестр в бухгалтерию
- Ставлю цель с метрикой и строю TO-BE: убрать ожидания, автоматизировать передачу, правила для простых случаев
- Учитываю ограничения: закон о защите прав потребителей, риски мошенничества
- Согласую TO-BE и метрики после запуска
Если ответил, копните глубже
Как ты развиваешь публичный API, чтобы не ломать существующих клиентов?
Что хотим услышать
- Различать совместимые и ломающие изменения
- Совместимые: новые необязательные поля, параметры, эндпоинты
- Ломающие только в новой версии, период поддержки старой, deprecation
- Клиенты должны игнорировать неизвестные поля
- Контрактные тесты и мониторинг использования старой версии
Если ответил, копните глубже
Практическое задание
Текущий статус по истории
В order_status_history записана история статусов. Для каждого заказа выведи последний статус по истории: order_id, status, changed_at. Порядок не важен.
- Подсказка, если застрял: ROW_NUMBER() OVER (PARTITION BY order_id ORDER BY changed_at DESC).
Эталон, тесты и таймер открываются интервьюеру в живом моке
Рубрика оценки: 1-4 балла
Критерии рассуждения для кейса. Ставьте балл по каждому пункту, сумма показывает картину лучше, чем «понравился или нет».
Уточнил цель и контекст
Для кого, зачем, какие ограничения по срокам и ресурсам
Задал вопросы до решения
Не бросился решать по первому впечатлению
Предложил подход и альтернативы
Назвал 2 варианта и почему выбрал один
Назвал метрики и риски
Как поймёт, что решение сработало, что может пойти не так
Довёл до конкретного плана
Шаги, ответственные, сроки
Опирался на свой опыт
Пример из реальной работы, а не пересказ учебника
Принял возражение и поправился
Без спора ради спора
Мок-собес без регистрации для интервьюера
Хотите проверить кандидата на задаче с эталоном и рубрикой? Так работает живой мок в Техпрогоне.
Кандидат готовится в Техпрогоне и на задаче открывает ступень «Живой мок».
Он присылает вам ссылку. Вы открываете её без регистрации.
У вас условие, эталон, рубрика, уточняющие вопросы и таймер.
Вы ставите оценки и вердикт, кандидат сразу видит результат.
Для интервьюера бесплатно. Ссылку создаёт кандидат на тарифе Рывок
Наборы для других ролей
Готовитесь к собесу сами? Подготовка к собеседованию: Бизнес-аналитик