Stripe 的 OA 在 2026 年继续保持「两道工程化大题 + 90 分钟限时」的稳定模型。和 LeetCode 风格题截然不同,Stripe 题面通常长达 2-3 屏 + 多个 API + 多步迭代,考察候选人能否在压力下用干净的工程代码写出可扩展的解决方案。本文按 New Grad 2026 最新面经的题型分布,逐一拆解 Stripe OA 的三大主线题型,并补充 VO代面 / VO辅助 的准备路径。
Stripe OA 2026 概览
| 维度 | 详情 |
|---|---|
| 平台 | 自建 Web IDE |
| 时长 | 90-120 分钟 |
| 题量 | 2 道大题,每题分多 part |
| 难度 | LC Medium + 工程化扩展 |
| 评分 | 单元测试 + 代码可读性 |
| 重点 | 状态机、字符串解析、API 模拟 |
题型一:状态机 / 事件处理
Stripe 的状态机题几乎一定会出现,常见外壳是 Subscription 状态流转、Refund 流程、Payment Intent。
代表题:Subscription 状态机
实现一个订阅状态机,状态集 {active, trialing, past_due, canceled},按事件流转:
| 当前状态 | 事件 | 目标状态 |
|---|---|---|
| trialing | trial_ended (paid) | active |
| trialing | trial_ended (unpaid) | past_due |
| active | invoice_failed | past_due |
| past_due | invoice_paid | active |
| 任意 | cancel | canceled |
class SubscriptionFSM:
def __init__(self):
self.state = "trialing"
self.transitions = {
("trialing", "trial_ended_paid"): "active",
("trialing", "trial_ended_unpaid"): "past_due",
("active", "invoice_failed"): "past_due",
("past_due", "invoice_paid"): "active",
}
def handle(self, event):
if event == "cancel":
self.state = "canceled"
return self.state
key = (self.state, event)
if key in self.transitions:
self.state = self.transitions[key]
return self.state
raise ValueError(f"Invalid event {event} in state {self.state}")
Part 2 扩展:要求处理事件回放(按时间戳重放历史事件,输出最终状态);Part 3 扩展:要求实现回退(一步回到上一个状态)。
Stripe 状态机题的核心是「显式状态表 + 可扩展」,永远不要硬编码 if-else 嵌套。
题型二:欺诈检测 / 滑动窗口
代表题:异常交易识别
txn_logs[] 是按时间排序的事件,每条 (ts, user_id, amount, country)。要求识别任意 5 分钟窗口内,同一用户:
- 累计交易额 > 10,000,或
- 在 3 个以上不同国家有交易
from collections import defaultdict, deque
def find_fraud(txns):
suspects = set()
windows = defaultdict(deque) # user_id -> deque of (ts, amount, country)
sums = defaultdict(int)
countries = defaultdict(lambda: defaultdict(int))
for ts, uid, amt, ctry in txns:
windows[uid].append((ts, amt, ctry))
sums[uid] += amt
countries[uid][ctry] += 1
while windows[uid] and windows[uid][0][0] < ts - 300:
old_ts, old_amt, old_ctry = windows[uid].popleft()
sums[uid] -= old_amt
countries[uid][old_ctry] -= 1
if countries[uid][old_ctry] == 0:
del countries[uid][old_ctry]
if sums[uid] > 10000 or len(countries[uid]) >= 3:
suspects.add(uid)
return suspects
时间复杂度:O(n)(每条日志最多入队 / 出队一次)
题型三:API 解析与对账
代表题:跨币种对账
给定两组数据:
charges[]=[(charge_id, amount_cents, currency)]refunds[]=[(charge_id, amount_cents, currency)]
要求计算每个货币的净额(charges − refunds)。Part 2 要求把所有币种折算为 USD(给一个 fx_rates: {currency: rate_to_usd})。
from collections import defaultdict
def reconcile(charges, refunds, fx_rates):
by_ccy = defaultdict(int)
for _, amt, ccy in charges:
by_ccy[ccy] += amt
for _, amt, ccy in refunds:
by_ccy[ccy] -= amt
usd_total = 0
breakdown = {}
for ccy, amt in by_ccy.items():
breakdown[ccy] = amt
usd_total += amt * fx_rates.get(ccy, 0)
return breakdown, usd_total
Stripe 对账题的关键不是算法,而是正确处理边界:refund 比 charge 多怎么办?某些币种 fx_rates 缺失怎么办?
一亩三分地高频题速查
| 类别 | 频率 | 关键技巧 |
|---|---|---|
| 状态机 | ★★★★★ | 显式状态表 |
| 滑动窗口 / 欺诈 | ★★★★ | 双端队列 + 字典 |
| API 解析 / 对账 | ★★★★ | defaultdict + 精度 |
| 限流(Rate Limiter) | ★★★ | Token bucket / 滑窗 |
| 字符串模板替换 | ★★★ | 栈 |
VO 流程
Stripe 的 VO 在 2026 年继续保持 5 轮:
- HR 电话:动机 + 项目(25 分钟)
- 算法面:1 道 LC Medium-Hard + follow-up(60 分钟)
- 集成面(Integration):长篇真实场景代码,类似 OA 但更深(90 分钟)
- Debug / Bug Bash:给一段有 bug 的代码,找 + 修(60 分钟)
- Hiring Manager / 行为面:Stripe Operating Principles(45 分钟)
VO代面 / VO辅助 准备路径
实战做法
- OA 题库分桶:把一亩三分地 + Glassdoor 最近 6 个月 Stripe 帖按主题分类,重点状态机 + 欺诈 + 对账
- Integration round 演练:找 mentor 模拟 90 分钟长题,限时写代码 + 解释设计
- Debug round:在 Github 上找带 bug 的开源 toy project,限时修
- 行为面剧本:围绕 Stripe Operating Principles(Move with urgency, Bring evidence, Trust and amplify)准备 3 个故事
oavoservice 的 VO代面 + VO辅助 一体化服务
针对 Stripe 5 轮 VO(HR / 算法 / Integration / Debug / HM),oavoservice 提供:
- VO辅助:状态机 + 欺诈检测 + 对账 + Integration 长题 mock,限时 90 min 模拟
- VO代面:面试当天实时答题辅助,特别针对 Integration round 长篇代码 + Debug round 临场支援
- 行为面剧本:围绕 Stripe Operating Principles(Move with urgency / Bring evidence / Trust and amplify)打磨故事
- 录像复盘:所有 mock 录像,重点看 Part 1 / Part 2 时间分配
具体方案与报价,加微信 Coding0201 沟通。
7 天冲刺方案
| 天数 | 任务 |
|---|---|
| D1 | 一亩三分地最近 90 天 Stripe OA 帖分桶 |
| D2 | 状态机:写 3 个不同场景(订阅、退款、Payment Intent) |
| D3 | 欺诈检测 / 滑动窗口:LC 239 + 双端队列经典题 |
| D4 | API 解析 / 对账:自定义边界用例 5 组 |
| D5 | 1 次完整 90 分钟 mock,模拟 Stripe Web IDE 环境 |
| D6 | Debug round:找 1 个开源 bug 修复 |
| D7 | 行为面 STAR:Operating Principles 各打磨 1 个故事 |
FAQ
Stripe OA 是不是和 LeetCode 完全不一样?
是。Stripe OA 题面像产品需求文档,2-3 屏 + 多 part 渐进式扩展。准备策略不是刷 LC,而是练工程化代码 + 状态机抽象。
Stripe OA 难度怎么样?
整体在 LC Medium,但时间紧 + 题面长让难度感升级到 Hard。能在 90 分钟做完 Part 1 + Part 2 已经是 Pass 水平。
Stripe OA 没过冷却期多长?
通常 12 个月。换岗位(如从 Payments 改投 Connect / Issuing)一般不算同一池。
Stripe OA 用什么语言?
可以选 Python / JavaScript / Java / Go / Ruby 等。New Grad 一亩三分地里 Python 占比最高。
正在准备 Stripe OA / VO?
oavoservice 提供 Stripe / PayPal / Square / Adyen 等支付 / FinTech 公司的 OA 题型分桶、Integration round 长题模拟、Debug round 演练、行为面剧本等 VO辅助 服务。我们的 mentor 来自一线支付 / Infra 团队,可针对 Stripe New Grad 制定 1-2 周冲刺方案。
👉 立即添加微信:Coding0201,获取 Stripe 高频题与 VO辅助方案。
联系方式
Email: [email protected]
Telegram: @OAVOProxy