Block数据科学家面试真题与SQL编程2026


一句话总结

Block的数据科学家面试,从来不是考你能不能写出一条JOIN语句,而是看你能否用数据定义问题、主导决策。大多数候选人败在把SQL当成技术题来刷,而不是业务推理的工具。正确的判断是:面试官要的不是“语法正确”,而是“逻辑闭环”——你写的每行代码,必须对应一个可解释的商业假设。答得最好的人,往往不是刷了1000道LeetCode的人,而是能用三条SQL讲出完整用户流失分析的人。

不是你在陈述数据,而是数据在为你作证。薪资结构上,Block为L4级别提供$140K base、$200K RSU(分四年)、15% bonus,总包接近$500K,但只有30%的候选人能走到最终debrie,因为他们输在了“看起来专业,实则无判断力”的陷阱里。真正的筛选标准,藏在第四轮的case study中:你能不能在数据不全、需求模糊的情况下,主动定义“值得分析的问题”?大多数人以为是技术面,其实是产品思维的伪装测试。


适合谁看

如果你正在准备Block(前Square)的数据科学家岗位,且目标是L3到L5级别,这篇文章是为你写的。你不缺SQL基础,也刷过LeetCode中等难度题,但你在模拟面试中总被反馈“分析不够深入”或“缺乏业务sense”——这说明你还在用“学生思维”应对“决策者测试”。本文适用于那些已经通过简历筛选、即将进入技术轮的候选人,尤其是有1-5年经验、来自金融科技、电商或SaaS背景的数据从业者。你不缺工具能力,缺的是Block内部真实的判断标准。比如:在hiring committee(HC)讨论中,一名候选人写出了完美的窗口函数,但因未能解释“为什么选择7天滑动平均”而被否决;

另一人仅用三张表关联,却因清晰定义了“欺诈高发商户的识别阈值”而通过。这种差异不在技术,而在判断优先级。你适合看这篇文章,如果你曾困惑于“为什么我答得全对却没过”,或“面试官问的和我准备的完全不是一回事”。你不是来学语法的,你是来学Block人真正相信什么的。


面试流程为什么不是技术筛选,而是决策权测试?

Block的数据科学家面试流程共五轮,每轮60分钟,跨度2-3周。第一轮是30分钟HR电话,确认动机与背景匹配度。第二轮是45分钟SQL + 15分钟统计基础,由一线数据科学家主持。第三轮是产品分析case,考察数据与业务结合能力。

第四轮是深度技术面,涉及建模、AB测试设计与系统设计。第五轮是跨职能案例,与产品、工程、风控代表共同讨论一个真实历史问题。表面上看是技能递进,实则是决策权的逐步移交。面试官不是在评估“你会不会”,而是在判断“我敢不敢把一个问题交给你独立处理”。

以2025年Q2的一场真实debref会议为例,一名L4候选人第二轮SQL表现极佳,写出复杂CTE结构,但在第三轮被否。原因记录在HC notes中:“能够执行预设分析,但无法主动定义问题边界。当被问‘假设商户欺诈率上升,你会如何定位?’,他直接跳入‘查交易表JOIN商户表’,而未先确认‘上升是绝对值还是比率’、‘是否季节性波动’或‘新商户占比变化’。

”反观通过者,她在同一问题中先提出三个假设:“1. 新商户审核机制失效;2. 某类高风险行业渗透增加;3. 地理集中性爆发”,再对应设计SQL验证路径。不是你会写子查询,而是你是否知道该查什么。

第四轮的建模面更明显。一名候选人用XGBoost跑出高AUC,但被质疑:“你有没有考虑模型上线后的解释性成本?风控团队需要向商户解释拒单原因。”他回答“可以用SHAP”,但未提前纳入特征可解释性设计。最终结论是:“技术能力达标,但不具备跨职能协作所需的决策透明度。

”Block的数据科学家不是后台支持,而是决策发起者。你的SQL不是为了“出报告”,而是为了“定策略”。流程设计的深层逻辑是:越往后,越少给你明确问题,越多要求你定义问题。这才是真正的筛选器。


SQL真题背后的真实考察点是什么?

Block的SQL面试题从不来自题库,而是从真实业务场景抽象而来。例如一道高频题:“找出过去30天内,交易金额突增但活跃天数下降的商户,并分析其风险特征。”表面是多表关联与条件筛选,实则考察三层能力:1. 业务定义能力(“突增”是绝对值还是相对?下降是否显著?

);2. 数据建模理解(交易表、商户表、行为日志表的粒度是否对齐?);3. 异常处理意识(缺失值、重复记录、时区问题)。

内部hiring manager曾分享一个案例:两名候选人在同一题中写出几乎相同的SQL。一人写:

`sql

WITH active_days AS (

SELECT merchantid, COUNT(DISTINCT DATE(timestamp)) as activedays

FROM transactions

WHERE DATE(timestamp) BETWEEN '2025-03-01' AND '2025-03-30'

GROUP BY merchant_id

),

transaction_stats AS (

SELECT merchant_id,

SUM(amount) as total_amount,

AVG(amount) as avg_amount

FROM transactions

WHERE DATE(timestamp) BETWEEN '2025-03-01' AND '2025-03-30'

GROUP BY merchant_id

)

SELECT t.merchantid, t.totalamount, a.active_days

FROM transaction_stats t

JOIN activedays a ON t.merchantid = a.merchant_id

WHERE t.totalamount > (SELECT PERCENTILECONT(0.95) WITHIN GROUP (ORDER BY totalamount) FROM transactionstats)

AND a.activedays < (SELECT AVG(activedays) - STDDEV(activedays) FROM activedays);

`

另一人则先提问:“‘突增’是相对于该商户自身历史,还是行业均值?如果按全局分位数,高频低额商户可能被误判。”然后写出基于商户个体趋势的版本:

`sql

WITH historical_baseline AS (

SELECT merchant_id,

PERCENTILECONT(0.75) WITHIN GROUP (ORDER BY SUM(amount)) AS medmonthly

FROM transactions

WHERE DATE(timestamp) BETWEEN '2024-10-01' AND '2025-02-28'

GROUP BY merchantid, DATETRUNC('month', timestamp)

GROUP BY merchant_id

),

current_period AS (

SELECT merchant_id,

SUM(amount) as curr_amount,

COUNT(DISTINCT DATE(timestamp)) as curr_days

FROM transactions

WHERE DATE(timestamp) BETWEEN '2025-03-01' AND '2025-03-30'

GROUP BY merchant_id

)

SELECT c.merchantid, c.curramount, c.curr_days,

(c.curramount - h.medmonthly) / NULLIF(h.medmonthly, 0) as growthrate

FROM current_period c

JOIN historicalbaseline h ON c.merchantid = h.merchant_id

WHERE (c.curramount > h.medmonthly 2)

AND c.currdays < (h.medmonthly / 30 0.5); -- 假设月均活跃天数

`

第一版被标记为“执行者”,第二版被标记为“决策者”。不是你写不写CTE,而是你是否意识到基准选择决定结论。Block的SQL面试不是语法考试,而是假设检验的前端。你写的WHERE条件,本质上是你的业务判断。HC讨论中明确记录:“我们不需要更多能写JOIN的人,我们需要能定义‘风险’的人。”真正的考察点,是你的代码能否成为会议桌上说服他人的证据链。


为什么80%的人输在AB测试设计这一轮?

第四轮的AB测试设计是Block数据科学家的最大淘汰区。典型题目如:“我们想测试新风控规则对欺诈率的影响,但担心误杀率上升。如何设计实验?”大多数人立即回答“随机分组、A/B对比、看p值”,但这恰恰是被淘汰的原因。不是你不懂方法,而是你忽略了Block的核心约束:商户体验不可逆。

在一次真实的跨部门debref中,一名候选人提出“将新规则随机推给10%商户”,被风控负责人当场挑战:“如果新规则误杀了高价值商户,我们无法恢复信任。”候选人回应“可以事后补偿”,负责人摇头:“补偿不是解决方案,是失败的补救。”最终HC结论是:“缺乏对业务不可逆性的认知。”通过者的做法完全不同。她先问:“当前规则的误杀率是多少?

哪些商户被频繁误杀?”然后提出分阶段实验:第一阶段仅监控,不执行;第二阶段在低风险商户中灰度;第三阶段结合商户生命周期设计异步实验。她甚至建议用合成控制法(synthetic control)替代随机化,避免对真实商户造成影响。

这不是统计知识问题,而是权力意识问题。你有没有意识到,你的实验设计会直接决定某个商户是否能继续收款?Block的AB测试面,本质是测试你是否理解“数据决策的社会成本”。

大多数人还在背“样本量计算公式”,但面试官想听的是:“我建议不启动A/B测试,因为风险不对称——欺诈损失可量化,但商户流失的长期价值不可逆。”这种判断,才是L5级数据科学家的门槛。不是你能不能算p值,而是你敢不敢说“这个实验不该做”。

另一个常见错误是忽略时间窗口。一名候选人设计实验为期7天,但被质疑:“商户交易周期是月度的,7天数据能否反映真实行为变化?”他未能回答。通过者则主动提出:“建议观察至少两个完整周期,并检查滞后效应,因为商户可能在被拦截后延迟申诉。”真正的问题不是统计严谨性,而是时间粒度与业务节奏的对齐。你的测试设计,必须嵌入现实世界的节拍中,而不是教科书的真空里。


如何应对跨职能案例面的真正挑战?

第五轮的跨职能案例面是Block独有的设计,由产品、工程、数据、风控代表共同参与。题目通常来自过去6个月的真实争议事件,例如:“2025年1月,新商户注册转化率下降12%,但内部无产品变更。请分析原因并提出对策。”这不是让你“出报告”,而是让你主导一次跨部门对齐会议。

真实场景发生在2025年4月:一名候选人进入会议室后,立即打开笔记本开始写SQL。产品代表打断:“我们还没确认问题是否存在。”候选人愣住。工程代表补充:“上周有CDN故障,可能影响前端埋点。”数据候选人这才转向问:“是否有监控报警?日志完整性如何?”但已失去主导权。HC评语:“被动响应,而非引领讨论。”最终被淘汰。

通过者则开场说:“我建议先验证三个层面:1. 数据准确性——是否有埋点丢失或ETL延迟;2. 外部因素——支付渠道、设备分布、地域变化;3. 内部策略——风控规则、审核队列积压。”她主动提出先查监控系统,确认数据可信,再分析。

当工程代表提到CDN问题时,她立即说:“那我们先排除前3天数据,用后28天做基准。”她甚至调出第三方网络监测数据(如Cloudflare状态页)佐证。整个过程,她不是在“回答问题”,而是在建立分析秩序。

这才是跨职能面的真正挑战:你不是专家,而是协调者。你的技术能力只是入场券,真正考验的是你能否在信息混乱、利益冲突中,用数据建立共同认知。薪资中高达$200K的RSU,不是为写SQL发的,是为承担这种决策协调责任发的。你必须意识到,会议室里的每个人都有KPI,你的任务不是“正确”,而是“可行且被接受”。不是你展示多聪明,而是你让别人愿意跟随你的分析路径。


准备清单

  • 精通PostgreSQL语法,特别是窗口函数(ROW_NUMBER、RANK)、CTE递归、日期序列生成。Block使用PG作为主要分析数据库,不是MySQL或BigQuery。
  • 掌握至少一种因果推断方法:合成控制、双重差分(DID)、工具变量。AB测试面中,随机化常不可行,必须能提出替代方案。
  • 熟悉支付业务核心指标:GTV(总交易额)、take rate(抽佣率)、fraud rate(欺诈率)、MOT(平均交易额)、activation rate(激活率)。能用SQL从原始表计算这些。
  • 准备3个完整案例,每个包含:问题定义、假设提出、SQL验证、结论建议。案例必须来自真实业务,如“分析退款率上升”、“评估新定价策略”。
  • 系统性拆解面试结构(PM面试手册里有完整的[数据科学家面试]实战复盘可以参考),特别是如何将技术分析转化为决策建议。
  • 模拟跨职能会议:找朋友扮演产品、工程、风控,练习在干扰中保持分析框架。重点训练“先确认数据可信,再分析趋势”的话术。
  • 了解Block的核心产品线:Square POS、Cash App、Tidal、Block Bank(新业务)。能说出各业务的数据特点,如Cash App的P2P交易高频低额,POS的B2B周期性强。

常见错误

BAD案例1:盲目使用全局基准

候选人被问:“找出高风险商户。”他立即写SQL查交易金额TOP 10%。面试官问:“如果一个农夫市场商户在丰收季交易量翻倍,算高风险吗?”他答:“可以加时间平滑。”但未意识到问题本质是个体趋势 vs 群体分布。GOOD做法是先按商户类型分群,再用历史基线比较变化率。不是“谁最大”,而是“谁变最快”。

BAD案例2:AB测试忽略执行成本

候选人设计实验时说:“随机分50%流量。”面试官问:“如果新规则导致商户无法收款,谁负责?”他答:“实验有监控,异常会停止。”但未提出熔断机制或补偿方案。GOOD做法是明确写出:“实验包含自动熔断逻辑,当误杀率>2%时暂停,并触发人工审核队列。”不是“统计显著”,而是“业务安全”。

BAD案例3:跨职能面中抢答

候选人听到问题后立刻说:“我查交易表JOIN商户表。”产品代表还没说完需求。结果被质疑:“你甚至不知道问题是否真实存在。”GOOD做法是先说:“我建议先验证数据准确性,再定位根因。”不是“快”,而是“稳”。在HC讨论中,这类候选人被标记为“技术冒进,缺乏协作意识”。



准备拿下PM Offer?

如果你正在准备产品经理面试,PM面试手册 提供了顶级科技公司PM使用的框架、模拟答案和内部策略。

获取PM面试手册

FAQ

为什么我SQL全对却没过?

因为你把面试当考试,而Block当决策模拟。2025年有一场真实案例:候选人写出完美SQL,计算出“欺诈率上升15%”,但未检查数据延迟——当天ETL pipeline故障,数据只到中午。面试官说:“你基于不完整数据下结论,现实中会导致误杀商户。”他被淘汰。通过者在同样题中先问:“今天的数据是否完整?

Kafka lag是多少?”然后才开始分析。不是代码正确,而是判断时机成熟。Block要的是在不确定性中做出负责任决策的人,不是在理想条件下跑通代码的人。

是否需要准备机器学习?

需要,但不是你以为的方式。L3-L4岗位不考手推公式,而是考“建模的代价”。例如面试官问:“用模型预测商户流失,你会选什么特征?”BAD回答:“RFM、交易频率、登录次数。

”GOOD回答:“我会避免使用支付失败次数,因为这可能由我们自身系统问题导致,用它建模会形成负向循环——系统越差,模型越预测流失,越减少资源投入。”真正的考察是:你有没有意识到模型会反向塑造现实?在HC讨论中,一名候选人因提出“模型解释性优先于AUC”而被特别标注。不是模型多准,而是它上线后是否可管理。

薪资和职级对应关系是什么?

L3:$110K base、$120K RSU(分四年)、10% bonus,总包约$300K。L4:$140K base、$200K RSU、15% bonus,总包近$500K。L5:$180K base、$350K RSU、20% bonus,总包可达$700K。但薪资差异不在技术,而在决策影响力。

L4以上需主导跨职能项目。一名L4候选人曾因“独立推动一次风控策略迭代,减少误杀12%”而获高评。RSU不是为写SQL发的,是为承担业务结果责任发的。你拿多少,取决于你敢扛多大风险。


准备好系统化备战PM面试了吗?

获取完整面试准备系统 →

也可在 Gumroad 获取完整手册

相关阅读