Middle-аналитик в команду Performance Money: A/B-тесты монетизационных продуктов, SQL, статистика и продуктовые кейсы
Фишка: A/B-тест — обязательный этап продуктового цикла: собственная платформа со слоями экспериментов, бакетизацией и ratio-метриками; аналитики влияют на >50% выручки через монетизационные продукты
| Этап | Длительность | Что проверяют |
|---|---|---|
| Технический скоринг | 30–45 мин | Математика, статистика, теория вероятностей: доверительные интервалы, стандартная ошибка, проверка гипотез, задачи на расчёты |
| Техническое интервью | 60–90 мин | Стек (SQL, Python, опыт с A/B), разбор продуктового кейса: оценка масштаба проблемы, выбор метрик, дизайн исследования, верификация результатов |
| Финальное интервью | 45–60 мин | Встреча с руководителем: задачи команды Performance Money, мотивация, ценности Авито, коммуникация с продуктом и бизнесом |
Обязательный минимум
Плюсом будет
Что такое доверительный интервал?
Диапазон [L, U], который с заданной вероятностью (1−α) содержит истинный параметр. Для среднего: x̄ ± z·SE. Не путать с «вероятностью, что μ лежит в интервале» — интервал случаен, параметр фиксирован.
Что такое стандартная ошибка среднего?
SE = σ/√n — мера неопределённости оценки среднего. Чем больше выборка, тем уже CI. Используется в t-test и построении доверительных интервалов.
Что такое репрезентативность выборки?
Выборка отражает генеральную совокупность по ключевым признакам. Нерепрезентативность → смещение (selection bias). В A/B важна корректная рандомизация и отсутствие перетекания между группами.
Когда использовать t-test, а когда Mann-Whitney?
t-test (Welch) — непрерывные метрики, достаточный n, примерная нормальность. Mann-Whitney — ординальные данные или сильные выбросы. Для ratio-метрик в Авито применяют линеаризацию или дельта-метод.
Чем отличаются ошибки первого и второго рода?
α (Type I) — ложноположительный результат (увидели эффект, которого нет). β (Type II) — ложноотрицательный (пропустили реальный эффект). Power = 1−β. В продукте балансируют риск выкатить вред vs упустить рост.
Фишка: На техническом скоринге Авито задачи по статистике — обязательная часть; теорию могут спросить и на основном интервью.
Ловушка: Не путайте p-value с размером эффекта: статзначимость ≠ практическая значимость для бизнеса.
Совет: Повторите курсы Stepik «Основы статистики» и «Теория вероятностей» — они в официальных рекомендациях Авито.
Что такое A/B-тест и зачем он нужен?
Контролируемый эксперимент: случайное разделение на A (control) и B (treatment), сравнение метрик. Позволяет принимать решения на данных, а не на интуиции.
Проводили ли A/B-тесты? Расскажите про самый сложный.
Структура: гипотеза → метрики (primary + guardrails) → дизайн (единицa рандомизации, размер выборки, длительность) → анализ → решение. Упомяните нетривиальные кейсы: селлерские/байерские/региональные сплиты.
Как считать sample size для A/B?
MDE (минимальный детектируемый эффект), α, power (обычно 80%), baseline и дисперсия метрики. Для ratio-метрик — через линеаризацию. Учитывайте множественные сравнения.
Что такое слои экспериментов и зачем они нужны?
Как в Google/Авито: эксперименты в одном слое не пересекаются (конфликт кода/UI), в разных — ортогональны. Баланс между пропускной способностью и безопасностью.
Как анализировать ratio-метрики (конверсия, ARPU)?
Линеаризация (разложение Тейлора) или дельта-метод: преобразуют X/Y в «поюзерную» метрику, сохраняя среднее и дисперсию. Затем t-test. Бакетизация (B≈200) снижает объём данных без потери дисперсии.
Какие guardrail-метрики выбрали бы для теста монетизационного пресета?
Primary: revenue, take rate, adoption пресета. Guardrails: retention продавцов, NPS/жалобы, cannibalization других продуктов, время до продажи объявления.
Фишка: В Авито A/B — обязательный этап продуктового цикла; платформа считает сотни метрик с детализацией по вертикалям и регионам.
Ловушка: Peeking (ранняя остановка по промежуточным результатам) завышает false positive rate. Не останавливайте тест «когда p<0.05».
Совет: Прочитайте статью «Как устроено A/B-тестирование в Авито» на Habr — там слои, бакеты, ratio-метрики.
Какой тип JOIN используется по умолчанию?
JOIN без уточнения = INNER JOIN. Возвращает только совпадающие строки. LEFT/RIGHT/FULL — для сохранения несовпадений.
Как вывести актуальный адрес и цену для каждого объявления?
Типичный паттерн SCD: таблица истории изменений + ROW_NUMBER() OVER (PARTITION BY listing_id ORDER BY updated_at DESC) = 1 или DISTINCT ON (PostgreSQL). Фильтр is_active/deleted.
Как реализовать сортировку по дате с точностью до миллисекунд?
TIMESTAMP(3) или TIMESTAMP WITH TIME ZONE. ORDER BY event_ts — тип данных должен хранить дробную часть секунды, не VARCHAR.
Как построить воронку: первый визит → второй визит в интервале N дней?
CTE first_visit (MIN(date) per user), JOIN events ON user_id WHERE date BETWEEN first+1 AND first+N. Считать DISTINCT user_id на каждом шаге.
Как устроены таблицы и джойны?
PK/FK, нормализация vs денormalization для аналитики. INNER/LEFT/CROSS, many-to-many через bridge-таблицу. CTE для читаемости.
Опыт написания SQL-запросов — расскажите про сложный запрос.
Опишите задачу, объём данных, использованные конструкции (window functions, CTE, оптимизация). В Авито данные в Vertica/ClickHouse.
Совет: На middle-уровне ждут не только SELECT, но и умение проектировать витрины (grain, ключи, агрегации).
Ловушка: BETWEEN включает обе границы; для дат часто безопаснее >= start AND < end+1day.
Какие бизнес-метрики и контрметрики для виджета продвижения товаров?
Primary: CTR виджета, conversion to purchase, incremental revenue. Guardrails: organic traffic, bounce rate, cannibalization, seller satisfaction.
Как формировать метрику с учётом ожидаемой прибыли и вероятности продажи по категориям?
Expected value = Σ P(sale|category) × E(profit|category). Взвешивание по категориям, калибровка вероятностей, сегментация.
Какие метрики качества классификации существуют?
Accuracy, Precision, Recall, F1, ROC-AUC, PR-AUC. При дисбалансе классов accuracy обманчива — смотрите Precision-Recall.
MSE или MAE для регрессии с выбросами?
MAE устойчивее к выбросам (линейный штраф). MSE сильнее penalize outliers (квадратичный). Huber — компромисс.
Как искать точки роста в монетизационном продукте?
Сегментация продавцов (частные vs pro), когортный анализ, funnel adoption пресетов, elasticity цены, региональные различия, A/B новых опций.
Фишка: Performance Money генерирует >50% выручки Авито — кейсы будут про монетизацию частных продавцов, пресеты, региональные тесты.
Совет: Всегда называйте primary metric + guardrails + риски cannibalization.
Как провести t-test в Python?
scipy.stats.ttest_ind (Welch: equal_var=False) или statsmodels. Проверить нормальность/размер выборки. Для A/B — линеаризация ratio перед тестом.
Как визуализировать результаты эксперимента?
Доверительные интервалы разницы, cumulative lift, разбивка по сегментам. Tableau/Redash — основные BI в Авито.
Расскажите про опыт работы с базами данных и СУБД.
Vertica (витрины), ClickHouse (сырые логи, 8 млрд событий/день), PostgreSQL. Колоночные БД эффективны для аналитики.
Совет: Python не обязателен на входе, но ожидается освоение по дороге — pandas, визуализация, базовая статистика.
Актуальная цена объявления (SQL)
Есть таблицы listings (listing_id, seller_id, created_at) и price_history (listing_id, price, valid_from). Для каждого активного объявления выведите текущую цену — последнюю по valid_from.
SELECT l.listing_id, l.seller_id, ph.price AS current_price
FROM listings l
JOIN (
SELECT listing_id, price,
ROW_NUMBER() OVER (PARTITION BY listing_id ORDER BY valid_from DESC) AS rn
FROM price_history
) ph ON l.listing_id = ph.listing_id AND ph.rn = 1
WHERE l.is_active = true;Сложность: O(n log n) на партицию из-за сортировки в window function
Дизайн A/B для нового пресета монетизации
Команда хочет протестировать новый пресет платных услуг для частных продавцов. Опишите дизайн эксперимента: единица рандомизации, метрики, длительность, риски.
Единица: seller_id (или user_id продавца), сплит 50/50 через hash+salt на платформе Авито. Primary: incremental revenue per seller, adoption rate пресета. Guardrails: retention (повторные размещения), time-to-sale, жалобы, cannibalization других paid products. Длительность: ≥1 неделя (стандарт Авито), power analysis с MDE ~2-3% на revenue. Риски: новички vs опытные продавцы — стратификация или CUPED; сезонность — исключить праздники; пересечение с другими экспер — проверить слой.
Сложность: N/A — продуктовый кейс
Конверсия по шагам воронки (SQL)
Таблица events (user_id, event_name, event_date). event_name ∈ ('view_listing', 'contact_seller', 'purchase'). Посчитайте конверсию view → contact → purchase за последние 30 дней.
WITH funnel AS (
SELECT user_id,
MAX(CASE WHEN event_name='view_listing' THEN 1 ELSE 0 END) AS viewed,
MAX(CASE WHEN event_name='contact_seller' THEN 1 ELSE 0 END) AS contacted,
MAX(CASE WHEN event_name='purchase' THEN 1 ELSE 0 END) AS purchased
FROM events
WHERE event_date >= CURRENT_DATE - 30
GROUP BY user_id
)
SELECT
SUM(viewed) AS step1,
SUM(contacted) AS step2,
SUM(purchased) AS step3,
ROUND(100.0*SUM(contacted)/NULLIF(SUM(viewed),0),2) AS view_to_contact_pct,
ROUND(100.0*SUM(purchased)/NULLIF(SUM(contacted),0),2) AS contact_to_purchase_pct
FROM funnel;Сложность: O(n) — один проход с агрегацией
Каркас ответа
3 дня
7 дней
14 дней
| Блок | Готов, если... |
|---|---|
| Статистика | можешь объяснить CI, SE, t-test vs Mann-Whitney, ошибки I/II рода и посчитать на задаче |
| A/B-тесты | можешь спроектировать эксперимент с primary/guardrail метриками, sample size и рисками |
| SQL | решаешь задачи на JOIN, CTE, ROW_NUMBER, воронки без подсказок |
| Продуктовый кейс | за 15 мин предлагаешь метрики, дизайн исследования и план верификации для монетизационной фичи |
| Поведение | 3 STAR-истории с измеримым бизнес-результатом готовы к рассказу за 2–3 мин каждая |
В день собеседования