Stripe SWE OA 面经|HackerRank 商户争议流水与状态机代码题

作者:

编辑于:

26 July, 2026

阅读时长:

1 minute read
Stripe OA 面经封面

Stripe 的 OA 更像把一段支付业务规则写成可维护代码,而不是只做一道孤立的数组题。一道 60 分钟的 HackerRank 题把 CHARGE、DISPUTE 和商户风险阈值放在同一条事件流里,读题、建模和边界处理都很吃时间。做完主逻辑后,最好留出十分钟回放乱序事件和重复争议。

第一题:商户争议流水状态机

题目描述

输入按时间到达的支付事件。每个商户有自己的风险阈值:有的按争议笔数判断,有的按争议金额占比判断。事件包含 CHARGEDISPUTE;争议需要回指到一笔已发生的扣款,并会改变该商户的风险状态。题目要求输出被标记的商户或最终状态。

解题思路

先把每笔扣款放进 charge_id -> {merchant, amount, disputed} 的哈希表,再维护每个商户的扣款总额、争议金额和争议笔数。处理 DISPUTE 时先定位原扣款;已经处理过的争议直接跳过,避免重复扣减或重复累加。状态不要在每个事件里散落更新,收敛成 recalculate(merchant):计数阈值用整数比较,比例阈值用交叉相乘,避免浮点精度把临界商户判错。时间复杂度 O(n),空间 O(n)。

这类事件解析题的难点不在语法,而在状态是否能被撤销、重放和重复消费。准备时可以先对照一篇Stripe OA 的商户欺诈事件题分享写出事件表,再手工跑一遍重复 DISPUTE、零金额和跨商户 id 的样例。

做题过程

前五分钟先列实体和字段:商户、扣款、争议、阈值。随后写事件分发和最小可运行版本,不要一开始就拆很多类。样例通过后再补三组测试:同一扣款重复争议、争议先到导致找不到原记录、比例恰好等于阈值。提交前把变量名从 ab 换成业务字段,Stripe 风格的题目里可读性本身就是答案的一部分。

备考建议

  • 练事件流、哈希索引、状态机和幂等处理;题目给出长规则时先画状态迁移。
  • 写代码时把输入校验、状态更新和输出收集分开,debug 时能快速定位。
  • 面对 HackerRank 隐藏用例,优先检查重复事件、阈值边界和整数溢出。

FAQ

Stripe OA 只刷 LeetCode 够吗?

不够。数组和哈希基础仍然要熟,但还要练把业务规则拆成状态、索引和明确的更新顺序。支付、账单、风控场景都适合拿来做限时实现。

一道大题怎么分配 60 分钟?

先用十分钟确认数据关系和状态,再用三十五分钟完成主路径,最后十五分钟补边界与重构。若某个优化点卡住,先保留正确的 O(n) 或 O(n log n) 版本。

参考来源

关于 CSOFFERPREP

进 VO 之前,可以找 CSOFFERPREP 做实时面试助攻和备考辅导。CSOFFERPREP 深耕北美 IT 行业多年,已帮助万余名学生进入全球 500 强企业。导师来自一线大厂资深工程师和面试官,对 Stripe 这类注重工程文化的公司的面试套路很熟悉。无论是 OA辅助、OA 辅导、VO 辅助、VO 模拟面试、VO 辅助还是系统设计辅助,都可以获得更有针对性的准备方案:CSOFFERPREP · 服务详情