大概 6 周前我刚结束 Affirm 的 DS loop,岗位是他们 risk 团队的 mid-level DS。下面按轮次拆一下,因为「DS 面试」太泛,而 Affirm 实际考得很具体。
SQL 轮(45 min) 两道题。第一道中等复杂度:aggregation + window functions + 一个很细的 join 条件。第二道更难:要从 event 表里重建用户的还款序列,并标记不规则模式。大概类似「找出漏了一期还款但在 7 天内补上的用户」,但数据更脏。
他们用的是一个真实的 fintech schema,不是泛用电商那种。会有 loanid、installmentnumber、duedate、settleddate、delinquency_flag 这种列。这点很关键。你得知道贷款在数据层面生命周期大概长什么样。
Stats + probability 轮(45 min) 让我解释一个会影响 merchant approval rates 的功能该怎么做 A/B test。然后问:如果随机化单位是 merchants,但测量单位是 transactions 怎么办?(variance inflation、SUTVA violation 那一类问题。)还问了一个 Bayesian vs. frequentist 的 early stopping 问题。这轮真的很严谨。他们招了些学术界很强的人。
还有一道概率题:已知按 FICO band 的历史 default rates,新 delinquency 数据不断进来时你会怎么更新模型?更像是在测你是否理解 online learning 概念,而不是纯算题。
Case / business 轮(60 min) 不是 PM case,更像:给你一个变动的指标,让你做诊断。他们给了一个场景:delinquency rate 在 4 周内上升了 0.3%。你怎么分析?看哪些分层?考虑哪些外部因素?你建议什么?
这轮 fintech 领域知识很重要。如果你没法在高层次上推理 credit risk,case 轮会很难。
我的 loop 里没有 ML modeling 轮(risk DS 岗位,不是 modeling scientist 岗位)。如果你面的是他们的 ML platform 或 credit modeling 团队,应该会不一样。
总计:4 轮。最终面完后大概 9 天给到 offer。