Wildberries — крупнейший маркетплейс РФ по GMV (3 трлн ₽ в 2025), и собес туда отличается от Ozon: больше про операционные метрики (логистика, return rate, sortировочные центры) и RecSys (search ranking + personalized feed). В этом гайде разберу 25+ реальных вопросов с 5 раундов собеса аналитика WB (Marketplace / Pricing / Logistics / Search) — с разбором сильного и слабого ответа.
Грейды аналитика в Wildberries (2026)
| Грейд | Compensation/мес РФ | Опыт | Что спрашивают |
|---|---|---|---|
| Junior | 140-220K ₽ | 0-1 год | SQL базовый, pandas, базовые маркетплейс-метрики |
| Middle | 220-340K ₽ | 1-3 года | ClickHouse advanced, A/B-тесты, return rate analysis |
| Senior | 340-520K ₽ | 3-6 лет | ML/Search ranking, RecSys, supply chain analytics |
| Lead | 520-700K+ ₽ | 6+ лет | Multi-team projects, маркетплейс strategy, mentorship |
По данным Levels.fyi 2026: WB входит в топ-3 РФ по compensation для analytics (3.89M ₽/год median total comp).
5 раундов собеса Wildberries
| Раунд | Что | Длительность |
|---|---|---|
| 1. HR-скрининг | Мотивация, маркетплейс опыт, expectations | 30 мин |
| 2. SQL live (ClickHouse) | 2-3 задачи + WB-specific cases | 60 мин |
| 3. Python + ML | pandas + scoring models + A/B | 60 мин |
| 4. Маркетплейс-кейс | Search ranking / return rate / pricing | 60 мин |
| 5. Финал с лидом | Behavioral + system thinking | 45 мин |
→ Полный гайд: 150+ вопросов собеса аналитика
8 SQL-вопросов с собеса WB (ClickHouse)
Топ-100 SKU по выручке за неделю с фильтром на returns.
✅ Сильный ответ:
\\\sql
SELECT sku_id, sum(revenue) - sum(return_amount) AS net_revenue
FROM orders
WHERE order_date >= today() - 7
AND status IN ('completed', 'returned')
GROUP BY sku_id
ORDER BY net_revenue DESC
LIMIT 100;
\\\
Senior follow-up:
- «orders партиционирована по order_date?» → partition pruning ускорит ×30
- «Что такое net_revenue если включаем returns?» → надо явно: revenue минус возвраты
- «Materialized view на daily SKU revenue ускорит до 50ms»
Return rate по категориям — найди топ-10 с высоким return rate.
✅ Сильный ответ:
\\\sql
SELECT
category_id,
count() AS total_orders,
countIf(status = 'returned') AS returned,
countIf(status = 'returned') * 100.0 / count() AS return_rate_pct,
sum(revenue) AS gmv_at_risk
FROM orders
WHERE order_date >= today() - 30
GROUP BY category_id
HAVING total_orders >= 1000
ORDER BY return_rate_pct DESC
LIMIT 10;
\\\
Senior follow-up: «Why HAVING total_orders >= 1000? — иначе мелкие категории с 5/10 = 50% return overstate проблему. Statistical significance.»
Search-to-purchase conversion на ClickHouse: query за неделю.
✅ Сильный ответ:
\\\sql
WITH user_funnel AS (
SELECT
user_id,
countIf(event_type = 'search') AS searches,
countIf(event_type = 'view_pdp') AS views,
countIf(event_type = 'add_to_cart') AS carts,
countIf(event_type = 'purchase') AS purchases
FROM events
WHERE event_date >= today() - 7
GROUP BY user_id
)
SELECT
countIf(searches > 0) AS searched,
countIf(views > 0) AS viewed,
countIf(carts > 0) AS added_to_cart,
countIf(purchases > 0) AS purchased,
100.0 * countIf(purchases > 0) / countIf(searches > 0) AS search_to_purchase
FROM user_funnel;
\\\
AggregatingMergeTree — зачем в WB?
✅ Сильный ответ:
«В WB на ClickHouse — обязательный pattern для real-time GMV dashboard. Raw events 5B+ строк, query 10 сек. AMT MV хранит aggregateState'ы → merge в realtime → query 50ms.
Use case: dashboard «GMV by category last 24h» обновляется каждую минуту, читает MV.»
→ ClickHouse MV + Projections deep dive
Найди продавцов где return rate > среднего по категории × 1.5.
✅ Сильный ответ:
\\\sql
WITH cat_avg AS (
SELECT category_id, avg(return_rate) AS cat_avg_rr
FROM seller_metrics
WHERE month = '2026-05-01'
GROUP BY category_id
),
seller_rr AS (
SELECT seller_id, category_id, return_rate
FROM seller_metrics
WHERE month = '2026-05-01'
)
SELECT s.seller_id, s.category_id, s.return_rate, c.cat_avg_rr,
s.return_rate / c.cat_avg_rr AS ratio
FROM seller_rr s
JOIN cat_avg c ON s.category_id = c.category_id
WHERE s.return_rate > c.cat_avg_rr * 1.5
ORDER BY ratio DESC;
\\\
Senior follow-up: «Как WB реагирует на high return rate sellers? — escalation в operations, штрафы, при персистенте — деплатформирование.»
Window function: топ-3 SKU per seller по выручке.
✅ Сильный ответ:
\\\sql
WITH ranked AS (
SELECT seller_id, sku_id, sum(revenue) AS rev,
row_number() OVER (PARTITION BY seller_id ORDER BY sum(revenue) DESC) AS rn
FROM orders
WHERE order_date >= today() - 30
GROUP BY seller_id, sku_id
)
SELECT seller_id, sku_id, rev FROM ranked WHERE rn <= 3
ORDER BY seller_id, rn;
\\\
ClickHouse alternative: \SELECT seller_id, sku_id, sum(revenue) ... LIMIT 3 BY seller_id\ — короче.
Cohort: % new buyers retained на M+1.
✅ Сильный ответ:
\\\sql
WITH first_purchase AS (
SELECT user_id, toStartOfMonth(min(order_date)) AS cohort
FROM orders
WHERE status = 'completed'
GROUP BY user_id
),
mplus1 AS (
SELECT fp.user_id, fp.cohort,
maxIf(o.order_date >= addMonths(fp.cohort, 1) AND o.order_date < addMonths(fp.cohort, 2), 1) AS retained_m1
FROM first_purchase fp
LEFT JOIN orders o ON fp.user_id = o.user_id AND o.status = 'completed'
GROUP BY fp.user_id, fp.cohort
)
SELECT cohort, count() AS new_buyers, sum(retained_m1) AS retained,
100.0 * sum(retained_m1) / count() AS retention_m1_pct
FROM mplus1
GROUP BY cohort
ORDER BY cohort;
\\\
Sortировочные центры: time-to-deliver по регионам.
✅ Сильный ответ:
\\\sql
SELECT
delivery_region,
avg(dateDiff('hour', sort_center_received_ts, delivered_ts)) AS avg_delivery_hours,
quantile(0.95)(dateDiff('hour', sort_center_received_ts, delivered_ts)) AS p95_hours
FROM shipments
WHERE shipped_at >= today() - 30
GROUP BY delivery_region
ORDER BY p95_hours DESC;
\\\
Senior: «WB трекает p95 а не avg потому что долгие хвосты убивают NPS — клиент жалуется когда ждёт 5 дней вместо 2. Avg скрывает это.»
5 Python/ML-вопросов с собеса WB
Чем отличается ranking для search vs recommendations?
✅ Сильный ответ:
«Search: query-driven. Юзер уже знает что хочет. Ranking optimize'ит relevance (BM25 / semantic) + conversion.
Recommendations: discovery-driven. Юзер не знает что хочет. Ranking optimize'ит engagement + diversity.
Practical в WB: SearchRanker = LightGBM на 50+ features (BM25, click history, seller rating, CTR position). RecSys = two-tower model + content embeddings.»
Реализуй RecSys evaluation: HitRate@10, NDCG@10.
✅ Сильный ответ:
\\\python
import numpy as np
def hit_rate_at_k(predicted, ground_truth, k=10):
pred_topk = predicted[:k]
return int(any(item in ground_truth for item in pred_topk))
def ndcg_at_k(predicted, ground_truth, k=10):
dcg = 0
for i, item in enumerate(predicted[:k]):
if item in ground_truth:
dcg += 1 / np.log2(i + 2)
idcg = sum(1 / np.log2(i + 2) for i in range(min(len(ground_truth), k)))
return dcg / idcg if idcg > 0 else 0
\\\
Senior: «HitRate показывает «хоть один правильный в топ-10» — слабый сигнал. NDCG учитывает позицию (high-positioned hits лучше). В production WB используется MRR + NDCG.»
Search ranking offline metric → online metric divergence. Как лечишь?
✅ Сильный ответ:
«Classic проблема: offline NDCG +5%, online CTR +0.5%, conversion -1%. Причины:
- Distribution shift — training data из другого периода
- Selection bias — train data только по top-ranked items (juggernaut bias)
- Position bias — клики не отражают relevance (top positions cliked даже если irrelevant)
- Click ≠ conversion — optimization на wrong metric
Fix:
- IPS (Inverse Propensity Scoring) для bias correction
- Counterfactual evaluation framework
- A/B test small traffic перед full rollout»
Pandas: посчитай return rate по cohort + product category.
✅ Сильный ответ:
\\\python
import pandas as pd
orders['cohort'] = orders.groupby('user_id')['order_date'].transform('min').dt.to_period('M')
agg = orders.pivot_table(
index=['cohort', 'category'],
values=['order_id', 'returned_flag'],
aggfunc={'order_id': 'count', 'returned_flag': 'sum'}
).reset_index()
agg['return_rate'] = agg['returned_flag'] / agg['order_id']
\\\
Cold-start: новый seller, нет истории — как ранжировать его SKU?
✅ Сильный ответ:
«Cold-start через 3 layers:
- Content-based: фичи из listing (photos quality, description completeness, price competitiveness)
- Seller analogs: усреднение от похожих sellers (по category, region, размер)
- Exploration boost: top-K новых sellers получают artificial CTR boost на первой неделе → собираем реальные данные
WB-specific: TrustScore новых sellers — composite от documents verification + insurance + история payment. Low TrustScore → ниже in ranking.»
5 A/B / Pricing вопросов
Pricing A/B на маркетплейсе: что специального?
✅ Сильный ответ:
«Spillover effects — главное отличие от обычного A/B.
Проблема: если treatment-юзеры видят -10% цену на SKU, а control видят полную — price discovery через цену арбитража, sellers могут поднять цены compensating. Чистый эффект искажается.
Решения:
- Geo-split — тест на одном регионе, контроль на других (но cannibalization между regions)
- Time-based — A/B по дням недели (но nondeterministic seasonality)
- Synthetic control — статистический подход
В WB обычно использует cluster A/B (рандомизация на cluster level — категория или seller cohort).»
Что такое cannibalization effect в маркетплейсе?
✅ Сильный ответ:
«Каннибализация = новый продукт/фича ворует трафик/выручку у существующих, а не привлекает новую.
В WB: запустили new category «Health & Wellness» → GMV категории +50M ₽, но Beauty -30M ₽ (юзеры переключают bucket). Чистый effect = +20M, не +50M.
Measurement:
- DiD geo-split (где появилась new category vs где нет)
- Synthetic control
- User-level: cross-category basket analysis
Если каннибализация >50% → strategic question если стоит держать категорию»
Sample size для return rate A/B: 10K orders/группа достаточно?
✅ Сильный ответ:
«Зависит от baseline rate и MDE.
Если baseline 8%, MDE = relative 2% (от 8% к 8.16%):
\\\
n = (z_α/2 + z_β)² × 2p(1-p) / Δ²
n = (1.96 + 0.84)² × 2 × 0.08 × 0.92 / (0.0016)²
n ≈ 144 000 на группу
\\\
10K недостаточно для small effect. Если MDE relative 10% (8% → 8.8%):
n ≈ 5800 — 10K ОК.
Senior: «В WB на return rate обычно нужны 50K+ orders/группа для production decisions.»
Search ranking A/B: какая primary metric?
✅ Сильный ответ:
«Hierarchy:
- GMV per searcher — primary (revenue impact)
- Conversion rate — secondary (was the search successful)
- CTR — leading indicator
- Engagement (clicks per session) — dwell time signal
Guardrails:
- Margin% — что не растёт за счёт дешёвых items
- Long-tail diversity — top sellers не доминируют
- Latency — новый ranker не медленнее
- NPS — search experience не страдает
WB practice: A/B минимум 4 недели для покрытия weekly seasonality.»
Pricing optimization: optimal cross-sell offer.
✅ Сильный ответ:
«Pricing strategy через:
- Demand elasticity estimation — log-log regression на historical price changes
- Cross-sell uplift modeling — when discount X% на SKU A, lift basket size by Y%
- Optimization: max expected revenue × probability of purchase
В WB используется bandit-based pricing для long-tail SKU — explore prices через small traffic, exploit winning prices на large.»
4 продуктовых кейса (раунд 4)
NSM для Wildberries — какую метрику предложишь?
✅ Сильный ответ:
«WB публично уважает Active Buyers + GMV + Frequency как key metrics. NSM для маркетплейса:
❌ GMV — надувается крупными покупками, скидками
❌ DAU — может быть нагнан ботами
✅ Successful Transactions per Active Buyer per Quarter — учитывает retention + monetization + delivery success
✅ Margin-Adjusted GMV — учитывает unit economics
Guardrails:
- Return rate (не должен расти)
- Delivery NPS (operational quality)
- Seller satisfaction (двусторонний рынок)
В WB реальный NSM возможно «Active Buyers × Frequency × Margin per buyer» — combined health metric.»
Top-100 sellers генерируют 50% GMV. Risk и opportunity.
✅ Сильный ответ:
«Risk: Concentration risk:
- Если top-10 sellers уходит → -10-15% GMV сразу
- Negotiation leverage у крупных sellers (могут давить на take rate)
- Reputation risk — один скандал с top-seller рушит trust в marketplace
Opportunity:
- Account management даёт высокий ROI (focus on фолоу)
- Tailored insights → upsell premium features (Premium Logistics, Top-Seller badges)
Action:
- KAM (Key Account Management) команда для top-50 sellers
- Diversification incentives для mid-tier sellers (growth bonuses)
- Risk monitoring: weekly top-seller health check (GMV, complaints, return rate)»
Delivery NPS upal с 7.8 до 7.2. Что делаешь?
✅ Сильный ответ:
«Декомпозиция NPS:
NPS = promoters - detractors (% scale -100 to +100)
Drill-down:
- By segment: region / age / order_size — какой segment просел?
- By driver: scoring drivers (delivery_time, package_quality, courier_attitude, order_correctness)
- By external factor: season (winter delays), promo (overload), new fulfillment center
WB-specific:
- Sortировочные центры — какой sorting center has issues?
- Last-mile partner (PickPoint, Boxberry) — кто из partners ухудшил quality?
- Holiday peak overload?
Action:
- Drilldown to root cause
- Operational fix (увеличить sorting capacity / сменить last-mile)
- Communications fix (более честные delivery promises)
- Compensation (для affected customers)»
Inventory analytics: predict stockout.
✅ Сильный ответ:
«Stockout prediction через time-series:
Approach 1: Simple velocity — daily sales × days_until_stockout = current_inventory / avg_daily_sales. Threshold alert at 7 days.
Approach 2: Prophet / ARIMA — учитывает seasonality + trend.
Approach 3: ML (XGBoost) — features: historical sales, seasonality, promotions, day-of-week, weather, competitor pricing → predict daily sales next 14 days.
В WB используется hybrid: ML для long-tail, simple velocity для top-sellers (high stability).
Action на prediction:
- Reorder triggers automatically через API на seller-side
- Inventory replenishment planning
- Promotional adjustments (если low stock — pull promotional spend)»
3 behavioral вопроса (раунд 5)
Расскажи про случай когда твой analysis повлиял на operating decision.
✅ Сильный ответ (STAR):
«Ситуация: в WB seller cohort analysis показал что sellers с регулярными promo campaigns имеют 35% lower churn vs sellers без promos.
Задача: убедить product team запустить automated promo recommendations для sellers.
Действие:
- Quantified opportunity: 50% sellers без promo → если 20% начнут → +X% GMV per quarter
- Designed pilot: 10% sellers получают AI-suggested promo via dashboard
- Defined success metric: promo adoption rate + impact on seller GMV/retention
Результат: Pilot showed +12% GMV для adopters, +18% retention. Product roadmap включил это в Q2 backlog. Я переход к next role — но фича уже в development.»
Case: data shows new feature destroys retention. Что делаешь?
✅ Сильный ответ:
«Сложный кейс — data-vs-roadmap conflict.
Steps:
- Verify findings — нет ли confounding (новая фича на новых users which have lower baseline retention)?
- Segment analysis — для каких users работает, для каких нет?
- Find usable subset — может быть фича good для power users но bad для casuals
- Recommend: rollout limited segments + iterate
Если фича обещана top management:
- Present data объективно (no spinning)
- Provide alternatives ('don't ship as-is, ship to subset X')
- Don't make political — это decision-making job, не data person'a
В WB случае: запустили fashion recommendations widget, retention -8%. Анализ показал — раздражение «слишком много suggestions». Tweaked density 5→3, retention +2% (still negative but acceptable trade-off против discovery uplift).»
Опиши свой опыт работы с большим SQL запросом 500+ строк.
✅ Сильный ответ:
«В WB у нас был ETL pipeline 800-line ClickHouse query для daily seller scorecard.
Approach:
- Refactor into CTEs — 6 CTE'ов с clear naming: \
seller_orders\, \seller_returns\, \seller_promo\, \seller_engagement\, \category_benchmarks\, \final\ - Document each CTE — что input, что output, business meaning
- Performance: \
EXPLAIN PIPELINE\для каждого, найден bottleneck (one CTE читал 5B rows × 3 раза → materialized view) - Tests: unit tests на каждый CTE с small sample data
- Monitor: alerts если query runtime > baseline +20%
Result: исходный 800-line monolith → 6 manageable CTEs + 50% runtime improvement.»
Red flags (не делай)
- Не упомянуть operational excellence — в WB логистика и fulfillment критически важны
- Игнорировать sellers как stakeholders — это двусторонний рынок
- Не знать ClickHouse — для middle+ обязательно
- Описывать metrics без guardrails — типичный red flag в WB
- Слишком academic ML answers — WB product-driven, нужны practical examples
Как готовиться к Wildberries
Месяц 1: маркетплейс-метрики + ClickHouse
- Return rate, GMV per buyer, delivery NPS, search-to-purchase
- 521 SQL-задача с фокусом на ClickHouse
- Прочитать ClickHouse гайд
Месяц 2: RecSys basics + А/B
- Search ranking algorithms (LambdaRank, Learning to Rank)
- Recommendation systems (collaborative filtering, content-based, hybrid)
- A/B testing методология
Месяц 3: кейсы + behavioral
- 30+ кейсов из /cases фильтр marketplace
- AI мок-собес
- 7 STAR-историй
FAQ
WB сложнее Ozon?
Оба крупных маркетплейса РФ, но WB больше операционных вопросов (логистика, sortировка, returns). Ozon — больше про монетизацию (advertising, financial services).
Можно ли пройти без маркетплейс опыта?
Junior/middle — да. Senior — крайне сложно без 1-2 marketplace проектов.
Какие команды самые конкурентные?
Search & Ranking (heavy ML), Pricing (revenue impact), Operations (large scale). Менее конкурентные — HR Analytics, Marketing Analytics.
Стек технологий?
ClickHouse + Airflow + dbt + Python. Greenplum для DWH. ML — TensorFlow + PyTorch + sklearn.
Что дальше
- 521 SQL-задача
- 532 Python-задачи
- 453 кейса фильтр marketplace
- AI мок-собес
- 150+ вопросов общего собеса
- Вопросы Ozon аналитика (похожий маркетплейс)
- Вопросы Avito аналитика
- Behavioral interview
- Мок-собес
Сравнить Free и Pro → (1999 ₽/мес — безлимит мок-собесов)
Источники
- Levels.fyi РФ 2026 (Wildberries grades, salary bands)
- Habr / wildberries.tech blog — engineering и аналитика material
- clickhouse.com/docs — performance optimization