← 返回部落格列表 Stripe VO 四輪全流程複盤:商戶支付系統模擬 + 多國運費矩陣,附 BQ 與跨職能輪
Stripe

Stripe VO 四輪全流程複盤:商戶支付系統模擬 + 多國運費矩陣,附 BQ 與跨職能輪

2026-06-09

Stripe VO 分好幾輪,整個過程緊張但收穫頗豐。這篇複盤整理出我們團隊帶學員走完的四輪流程、各輪感受與準備心得,給準備衝擊 Stripe 或類似頂級科技公司的同學一個參考。我對接了 oavoservice 團隊協助完成關鍵技術輪,下面逐輪還原真題。

一、四輪概覽

輪次 形式 重點
Round 1 Coding 共享線上編輯器 / 白板 邊想邊講,寫出可運行或邏輯清晰的程式碼
Round 2 System Design 開放性設計題 業務建模 + 與面試官互動討論
Round 3 BQ 情景題深挖 溝通、協作、衝突解決、領導力、文化契合
Round 4 Product/Cross-functional 開放討論 業務 / 產品理解 + 跨職能協作

Coding 輪題型覆蓋很廣:鏈表 / 樹 / 圖等基本資料結構的操作與應用、動態規劃與貪心、字串與陣列處理,甚至可能涉及並發與鎖的理解。

二、Round 1 Coding:命令流模擬商戶與支付系統

題目

你會收到一系列命令,用於模擬一個基本的商戶與支付系統。每條命令是一個空格分隔的字串,包含關鍵字和參數。你需要維護商戶與餘額的映射,以及支付記錄。

每條命令是以下兩種之一:

支付狀態和流程是隱式的:一旦支付成功處理,金額就加到商戶餘額中。

輸入:一個字串列表,每個字串代表一條命令。 輸出:執行完所有命令後,每個商戶最終的餘額狀態。

# 示例
commands = [
    "INIT m1 1000",
    "CREATE p1 m1 200",
    "CREATE p2 m1 300",
]
# 輸出: {"m1": 1500}

解法:命令分發 + 狀態機思維

這題表面是模擬,重點在把命令解析與狀態變更解耦,並為後續 followup(新增命令類型、顯式支付狀態)留好擴展口。我用一個 dispatch 表把每種命令映射到處理函式:

from typing import List, Dict

class PaymentSystem:
    def __init__(self):
        self.balances: Dict[str, int] = {}
        self.payments: Dict[str, dict] = {}   # 為後續 followup 保留支付記錄

    def init_merchant(self, merchant_id: str, balance: str):
        self.balances[merchant_id] = int(balance)

    def create_payment(self, payment_id: str, merchant_id: str, amount: str):
        amt = int(amount)
        self.payments[payment_id] = {"merchant": merchant_id, "amount": amt}
        # 隱式成功:直接入帳
        self.balances[merchant_id] = self.balances.get(merchant_id, 0) + amt

    def run(self, commands: List[str]) -> Dict[str, int]:
        dispatch = {
            "INIT":   self.init_merchant,
            "CREATE": self.create_payment,
        }
        for line in commands:
            op, *args = line.split()
            handler = dispatch.get(op)
            if handler is None:
                raise ValueError(f"unknown command: {op}")
            handler(*args)               # 參數順序與命令格式一致
        return self.balances

面試官的典型 followup:

dispatch + 狀態機的結構讓這些 followup 都變成「加一個 handler / 加一個狀態」,而不是重寫主迴圈——這正是 Stripe 想看到的擴展性。

三、Round 2 System Design:多國運費矩陣聚合訂單成本

題目

每個國家 / 產品組合有對應的運輸成本,費用以最小貨幣單位儲存。給定一張運費矩陣和一個訂單,算出訂單總運費。

shipping_cost_matrix = {
    "US": [
        {"product": "mouse",  "cost": 550},
        {"product": "laptop", "cost": 1000},
    ],
    "CA": [
        {"product": "mouse",  "cost": 750},
        {"product": "laptop", "cost": 1100},
    ],
}

order = {
    "country": "US",          # CA 表示加拿大訂單
    "items": [
        {"product": "mouse",  "quantity": 20},
        {"product": "laptop", "quantity": 5},
    ],
}

解法:先把矩陣轉成 O(1) 查找結構

原始矩陣是「國家 → 列表」,每次查 product 要線性掃。先預處理成 (country, product) -> cost 的巢狀字典,訂單聚合就是一次遍歷:

def build_index(matrix: dict) -> dict:
    """把 country -> [ {product, cost} ] 轉成 country -> {product: cost}"""
    return {
        country: {row["product"]: row["cost"] for row in rows}
        for country, rows in matrix.items()
    }

def order_shipping_cost(matrix: dict, order: dict) -> int:
    index = build_index(matrix)
    country = order["country"]
    if country not in index:
        raise ValueError(f"unsupported country: {country}")
    country_costs = index[country]

    total = 0
    for item in order["items"]:
        product = item["product"]
        if product not in country_costs:
            raise ValueError(f"no shipping cost for {product} in {country}")
        total += country_costs[product] * item["quantity"]
    return total

# US: 550*20 + 1000*5 = 11000 + 5000 = 16000

討論延伸(面試官最看重的部分):

四、Round 3 BQ:深挖經歷細節

基於過去經歷的情景題,面試官會深挖細節。重點考察溝通、協作、衝突解決、領導力,以及面對挑戰和失敗的態度,是否與 Stripe 的文化價值觀契合。Stripe 非常重視團隊合作和正直。建議用 STAR 框架,並準備「失敗 / 衝突 / 推動改變」三類故事,每個都能講到具體決策與可量化結果。

五、Round 4 Product/Cross-functional:跨職能討論

開放性問題,會結合 Stripe 的具體產品或業務場景。考察你理解業務和產品需求的能力,從用戶 / 產品 / 技術 / 商業多個角度思考問題,以及在跨職能團隊中有效溝通協作的能力。回答時先框定用戶與目標,再談技術取捨,最後落到商業指標,邏輯會很清晰。

六、總結

Stripe VO 四輪各有側重:Coding 偏真實系統模擬(命令流 + 狀態機思維)、System Design 重業務建模與最小貨幣單位等支付細節、BQ 深挖文化契合、Product 輪考多視角與跨職能溝通。把 Coding 題練到「dispatch + 狀態機隨時可擴展」,把設計題練到「先建 O(1) 索引再聊規模化」,整輪會穩很多。


FAQ

Q1:Stripe VO 一共幾輪、考什麼?

四輪:Coding(命令流模擬商戶支付系統)、System Design(多國運費矩陣聚合)、BQ(文化契合深挖)、Product/Cross-functional(多視角業務討論)。

Q2:商戶支付模擬題怎麼拿高分?

用 dispatch 表把命令解析與狀態變更解耦,支付用狀態機而非「隱式成功」,並主動加冪等判斷。這樣面試官的 followup(顯式狀態 / 退款 / 重複提交)都能輕鬆接住。

Q3:運費矩陣題的關鍵是什麼?

先把「國家 → 列表」預處理成 (country, product) -> cost 做 O(1) 查找;堅持用最小貨幣單位整數;並和面試官 clarify 缺失組合、階梯計價、規模化等業務邊界。

Q4:怎麼準備 Stripe VO?

Coding 練擴展性結構,Design 練「索引 + 規模化」推演,BQ 備好 STAR 故事,Product 輪練多視角框架。如需這幾道真題的限時陪練,或 VO代面 / VO輔助 的即時對接,可以發崗位 JD 先做題型預測再排練習計劃。


正在準備 Stripe 面試?

Stripe VO 考真實系統模擬 + 支付細節 + 文化契合 + 跨職能溝通。oavoservice 提供 Stripe 全流程陪練:商戶支付模擬、運費矩陣聚合、System Design 推演、BQ 與 Product 輪演練,也支持 VO代面 / VO輔助 的即時對接。教練含前大廠資深工程師,熟悉 Stripe「願意 merge 的程式碼品質 + 業務貼合」評分風格。

立即添加微信 Coding0201獲取 Stripe 真題與陪練

聯絡方式