собеседованиеаналитикаSQLPythonметрикикарьера

Топ-50 вопросов на собеседование аналитика данных 2026

2026-04-25 20 мин

Я был на 40+ собеседованиях аналитика — и почти на всех вопросы повторяются. Не дословно, но темы — одни и те же. Если знаешь эти 50 — пройдёшь любой джуниор/миддл собес. Сениорам нужен опыт, но и здесь база та же.

Вопросы реальные с собесов в Яндекс, Ozon, Сбер, Авито, Тинькофф, VK, X5, Wildberries — собрал за последний год.

Как использовать гайд
Не зубри ответы — разберись в концепции. На собесе спросят не «что такое JOIN», а попросят написать запрос. Вопросы тут — точки старта для подготовки. Под каждым — что нужно знать и где попрактиковать.


SQL (15 вопросов)

Чем отличается INNER JOIN от LEFT JOIN?

INNER возвращает только пересечение, LEFT — все из левой таблицы плюс совпадения справа. Если справа нет — NULL. Подвох: WHERE на правую таблицу превращает LEFT в INNER. Условие на правую — в ON, а не в WHERE.

Что вернёт COUNT(*) vs COUNT(column) vs COUNT(DISTINCT column)?

Как найти топ-3 в каждой группе?

Через оконную функцию: ROW_NUMBER() OVER (PARTITION BY group ORDER BY metric DESC) <= 3. Или через correlated subquery.

Что такое CTE и зачем?

WITH name AS (...) — именованный результат подзапроса. Делает сложные запросы читаемыми, можно ссылаться несколько раз. Рекурсивные CTE — для иерархий и временных рядов.

Чем оконные функции отличаются от GROUP BY?

GROUP BY схлопывает строки. Оконные функции считают агрегат, не схлопывая строки — каждая строка получает агрегат своего «окна». Используй когда нужно «топ-N в группе», «доля от общего», «running total».

Объясни ROW_NUMBER vs RANK vs DENSE_RANK

Как найти дубликаты?

SELECT col, COUNT(*) FROM t GROUP BY col HAVING COUNT(*) > 1. Или через ROW_NUMBER OVER (PARTITION BY col) для удаления дублей сохраняя одну запись.

Чем HAVING отличается от WHERE?

WHERE фильтрует строки до GROUP BY. HAVING — группы после агрегации. COUNT(*) > 100 нельзя в WHERE, только в HAVING.

Как посчитать процент от общего?

Через оконную функцию: SUM(value) * 100.0 / SUM(SUM(value)) OVER (). Без оконных — нужен подзапрос.

Что такое self-join и когда нужен?

JOIN таблицы самой с собой. Используется для сравнения строк внутри таблицы (manager-employee, прошлое-текущее значение). Сейчас часто заменяется оконной LAG().

Объясни UNION vs UNION ALL

UNION убирает дубликаты (дороже — нужна сортировка). UNION ALL включает дубли. Если уверены что дублей нет — UNION ALL быстрее.

Как посчитать DAU/MAU?

COUNT(DISTINCT user_id) за день / месяц. DAU/MAU = stickiness ratio. Если 0.2 — юзер заходит ~6 дней в месяц.

Как найти retention M+1?

Cohort = месяц регистрации. Активных в M+1 / размер когорты. См. подробный гайд: Когортный анализ retention в SQL.

Что такое EXPLAIN и зачем?

Показывает план запроса: какие индексы используются, тип JOIN, сколько строк сканируется. Главный инструмент оптимизации SQL.

Как ускорить медленный SELECT?


Python и pandas (10 вопросов)

Как сгруппировать DataFrame и посчитать несколько агрегатов?

df.groupby('col').agg({'a': 'mean', 'b': 'sum'}) или named aggregation agg(avg_a=('a','mean')).

Чем отличается merge от join в pandas?

merge — гибкий, по любым колонкам. join — только по индексам. На практике 95% — merge.

Как заменить for-loop на векторные операции?

См. 10 функций pandas вместо for.

Что такое apply, map, applymap?

Как посчитать скользящее среднее?

df['col'].rolling(window=7).mean(). Для timeseries с резными частотами — resample('D').mean().rolling(7).

Как найти топ-N по группе в pandas?

df.groupby('cat').apply(lambda x: x.nlargest(3, 'metric')) или через rank: df[df.groupby('cat')['m'].rank(ascending=False) <= 3].

Что вернёт isnull(), notnull(), isna()?

isnull == isna (синонимы) — bool Series, True для NaN. notnull — обратное.

Как обработать пропущенные значения?

Чем list comprehension отличается от for?

LC создаёт новый список, синтаксис чище, в 2-3 раза быстрее за счёт оптимизаций интерпретатора. Для side-effects (print, сохранение) — for.

Что такое generator и когда использовать?

Функция с yield — возвращает iterator, не загружает всё в память. Используй для больших файлов (читай построчно), для бесконечных последовательностей.


Статистика и A/B-тесты (10 вопросов)

Чем отличаются среднее и медиана?

Среднее чувствительно к выбросам, медиана — нет. Для skewed распределений (выручка, время сессии) — медиана честнее.

Что такое p-value?

Вероятность увидеть наблюдаемое различие (или большее) если H0 верна. НЕ «вероятность что H1 верна» — это разные вещи.

Какой тест применить к конверсиям?

Chi-square (scipy.stats.chi2_contingency) или z-test для долей. См. A/B-тесты в Python: scipy.stats.

Что такое MDE (Minimum Detectable Effect)?

Минимальный эффект который сможем заметить при заданной выборке и α/β. Меньше MDE → даже сильное изменение «статистически незначимо».

Что такое ошибки I и II рода?

Когда A/B-тест НЕ нужен?

Что такое нормальное распределение?

Симметричное, среднее = медиана = мода, 68% в ±1σ, 95% в ±2σ. На реальных данных встречается редко (выручка — log-normal, time on page — exponential).

Доверительный интервал — это что?

«Если повторить эксперимент 100 раз, в 95 случаях интервал содержит истинное значение». Не то же самое что «95% что значение здесь».

Парный или независимый t-test?

Как обнаружить аномалию во временном ряду?


Продуктовые метрики (10 вопросов)

Что такое DAU, MAU, WAU?

Daily/Weekly/Monthly Active Users — уникальные юзеры активные за период. Stickiness = DAU/MAU.

Что такое retention?

Доля юзеров возвращающихся через N дней/недель/месяцев. Classic retention M+N — активен ИМЕННО в N-й период. Rolling — был активен в N+ или позже.

Какие метрики у e-commerce?

Conversion rate, AOV, GMV, CAC, LTV, retention, cart abandonment, repeat purchase rate, ARPU.

Что такое LTV и как считать?

Lifetime Value — суммарная выручка от юзера за всё время. LTV = ARPU × LT где LT — средний срок жизни. Для подписки: MRR / churn rate.

Как декомпозировать падение DAU?

Что такое NPS и как считать?

% promoters - % detractors (на шкале 0-10). 9-10 promoters, 7-8 passive, 0-6 detractors. От -100 до +100.

Как измерить engagement?

Что такое North Star metric?

Главная метрика бизнеса. Для Spotify — minutes listened. Для Airbnb — nights booked. Объединяет product-market fit и business value.

Что такое HEART framework?

Google's Happiness, Engagement, Adoption, Retention, Task success. Структура для UX-метрик.

Как посчитать unit economics?

Profit per unit = ARPU - CAC - operational costs. Если положительный — масштабируем. Если отрицательный — оптимизируем перед ростом.

Soft skills и кейсы (5 вопросов)

Расскажи о сложном проекте

Структура: контекст → задача → действия → результат (STAR). Цифры, не общие слова. «Снизил CAC на 23%» лучше чем «оптимизировал маркетинг».

Как ты приоритизируешь задачи?

RICE / ICE / WSJF / по влиянию на North Star. Покажи что думаешь не «что просили», а «что максимизирует impact».

Опиши какую-нибудь дашборд который сделал

Какая бизнес-цель, какие метрики, какие срезы, что нашёл благодаря дашборду. Не «я освоил Tableau», а «я нашёл что 80% выручки от 20% юзеров и предложил персональные офферы».

Как ты работаешь с продактом?

Регулярные синки, общая doc с открытыми вопросами, proactive (приносить инсайты не дожидаясь ad-hoc), explain over deliver.

Где видишь себя через 3 года?

Не «будут руководителем», а «глубже разобрался в продуктовой аналитике, веду свои инициативы, наставляю младших». Покажи рост, а не амбициозность.


План подготовки на 4 недели

НеделяФокусЗадачи
1SQL фундамент50 задач из песочницы, JOIN/GROUP BY/оконные
2SQL продвинутоCTE, retention, когорты, оптимизация
3Python + статистикаpandas, A/B-тесты, scipy.stats
4Кейсы + софтыпродуктовые кейсы, мок-собес с AI

Связанные материалы

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

Готовься на 2000+ вопросов
Тренажёр с проверкой кода в браузере, AI мок-собес, разбор кейсов. Первые 5 задач бесплатно без регистрации.
Начать подготовку →