
Stripe 的 OA 更像把一段支付业务规则写成可维护代码,而不是只做一道孤立的数组题。一道 60 分钟的 HackerRank 题把 CHARGE、DISPUTE 和商户风险阈值放在同一条事件流里,读题、建模和边界处理都很吃时间。做完主逻辑后,最好留出十分钟回放乱序事件和重复争议。
第一题:商户争议流水状态机
题目描述
输入按时间到达的支付事件。每个商户有自己的风险阈值:有的按争议笔数判断,有的按争议金额占比判断。事件包含 CHARGE 与 DISPUTE;争议需要回指到一笔已发生的扣款,并会改变该商户的风险状态。题目要求输出被标记的商户或最终状态。
解题思路
先把每笔扣款放进 charge_id -> {merchant, amount, disputed} 的哈希表,再维护每个商户的扣款总额、争议金额和争议笔数。处理 DISPUTE 时先定位原扣款;已经处理过的争议直接跳过,避免重复扣减或重复累加。状态不要在每个事件里散落更新,收敛成 recalculate(merchant):计数阈值用整数比较,比例阈值用交叉相乘,避免浮点精度把临界商户判错。时间复杂度 O(n),空间 O(n)。
这类事件解析题的难点不在语法,而在状态是否能被撤销、重放和重复消费。准备时可以先对照一篇Stripe OA 的商户欺诈事件题分享写出事件表,再手工跑一遍重复 DISPUTE、零金额和跨商户 id 的样例。
做题过程
前五分钟先列实体和字段:商户、扣款、争议、阈值。随后写事件分发和最小可运行版本,不要一开始就拆很多类。样例通过后再补三组测试:同一扣款重复争议、争议先到导致找不到原记录、比例恰好等于阈值。提交前把变量名从 a、b 换成业务字段,Stripe 风格的题目里可读性本身就是答案的一部分。
备考建议
- 练事件流、哈希索引、状态机和幂等处理;题目给出长规则时先画状态迁移。
- 写代码时把输入校验、状态更新和输出收集分开,debug 时能快速定位。
- 面对 HackerRank 隐藏用例,优先检查重复事件、阈值边界和整数溢出。
FAQ
Stripe OA 只刷 LeetCode 够吗?
不够。数组和哈希基础仍然要熟,但还要练把业务规则拆成状态、索引和明确的更新顺序。支付、账单、风控场景都适合拿来做限时实现。
一道大题怎么分配 60 分钟?
先用十分钟确认数据关系和状态,再用三十五分钟完成主路径,最后十五分钟补边界与重构。若某个优化点卡住,先保留正确的 O(n) 或 O(n log n) 版本。
参考来源
- Stripe University Recruiting OA on LeetCode
- Stripe New Grad OA discussion on Reddit
- Stripe Software Engineer interview reports on Glassdoor
关于 CSOFFERPREP
进 VO 之前,可以找 CSOFFERPREP 做实时面试助攻和备考辅导。CSOFFERPREP 深耕北美 IT 行业多年,已帮助万余名学生进入全球 500 强企业。导师来自一线大厂资深工程师和面试官,对 Stripe 这类注重工程文化的公司的面试套路很熟悉。无论是 OA辅助、OA 辅导、VO 辅助、VO 模拟面试、VO 辅助还是系统设计辅助,都可以获得更有针对性的准备方案:CSOFFERPREP · 服务详情



