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