← 返回博客列表 Uber Data Scientist Case Study 面经:VO 三轮 + Onsite 五轮全流程拆解
Uber

Uber Data Scientist Case Study 面经:VO 三轮 + Onsite 五轮全流程拆解

2026-05-31

Uber 的 Data Scientist 面试有一个非常鲜明的特征:business impact driven。它不是那种「写一段 SQL、跑一个 A/B test」就能交差的岗位,而是要求候选人在每一道 case 里同时展示 数据建模能力 + 跨部门沟通能力 + Marketplace 双边市场直觉。这篇文章把一次完整的 Uber DS 面经按「VO 三轮 + Onsite 五轮」拆解到题面、踩坑点、应对框架,方便正在准备的同学对照练习。

流程概览:VO 三轮 → Onsite 五轮

W0  Recruiter 电话 / Career Site 投递
W1  VO Round 1 — Hiring Manager(45 min)
W2  VO Round 2 — Stakeholder Management(45 min)
W3  VO Round 3 — Analytics & Experimentation(60 min)
W4  Onsite 五轮(一整天,每轮 45-60 min)
        Coding (Python/SQL) → Bar Raiser → Marketplace Experimentation
        → XFN with PM → Hiring Manager
W5  Team Match → Offer 决议

VO 的三轮基本上是一个「过滤漏斗」:HM 看大方向 fit,Stakeholder 看跨部门沟通,Analytics 看实验设计基本功。Onsite 才是真正的深度考核,这里也是 candidates 最容易翻车的地方。

VO 阶段三轮拆解

Round 1 — Hiring Manager:项目 Impact 必须是数字

HM 这一轮看似最简单(resume + 项目),但陷阱就在 follow-up:

"How much real business impact did your model end up delivering?"

如果你的简历上只写「improved accuracy by 4%」,HM 会立刻追问到具体的 GMV / retention / cost saving 数字。我建议提前准备一个「impact paragraph」模板:

Project: <one-liner>
Stakeholder: <which team / who consumed the output>
Metric: <baseline → after, absolute Δ>
Business value: <$ saved / GMV lifted / hours reclaimed>
My role: <I owned X, partnered with Y on Z>

HM 还会丢一道 product case 暖手,强度不大但要求框架感。Uber 习惯听到的结构是 Hypothesis → Metric → Experiment,把这三段放在第一句话里抛出来,interviewer 会立刻给绿灯。

Round 2 — Stakeholder Management:Uber Eats 优惠券对比

这一轮的 BQ 几乎都是同一类:

"What would you do if a cross-functional partner disagreed with your analytic recommendation?"

不要一上来就讲「我会用数据说服他」。Uber 想听到的是:

  1. 理解对方动机(PM 关心 launch 时间 / Ops 关心成本)
  2. 共建一个评估框架(先约定 metric,再讨论具体数字)
  3. 数据收口(用最小可比较的实验切片回答争议)

紧接着会进入 product case,典型题:

"How do you compare and prioritize the effectiveness of Uber Eats promotions?"

很多候选人会陷进「先看转化率还是 GMV」的细节里。正确做法是先抛一个二维框架:

维度 User Growth Profitability
Conversion rate
GMV per session
Retention W4
Margin per order
Spillover to Rides

把矩阵摆出来,再讨论 prioritization:early-stage promo 看 user growth,mature promo 看 profitability。Interviewer 关心的是优先级判断,不是哪个具体数字。

Round 3 — Analytics & Experimentation:Leave-at-Door

Uber Eats 真实业务背景:

"Leave at door 被 60% 用户使用,但订单丢失率比 hand-it-to-me 高 5 倍,refund 成本急剧上升。请分析原因并设计实验。"

很多候选人会本能地说「跑一个 regression model」,但 Uber 想听的不是技术,而是用户旅程拆解

丢失原因可能来自:
  ┌─ 用户侧:地址描述模糊 / 公寓楼层无标识 / 时间窗错位
  ├─ 司机侧:未拍照确认 / 放在错误楼层 / 时间紧赶下一单
  └─ 系统侧:定位精度差 / 通知未触达 / refund 流程过宽松

实验设计也不是单纯 A/B:Uber 期待地理聚类实验(cluster randomization),因为同一栋公寓的用户互相干扰、单纯按 user 切流会有 SUTVA violation。建议给出双层实验:

Layer 1: 地理聚类(high-risk zip 5-digit vs low-risk)
Layer 2: 内层 A/B(强制拍照 vs 默认流程)
Power analysis: 每 zip 至少 200 单,运行 14 天

这套框架抛出来基本就锁分了。

Onsite 五轮拆解

1️⃣ Coding(Python/SQL)— 不让用 Pandas

Uber DS 的 Coding 经常会突然限制库:

"Don't use Pandas. Merge two dataframes by hand."

这不是真要你写 C 风格的代码,而是验证你能否在没有 black-box 工具时把数据流讲清楚。骨架:

def manual_merge(left: list[dict], right: list[dict],
                 on: str, how: str = "inner") -> list[dict]:
    """
    手写两个 dataframes 的 merge:用 dict 做 hash join。
    支持 inner / left。
    """
    index = {}
    for row in right:
        key = row[on]
        index.setdefault(key, []).append(row)

    out = []
    for row in left:
        matches = index.get(row[on], [])
        if matches:
            for m in matches:
                merged = {**row, **{k: v for k, v in m.items() if k != on}}
                out.append(merged)
        elif how == "left":
            out.append({**row})
    return out

写完之后必加:复杂度 O(n + m)tie-break 规则null on-column 怎么处理。Interviewer 会按这三点逐项打分。

紧接着会有一道 SQL,节奏建议是 先写最朴素的 join,再叠加 aggregation,不要一上来就堆 window function。

2️⃣ Bar Raiser — Uber One 战略级 Case

Director 会丢一个非常宽的题:

"How would you launch Uber One and analyze its success?"

最容易翻车的是直接埋头算 GMV / retention,被认为「没有 executive presence」。正确打开方式是分三层:

看什么 关键 metric
User 是否解决了 cross-product 切换摩擦 Rides + Eats 双产品月活、ARPU lift
Merchant 是否带来更高质量订单 Member order GMV、basket size、cancellation rate
Platform 是否提升 Marketplace 健康度 Member LTV、subscription churn、incremental contribution

每一层先讲战略意图,再下钻 metric。三层讲完,自然显得「站得高」,Bar Raiser 会买账。

3️⃣ Marketplace Experimentation — Merchant Onboarding

题面:

"Uber Marketplace 要决定 onboard 哪些商家,怎么建模?"

:很多人套电商「补贴拉新」逻辑。Uber 是双边市场,必须从供需两侧讲:

模型层面,可以给出一个 expected incremental GMV 的回归框架:

E[ΔGMV | onboard m] 
   = α · demand_density(m) 
   + β · supply_gap(m) 
   + γ · matching_efficiency(m)
   - δ · cannibalization(m)

最后强调:onboard 决策不能只看绝对 GMV,要看 incremental 部分(扣掉对现有商家的蚕食)。

4️⃣ XFN with PM — 切到 Layman 语言

这一轮气氛最轻松,但有一个小 trick:别再用 DS 行话。PM 想听的是 storytelling:

"Onboarding 一个新商家就像在街角开一家新餐馆—— 你得先估周边客流、口味偏好、其他餐馆的密度, 再决定开张时间和菜单。"

把 marketplace 模型翻译成餐馆比喻,PM 立刻能跟上节奏,反过来抛出更细的产品问题,会话就顺了。

5️⃣ Hiring Manager 收尾 — Impact 优先

最后一轮 HM 会问 career motivation 和 most impactful project。别讲学术成就,把 impact 翻译成业务语言:

❌ "I improved AUC from 0.81 to 0.85." ✅ "My fraud model saved the company $2.3M in chargebacks the first quarter after launch."

VO 辅助与 VO 代面:Uber DS 怎么对接

Uber DS 的 case study 节奏快、跨度大,自己单练很容易陷在某一类题里。我们的 VO 辅助 会按下列节奏排:

  1. 岗位线判定:先确认是 Marketplace DS / Product DS / Experimentation Platform,三条线题型不同
  2. 题型预测:覆盖 Eats promotion / Rides surge / driver retention / leave-at-door 等历史高频
  3. 限时 mock:按 45-min × 3 / 60-min × 5 节奏跑全套
  4. 现场 cue:onsite 当天实时拉框架(Hypothesis → Metric → Experiment / 双边 marketplace 三层 / impact paragraph)
  5. 复盘:每轮结束 30 min 内回放,找回答里 metric 不闭环的地方

如果你日程已经被推到 onsite 周内,我们也支持 VO 代面 的对接路径:先做岗位线 + 邀请邮件信息核对,再决定上 VO 辅助 还是 VO 代面。

FAQ

Q1: Uber DS 的 VO 三轮和 Onsite 五轮总周期多长? A: 一般 4-5 周。VO 三轮通常在 2-3 周内完成(每周 1-2 轮),Onsite 排期会在 VO 全过之后 1-2 周内一整天打包完成。

Q2: Coding 这一轮真的不能用 Pandas 吗? A: 不是绝对禁止,是 interviewer 想看你能否在不依赖库的情况下讲清楚数据流。建议先问一句「Can I use Pandas as a follow-up after a manual implementation?」,得到允许再用。

Q3: Marketplace case 和电商 case 最大的区别是什么? A: 电商通常是单边——你只关心买家。Uber 是双边——司机/商家供给和乘客/食客需求要同时建模,单看一侧的指标会被 interviewer 直接挑战。

Q4: Bar Raiser 这一轮如何避免被认为「不够 senior」? A: 别一上来就下钻 metric,先用 user / merchant / platform 三层结构铺战略,再选其中一层下钻到 metric。这是最稳的「executive presence」表达方式。

Q5: 找 VO 辅助介入最晚到什么阶段还来得及? A: VO Round 1 之前是最理想的,可以从岗位线判定开始。如果已经到了 onsite 前一周,我们仍然可以做「五轮快速 mock + 现场 cue」组合包,重点在 Marketplace + Bar Raiser 两轮。

写在最后

Uber DS 不是一个能「刷题刷出来」的岗位。它考的是业务直觉 + 沟通框架 + 双边市场理解这种偏经验型能力,单刷 LeetCode SQL 50 是远远不够的。如果你正在准备 Uber 的 VO 或 Onsite,可以微信 Coding0201 联系,发岗位 JD + 当前流程节点截图,先做岗位线判定,再排 VO 辅助 / VO 代面 节奏。


需要面试真题? 立刻联系微信 Coding0201获取真题


联系方式