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)
招聘者會問三件事:
- 履歷高頻項:分散式系統 / 高併發 / 加密支付 / 風險控制任一項是加分
- 職缺匹配:你想做 exchange backend、wallet、Base L2 還是 developer platform
- 遠端偏好:Coinbase 全球 remote-first,但部分 senior 位需要北美時區
回答範本:
- 履歷講故事:先講影響力數字(QPS / 資金體量 / 交易筆數),再講技術決策
- 期望薪資:先丟 base + RSU 區間,Coinbase RSU 通常占 total comp 60-70%
- 時區:明確 PT / ET / 自由四選一
階段 2 — CodeSignal GCA(70 min)
結構:Coinbase 用 CodeSignal General Coding Assessment,4 道題難度遞增,最後一道是 Hard。通過線一般在 700+/850。
高頻題:Order Book 撮合引擎雛形(Medium-Hard)
題面:實作一個簡化撮合引擎:
submit(side, price, qty, user_id):side 是 buy / sell- 每次提交後,按 price-time priority 撮合所有可成交訂單,輸出成交記錄
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)。
踩坑:
-price是把 max-heap 借助 min-heap 實作的常用技巧- 浮點價格小心精度,可改
Decimal或乘以 10^8 整數化(鏈上常用 satoshi 單位)
階段 3 — Tech Screen(60 min)
CoderPad 一道 Medium-Hard。常見考點:
- 設計 Rate Limiter(slide window vs token bucket)
- LRU + TTL(錢包 session)
- Merkle Tree 構造與 verify
例題: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:
- 「如果 leaves 不是 2 的冪?」→ 複製最後一個 leaf 湊齊
- 「如何防止 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)。規則:
- 單使用者 1 小時內最多 5 筆
- 大額(>10萬 USDC)放優先佇列,小額走 FIFO
- 輸出按系統實際處理順序的請求列表
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)
題面:實作一個簡化的位址校驗:
- BTC:以
1/3/bc1開頭,長度 26-42 - ETH:以
0x開頭,長度 42(含前綴) - 輸入一組位址 + 轉帳金額,過濾合法位址 + 聚合每個網路的總額
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:
- 「加上 EIP-55 校驗?」→ 要求大小寫按 keccak256 hash 決定
- 「想支援 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
關鍵設計點:
- 撮合記憶體優先:order book 全記憶體,寫 WAL 到 NVMe SSD,崩潰後重放
- 風控旁路:風控同步檢查倉位,超限直接 reject
- L2 提幣:先鏈下扣款 + 入 batch queue,每 N 筆或 T 分鐘批量提交鏈上
Behavioral 輪:Coinbase Tenets
Coinbase 有 9 條 cultural tenets,最常考的三條:
- Mission first — "你為什麼相信 crypto 能改變金融?"
- Top talent — "你淘汰過低績效成員嗎?怎麼做的"
- Repeatable innovation — "舉一個你做了 0→1 後能 1→100 複製的專案"
每條配 1 個 STAR 故事,Mission first 是 culture screen 的核心——如果你只把 Coinbase 當 Web2 公司投,會被識破。
Crypto-native 輪(30-45 min)
不是寫程式碼,是聊「概念 + 安全邊界」。常考題:
- "解釋 ECDSA 簽名為什麼不能複用 nonce"
- "如果 ETH 主網發生 reorg,Coinbase 應該如何回滾使用者餘額?"
- "為什麼 Coinbase 用 multi-sig + HSM 而不是單 key"
應對:把每條都包裝成「攻擊向量 + 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 代面 節奏:
- 職缺線判定:JD + recruiter 摘要 5 分鐘內判定 Exchange / Wallet / Base / Platform
- GCA 模擬:4 道題 70 min 全場跟練,重點 Q4 撮合 / 排程類
- CoderPad 實戰:Merkle / Rate Limiter / 撮合三類輪換打
- System Design mock:撮合 / 提幣 / Base L2 三套各 60 min
- 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,獲取真題。
聯繫方式
- 微信:Coding0201
- Email: [email protected]
- Telegram: @OAVOProxy