← 返回部落格列表 Coinbase 軟體工程師面試綜合指南:CodeSignal OA + 撮合引擎設計 + Crypto-native VO
Coinbase

Coinbase 軟體工程師面試綜合指南:CodeSignal OA + 撮合引擎設計 + Crypto-native VO

2026-06-01

Coinbase 是合規上市的加密交易所,主營撮合引擎、託管錢包、Base L2 公鏈以及面向開發者的 API 平台。它的面試比絕大多數 Web2 公司多一個維度——Crypto-native 思維:你需要一邊寫演算法,一邊解釋「為什麼這條邏輯在分散式資產環境裡是安全的」。本文把 Coinbase SWE 面試拆成 4 個階段,給出每一關的真題 + 應對範本。

四階段總覽

W0  Recruiter Screen (30 min):背景 / 遠端 (Coinbase 是 remote-first) / time-to-start
W1  CodeSignal GCA (70 min):4 道題逐級遞增(與 Meta GCA 類似)
W2  Tech Screen (60 min):CoderPad 一道 Medium-Hard,重點 follow-up
W3  Onsite VO (5 輪):
        ├─ Coding × 2(45 min each)
        ├─ System Design × 1(60 min,撮合 / L2 / 錢包)
        ├─ Behavioral × 1(Coinbase Tenets + STAR)
        └─ Crypto-native × 1(30-45 min,區塊鏈概念 + 安全邊界)
W4  Hiring committee + offer

整個流程約 4-5 週。Coinbase 招聘節奏比 FAANG 略快,談薪以現金 + RSU + sign-on 三件套為主,沿用 levels.fyi 上 IC2-IC5 的全球統一帶

階段 1 — Recruiter Screen(30 min)

招聘者會問三件事:

  1. 履歷高頻項:分散式系統 / 高併發 / 加密支付 / 風險控制任一項是加分
  2. 職缺匹配:你想做 exchange backend、wallet、Base L2 還是 developer platform
  3. 遠端偏好:Coinbase 全球 remote-first,但部分 senior 位需要北美時區

回答範本:

階段 2 — CodeSignal GCA(70 min)

結構:Coinbase 用 CodeSignal General Coding Assessment,4 道題難度遞增,最後一道是 Hard。通過線一般在 700+/850

高頻題:Order Book 撮合引擎雛形(Medium-Hard)

題面:實作一個簡化撮合引擎:

import heapq
from collections import deque
from itertools import count

class OrderBook:
    def __init__(self):
        self.buy: list[tuple[float, int, int, str, list[int]]] = []   # (-price, ts, oid, user, [qty])
        self.sell: list[tuple[float, int, int, str, list[int]]] = []  # (price, ts, oid, user, [qty])
        self._ts = count()
        self._oid = count()
        self.trades: list[dict] = []

    def submit(self, side: str, price: float, qty: int, user: str):
        ts = next(self._ts)
        oid = next(self._oid)
        if side == "buy":
            heapq.heappush(self.buy, (-price, ts, oid, user, [qty]))
        else:
            heapq.heappush(self.sell, (price, ts, oid, user, [qty]))
        self._match()

    def _match(self):
        while self.buy and self.sell:
            bp, _, _, bu, bq = self.buy[0]
            sp, _, _, su, sq = self.sell[0]
            if -bp < sp:
                return
            fill = min(bq[0], sq[0])
            self.trades.append({"price": sp, "qty": fill, "buyer": bu, "seller": su})
            bq[0] -= fill
            sq[0] -= fill
            if bq[0] == 0:
                heapq.heappop(self.buy)
            if sq[0] == 0:
                heapq.heappop(self.sell)

複雜度:每次撮合均攤 O(log n)。

踩坑

階段 3 — Tech Screen(60 min)

CoderPad 一道 Medium-Hard。常見考點:

例題:Merkle Tree Proof Verify

import hashlib

def hash_pair(a: str, b: str) -> str:
    return hashlib.sha256((a + b).encode()).hexdigest()

def verify_merkle_proof(leaf: str, proof: list[tuple[str, str]], root: str) -> bool:
    cur = leaf
    for sibling, side in proof:
        cur = hash_pair(cur, sibling) if side == "right" else hash_pair(sibling, cur)
    return cur == root

Follow-up

  1. 「如果 leaves 不是 2 的冪?」→ 複製最後一個 leaf 湊齊
  2. 「如何防止 second pre-image 攻擊?」→ leaf hash 前加 0x00,internal hash 前加 0x01(Bitcoin / Coinbase 常用 prefix)

階段 4 — Onsite VO(5 輪)

Coding 輪 1:Withdrawal Queue 限速 + 優先級(Medium-Hard)

題面:使用者提交提現請求,每個請求有 (user_id, amount, ts)。規則:

from collections import defaultdict, deque
import heapq

def schedule_withdrawals(reqs: list[dict], threshold: int = 100_000):
    user_window: dict[str, deque[int]] = defaultdict(deque)
    big_pq: list[tuple[int, int, dict]] = []   # (-amount, ts, req)
    small_q: deque[dict] = deque()
    out: list[dict] = []
    for i, r in enumerate(reqs):
        uid, ts = r["user_id"], r["ts"]
        win = user_window[uid]
        while win and win[0] < ts - 3600:
            win.popleft()
        if len(win) >= 5:
            continue
        win.append(ts)
        if r["amount"] > threshold:
            heapq.heappush(big_pq, (-r["amount"], i, r))
        else:
            small_q.append(r)
        if big_pq:
            out.append(heapq.heappop(big_pq)[2])
        elif small_q:
            out.append(small_q.popleft())
    while big_pq:
        out.append(heapq.heappop(big_pq)[2])
    while small_q:
        out.append(small_q.popleft())
    return out

複雜度:O(n log n)。

Coding 輪 2:Crypto Address Validate(Medium)

題面:實作一個簡化的位址校驗:

def classify_addr(addr: str) -> str | None:
    if addr.startswith("0x") and len(addr) == 42:
        return "ETH"
    if (addr[0] in "13" and 26 <= len(addr) <= 35) or addr.startswith("bc1"):
        return "BTC"
    return None

def aggregate(transfers: list[dict]) -> dict[str, float]:
    out: dict[str, float] = {}
    for t in transfers:
        net = classify_addr(t["addr"])
        if not net:
            continue
        out[net] = out.get(net, 0) + t["amount"]
    return out

Follow-up

  1. 「加上 EIP-55 校驗?」→ 要求大小寫按 keccak256 hash 決定
  2. 「想支援 Solana / Cosmos?」→ 改成 dispatch table

System Design 輪(60 min):設計撮合引擎 + L2 提幣流

60 min 框架

05 min  Clarify: QPS / 單符號 vs 多符號 / 撮合延遲 SLA / 鏈上確認數
05 min  API: order placement / cancel / market data feed
10 min  Matching engine: in-memory order book + WAL persist
10 min  Risk: position limit / circuit breaker / KYC gate
10 min  Settlement: 鏈下記帳 + 鏈上 batched withdrawal
10 min  Replication: leader-follower + consensus (Raft) for matching state
05 min  Failure: leader crash / DB lag / reorg on L1
05 min  Follow-up: Base L2 rollup state commitment / fraud proof

關鍵設計點

Behavioral 輪:Coinbase Tenets

Coinbase 有 9 條 cultural tenets,最常考的三條:

  1. Mission first — "你為什麼相信 crypto 能改變金融?"
  2. Top talent — "你淘汰過低績效成員嗎?怎麼做的"
  3. Repeatable innovation — "舉一個你做了 0→1 後能 1→100 複製的專案"

每條配 1 個 STAR 故事,Mission first 是 culture screen 的核心——如果你只把 Coinbase 當 Web2 公司投,會被識破。

Crypto-native 輪(30-45 min)

不是寫程式碼,是聊「概念 + 安全邊界」。常考題:

應對:把每條都包裝成「攻擊向量 + Coinbase 的對策」結構,不要只背概念。

三條職缺線差異

職缺線 Coding 題型 System Design
Exchange Backend 撮合 + 風控 Order Book / Settlement
Wallet 加密 + 狀態機 Key Management / Recovery
Base / L2 Merkle / Rollup L1 橋 / Fraud Proof
Developer Platform API 設計 Multi-tenant Gateway

OA 輔助 / VO 代面 怎麼對接 Coinbase

Coinbase 比通用 SWE 流程多一層「Crypto-native 概念」,OA 輔助 / VO 代面 節奏:

  1. 職缺線判定:JD + recruiter 摘要 5 分鐘內判定 Exchange / Wallet / Base / Platform
  2. GCA 模擬:4 道題 70 min 全場跟練,重點 Q4 撮合 / 排程類
  3. CoderPad 實戰:Merkle / Rate Limiter / 撮合三類輪換打
  4. System Design mock:撮合 / 提幣 / Base L2 三套各 60 min
  5. Crypto-native 範本:9 條 Coinbase Tenets + 5 條加密概念問答(reorg / nonce / multi-sig)現場 cue

FAQ

Q1:Coinbase 的 GCA 通過分線是多少? A:沒有官方公開線,社群回饋 ≥700/850 是面 Tech Screen 的安全分。

Q2:不熟悉區塊鏈能過 Crypto-native 輪嗎? A:能,但需要面試前 1-2 週突擊。重點掌握:UTXO vs Account Model、Merkle Tree、ECDSA 簽名、Rollup 概念。背完這 4 塊就能聊 80%。

Q3:Coinbase 是 remote-first 嗎?base 還會按地區調整? A:Coinbase 全球 remote-first,但 base 按市區分級(SF/NYC = T1,T2/T3 城市遞減約 5-15%)。

Q4:撮合引擎題一定考嗎? A:Exchange Backend 職缺幾乎必考,Wallet / Base 職缺大約 30% 機率。即使 Wallet 職缺也建議練一遍。

Q5:Coinbase IC4 包大概多少? A:IC4 base $220-260K + RSU $200-300K + sign-on,total 第一年常見 $450-550K。

寫在最後

Coinbase 面試在通用 SWE 面試上疊了一層「資金 + 加密 + 合規」的厚度。每道題不只是「能不能跑」,還要回答「在使用者錢安全的前提下能不能跑」。如果你正在準備 Coinbase 的 GCA 或 onsite,可以微信 Coding0201 聯繫,發職缺 JD + 當前流程節點截圖,先做職缺線判定,再排 OA 輔助 / VO 代面 節奏。


需要面試真題? 立刻聯繫微信 Coding0201獲取真題


聯繫方式