☰
PayPal数据科学家笔试题解析:统计、SQL与风控建模实战
2026/10/25 17:50:25 网站建设 项目流程

最近帮一个学弟做校招辅导,他扒出一份2017年PayPal暑期实习生笔试卷(数据科学家方向),跑来问我:前几年的题,现在刷还有意义吗?我把整份试卷从题型到考察逻辑完整过了一遍,答案是:题型会变,但PayPal想招的"数据科学家"应该具备什么能力,和今天几乎没有差别。作为一家每天处理海量跨境支付的金融科技公司,PayPal的数据科学家不是埋头调参的算法工程师,而是要能在"放行这笔交易"和"拦截这笔交易"之间做决策的人。这份笔试卷最值得研究的,恰恰是它如何用几道题,把统计功底、工程能力、业务敏感度一次问透。下面我结合PayPal的业务场景,把这份笔试卷的考点、解题思路和准备方法拆开聊聊,对想投数据科学实习、校招的同学应该会有帮助。

1. 这份笔试卷的"底色":支付公司的数据科学岗到底在招什么人

1.1 从PayPal的业务场景反推笔试设计

PayPal的业务本质是连接买卖双方的支付网络。你在海淘时用工行Visa卡绑定PayPal完成付款,这背后会触发一串事件:交易请求进来,系统判断这笔交易是否可信,资金从发卡行划到PayPal的备付金账户,再结算给商户。整个过程以毫秒计,而数据科学家要做的,就是在这些事件数据里找到规律,既降低欺诈损失,又尽可能不影响正常用户的支付体验。

所以,笔试题目几乎都围绕这类场景设计:

  • 概率统计题:判断一个账户突然高频交易是不是被盗号;
  • SQL取数题:从交易表里计算某渠道的真实欺诈率;
  • 建模评估题:在欺诈样本极少的情况下,如何衡量一个模型的好坏;
  • 案例分析题:给你一个业务问题,如何设计一套数据驱动的风控决策机制。

你会发现,这份试卷不考深度学习论文复现,也不考花哨的框架。PayPal要招的不是"模型调包侠",而是能理解支付链路、能和工程师顺畅协作、能对业务结果负责的数据科学家。换句话说,笔试从第一题就在筛选"你懂不懂业务"。

1.2 2017年前后的数据科学面试:当时的行业风向

2017年时,深度学习在图像、语音领域已经火了,但在支付风控这种强解释性、强合规的场景里,主流仍然是逻辑回归、梯度提升树和规则引擎。原因很简单:风控决策必须能让业务人员听懂,出了问题要能回溯,监管来问要能讲清楚"为什么拦截了这笔交易"。黑盒模型在那个环境里很难直接落地。

所以,2017年的笔试卷比较朴素,侧重点很明确:数学基础要扎实,SQL要熟练,机器学习部分更看重对偏斜数据、代价敏感和特征工程的理解,而不是看你会不会搭一个神经网络。你去看当时的笔试回忆贴,几乎没有"手动推导Transformer"这种题,更多的还是贝叶斯和假设检验。

这和今天相比,好像"变了",其实"没变"。变化的是工具栈,现在大家动不动就上XGBoost、LightGBM,还会聊因果推断、模型可解释性;不变的是考察内核——数据科学家得能从数据里发现业务问题,并且给出可落地的方案。下面我按模块拆解题型。

2. 统计与概率题:PayPal为什么反复考贝叶斯和假设检验

2.1 贝叶斯公式是风控的第一性原理

风控领域最基本的场景是:系统报警了,这笔交易真正是欺诈的概率有多大?贝叶斯公式就是干这个的。笔试中常见的版本是给你欺诈先验概率、检测模型的召回率和误报率,要你算后验概率。

举个典型题目:假设某支付场景的真实欺诈率是1%,风控模型的召回率是98%,误报率是2%。如果模型对某笔交易打了"高风险"警报,那么这笔交易真正是欺诈的概率是多少?

很多人的第一反应是98%,这就是经典的"基础比率忽视"。先验只有1%,即便模型很准,警报里绝大多数仍然来自正常交易。正确解法是:

p(欺诈|警报) = p(警报|欺诈) * p(欺诈) / p(警报)

其中p(警报) = 0.98 * 0.01 + 0.02 * 0.99 = 0.0098 + 0.0198 = 0.0296。代入得到:

p(欺诈|警报) = 0.0098 / 0.0296 ≈ 0.331

也就是说,在模型报警的交易里,真正欺诈的只有三分之一左右。PayPal风控系统每天可能发出几十万条警报,如果分析师不明白这个数字的含义,把警报当"实锤"去处理,大量正常用户会被拦下来,体验损失巨大。这种题表面上考公式,实际上考你能不能把概率直觉用在业务判断上。

2.2 假设检验与A/B测试:别只记p值,要讲业务代价

支付页面改版,比如把"立即支付"按钮从蓝色改成绿色,需要验证是否真的提升了支付率。数据科学家要会设计A/B测试,包括样本量计算、显著性检验、效应量判断。

真题考察点一般有三个。第一,指标选什么。支付率、客单价、复购率,不同指标对实验结论的影响很大。第二,样本量够不够。需要知道baseline转化率和最小可检测提升,套用样本量公式算最小样本量。第三,怎么解释p值。p<0.05不等于效应大,也不代表业务上有价值,更不代表下一批用户一定会复现这个结果。

常见错误是忽略多重比较。一个实验同时看几十个指标,总有一个会"显著"。我见过候选人直接说"p=0.04,所以上线",但没做过多重检验校正,这就很扣分。PayPal这种体量的平台,每天有无数实验在跑,如果每次只看p值不看业务显著性,迟早会做出错误决策。

2.3 概率分布与期望:把随机过程当成业务语言

有时笔试题会结合泊松分布:交易事件按一定速率到达,计算某段时间内出现N笔交易的概率。或者结合几何分布:若每笔交易欺诈概率为p,首次出现欺诈的等待次数期望是1/p。这些题目的核心是让候选人理解随机过程的业务含义。

PayPal的交易量足够大,完全可以用泊松过程近似描述每秒到达的交易数量。如果某个渠道的日均交易量是1000笔,那么某分钟到达5笔交易的概率是多少?这种计算看起来是数学题,实际上是容量规划、系统压测的基础。另一个更贴近风控的例子是:如果某类欺诈事件的发生符合泊松过程,那么"下一次欺诈什么时候来"就不是拍脑袋能回答的,必须用分布去建模。这部分内容平时容易忽略,但一旦考到,区分度很高。

3. 数据结构与SQL:从交易流水里取数,是数据科学家的基本功

3.1 典型取数场景:聚合、过滤、join要用得滚瓜烂熟

PayPal笔试试卷一般会给三张表:

  • users(user_id, country, signup_date)
  • transactions(txn_id, user_id, txn_time, amount, status, channel)
  • fraud_labels(txn_id, is_fraud)

第一题通常是:统计2017年5月各渠道的交易总额和成功交易笔数。这就是考察聚合和条件计数。

SELECT channel, SUM(CASE WHEN status = 'SUCCESS' THEN amount ELSE 0 END) AS total_amount, COUNT(CASE WHEN status = 'SUCCESS' THEN txn_id END) AS success_txn_cnt FROM transactions WHERE txn_time >= '2017-05-01' AND txn_time < '2017-06-01' GROUP BY channel ORDER BY total_amount DESC;

看起来很基础,但很多人会踩坑:忘了过滤status,或者把退款交易也算进去,导致金额被高估。PayPal的真实数据里,status字段有SUCCESS、FAILED、REFUNDED、REVERSED等,不同状态对业务含义完全不同。如果题目没明确说,最好写上假设,比如"只统计成功交易",这会让阅卷人觉得你有业务意识。

第二题一般会加难度:计算每个用户的首次成功交易时间距注册时间的平均时长。这需要先找出每个用户的首次交易时间,再和注册时间做差。很多候选人会写一个很复杂的join,其实用窗口函数更优雅。

3.2 窗口函数:在海量交易数据里写高效SQL的必备技能

窗口函数在2017年的笔试卷里就已经是高频考点了,因为PayPal的数据量大,写得烂的SQL跑不出来,而窗口函数能很大程度避免低效的自连接。

高频题目:找出每个用户交易金额最大的前3笔交易。

SELECT user_id, txn_id, amount FROM ( SELECT user_id, txn_id, amount, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY amount DESC) AS rn FROM transactions ) t WHERE rn <= 3;

这里有一个细节:ROW_NUMBER、RANK和DENSE_RANK在对并列金额的处理上不一样。如果题目问的是"金额排名前三",有并列时该用哪种?通常业务上希望至少保留3笔,或者按唯一交易算,这时候ROW_NUMBER更合适;如果希望保留并列的所有交易,会考虑DENSE_RANK。这个细节在面试中往往是加分点,因为很多人背了窗口函数却不清楚差异。

3.3 数据清洗和异常值处理:笔试里最容易埋坑的地方

SQL题不会只给你一张干干净净的表,通常会埋几个坑。比如status字段大小写不统一,直接用WHERE status='success'会漏数据;交易时间存的是UTC,业务方要的是北京时间,需要做时区转换;同一个txn_id可能出现两次,可能是重试请求,不能直接按行数统计。

我建议拿到SQL题先花一分钟浏览表结构,先检查主键和空值,再开始写代码。在真实工作中,PayPal的数据来自全球,同一笔交易在不同时区可能落在不同日期,如果直接GROUP BY日期,报表会天天对不上。笔试时能主动写出"过滤测试交易、过滤失败状态、按date(txn_time at time zone 'UTC' at time zone 'America/Los_Angeles')分组"这种细节,会让阅卷人觉得你不是第一次处理脏数据。

4. 机器学习与模型评估:别只会调包,要懂业务代价

4.1 分类模型里的不平衡问题:准确率是风控的陷阱

欺诈检测这个任务天然是极度不平衡的。真实交易里欺诈率通常低于1%,如果在测试集上直接跑逻辑回归,模型把所有样本都预测成"正常交易",准确率也有99%以上。笔试问你"准确率这么高,模型能不能上线?"就是让你识别出评估指标的问题。

正确的思路是看混淆矩阵,用召回率、精确率、F1、AUC、PR曲线来评估。尤其是不平衡场景下,PR曲线比ROC曲线更有区分度。因为ROC曲线受到大量负样本的影响,FPR会被"稀释",而PR曲线直接关注正样本的精确率和召回率,更贴近风控的实际诉求。

评估指标优点缺点
Accuracy直观不平衡数据下容易虚高
Precision关注"被拦截的交易里有多少是真欺诈"对阈值敏感
Recall关注"真欺诈抓到了多少"阈值低时会误伤大量正常用户
AUC不受阈值影响,综合排序能力对不平衡数据不够敏感
PR AUC不平衡场景下区分度更好业务解释性略差

实际做风控模型时,我更推荐同时报告召回率@某个精确率阈值,比如"在误报率低于1%的时候,召回率能做到多少",这样才能直接和业务方沟通。

4.2 代价敏感学习与阈值选择:模型分数只是起点

很多候选人会调模型,却不知道怎么选阈值。PayPal风控里,"拦截一笔正常交易"和"放行一笔欺诈交易"的代价完全不同。放行欺诈,直接损失这笔交易的金额;拦截正常用户,可能造成用户投诉、客服成本、甚至流失。所以,阈值不能只看模型分数分布,要算清楚业务代价矩阵。

举一个简化例子:

真实情况预测为正常预测为欺诈
正常交易0-10元
欺诈交易-100元0

这里,拦截一笔正常交易损失10元(客服和用户体验成本),放行一笔欺诈损失100元(直接金额损失)。那么,只有当一笔交易被预测为欺诈的后验概率大于10/110≈9.1%时,拦截才是划算的。如果把100元改成1000元,阈值就变成10/1010≈1%,意味着风控可以更激进地拦截。

笔试卷里如果让你"选择合适的阈值",不要只回答"在PR曲线上找拐点",要把代价矩阵、先验概率、业务约束都摆出来。这种答题思路比公式本身更值钱。

4.3 特征工程与过拟合防控:时间顺序是风控的生命线

数据科学家要能从交易数据里构造特征,常见的有:交易金额、历史交易频次、设备指纹、IP地理位置、短时间内多笔交易的速度特征。但有个非常关键的点——特征泄露。比如"该用户是否被风控规则命中",如果这个规则是用未来数据生成的,或者直接用规则结果当标签,训练出的模型上线后效果必然崩盘。

在PayPal这种业务里,时间特征尤其敏感。训练时必须按时间切分,比如用前6个月的数据做训练集,接下来1个月做验证集,最后1周做测试集。如果随机抽样,同一笔用户的历史交易会同时出现在训练集和测试集里,造成数据泄露,模型性能被严重高估。

笔试中如果给出时间字段,一定要在建模方案里提到"按时间划分样本",这几乎是金融风控岗位的"政治正确"。哪怕题目没有明说,这也是一项非常有效的加分动作。

5. 案例分析题:用数据回答"要不要放行这笔交易"

5.1 开放式风控案例题的答题框架

最后往往有一道开放题,可能长这样:"PayPal要减少欺诈损失,但不想影响用户体验,你怎么设计一个风控系统?"这种题没有标准答案,但得分差异很大。我的答题框架一般是五步:

  • 定义目标:最小化总体损失(欺诈损失+误伤损失),约束是用户体验指标不下降;
  • 梳理数据:交易金额、用户历史行为、设备、IP、商户类型、绑卡信息等;
  • 设计方法:先用规则引擎拦截明显欺诈,再用机器学习模型打分,设置双阈值,高风险直接拒绝、中风险二次验证、低风险放行;
  • 离线评估:用历史数据回测,看PR曲线和业务指标;
  • 在线落地:先做影子模式,让模型和现有规则并行打分,不实际拦截,观察一段时间后再灰度上线。

这个框架看起来简单,但很多人写的时候会漏掉"影子模式"这一环。PayPal这类公司对线上系统极其谨慎,任何模型直接切换到生产环境都是高风险操作,所以答出"shadow mode到灰度发布"的完整链路,说明你有真实落地意识。

5.2 业务敏感度:跨境支付里的用户差异和规则差异

PayPal是跨境支付公司,业务遍布全球。答题时如果能体现这一点,会非常加分。比如提到"我不可能对全球用户用同一个模型,因为不同国家的支付习惯和欺诈模式差异很大"。

举个例子:国内用户很多会用工行Visa卡绑定PayPal海淘,这类交易通常发生在深夜或凌晨,金额相对集中;而欧美用户可能习惯用信用卡直接在线上订阅服务,表现为小额高频。如果模型只看单笔金额,很容易把海外大额订单误判成欺诈。更合理的方式是分层建模,或者至少把国家、支付方式、卡组织作为重要特征。

另外,不同国家的合规要求也不同。有些地区允许基于风险的二次验证,有些地区则要求必须在多少秒内给出决定。这些约束直接影响模型复杂度——你不能让用户等10秒再返回结果,那等于主动放弃交易。

5.3 常见错误和加分项:阅卷人希望看到的细节

很多候选人在开放题里只写"我会用XGBoost"或者"我会构建一个评分卡",完事。这不算答案,因为没有回答业务问题。常见错误包括:不定义评估指标、不考虑误伤代价、不聊上线后的监控、不聊数据质量问题。

加分项则包括:提到模型可解释性,说清楚风控决策需要给客服和监管提供理由;提到模型回退机制,万一新模型表现异常,怎么切回旧规则;提到数据质量,比如交易数据可能有延迟、缺失、被篡改,怎么处理。这些细节不需要多复杂,但能把你的答案和"只会调包"的候选人区分开来。

6. 从现在回看这份试卷:哪些会变,哪些不会变

6.1 题型演化和新考点:从规则引擎到可解释AI

如果我们把2017年的笔试卷放到现在,会发现一些明显的变化。首先是题型更多样,可能会加入因果推断题,比如"如何评估风控拦截对用户复购率的影响";其次是会更重视可解释性,比如问你"如果模型上线后,监管要求解释某笔交易为什么被拦截,你会怎么做";最近一两年,有些团队甚至开始聊大语言模型在客服和规则生成里的应用。

但回到这份笔试卷本身,统计、SQL、机器学习评估和案例分析仍然是占比最大的模块。原因很简单:这些能力是数据科学家的"基础设施",无论工具怎么变,你都需要靠它们来发现问题、定义指标、验证想法。

6.2 给准备金融科技类数据科学岗位的读者一些建议

如果你现在要投PayPal或类似金融科技公司的数据科学岗位,我建议分四步准备:

  1. 系统过一遍统计推断:贝叶斯公式、假设检验、A/B测试、常见概率分布,不要只背公式,要能结合业务场景解释;
  2. 刷SQL题:重点练窗口函数、分组聚合、条件统计,刷LeetCode Database题库前30道就够用;
  3. 找一个风控类开源数据集,完整走一遍探索性分析、特征工程、模型训练、阈值选择、离线评估的流程,把它写成一个可讲清楚的项目;
  4. 多看支付风控的公开分享,理解真实业务中的约束条件和落地流程。

第四点经常被忽略。数据科学面试不只是考算法,还要考你"能不能和业务方聊天"。你不需要成为支付专家,但至少要理解交易链路上的关键节点和风险点。

6.3 做题和写方案时的一些实操小经验

最后分享几个我在看这份试卷和辅导学弟过程中总结的小经验,比较琐碎,但很实用。

拿到试卷先别急着动手。花五分钟通读全卷,先做自己最有把握的题,把不会的题放一放,避免在一道题上浪费太多时间。PayPal这类公司更看重思路,哪怕某题没算出最终数字,只要公式和逻辑写清楚,也会给分。

SQL题写完顺手加注释,比如"过滤失败状态"、"按用户去重",这会让阅卷人很快理解你的思路。如果题目有模糊条件,比如"统计交易总额"没说明是否包含退款,直接在答案里写"假设不包含退款交易",比留白好得多。

案例题宁多勿少。把目标、数据、方法、评估、落地、监控都写一遍,即使有些地方你觉得多余,也比只丢一个模型名显得专业。阅卷人想在十几分钟里看完你的答案,结构清晰比话术华丽更重要。

我个人在辅导时发现,很多候选人基础题目都能做对,但一到开放题就露怯,原因不是不会,而是缺少"把问题拆成目标、约束、行动、评估"的思维习惯。这个习惯不是刷题刷出来的,而是多看真实案例、多问几个"然后呢"练出来的。如果你现在准备面试,不妨找一道风控场景题,按照我上面说的框架写一遍,过两天再拿出来改一遍,你会明显感觉到思路变清晰。

这份2017年的PayPal笔试卷,看似过时,其实是一面很好的镜子。它照出的不是某个框架的语法,而是数据科学家最底层的能力。把底层能力打扎实,无论去哪家公司,都不怕题变。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询