Coinbase 是北美頭部加密貨幣交易所,工程崗面試既看扎實的演算法和資料結構,也很看重高並發、強一致的交易系統設計。這篇按 oavoservice 學員的 Coinbase 面經整理,把 CodeSignal OA、技術電面到 Onsite 系統設計的完整流程、高頻編碼題和系統設計要點講清楚,給求職刷題、準備面試一份實戰參考。需要 OA輔助 / VO輔助 的同學也能直接照著這條線複盤。
一、Coinbase 面試流程
| 階段 | 形式 | 時長 | 重點 |
|---|---|---|---|
| 線上測評 OA | CodeSignal | 70–90 min | 3–4 道演算法題,整體評分 |
| 技術電面 | 編碼 | 45–60 min | LeetCode 中等,重溝通與邊界 |
| Onsite VO | 4–5 輪 | 半天 | 編碼 ×2 + 系統設計 + 行為題 + 經理輪 |
Coinbase 走 CodeSignal 通用框架,OA 難度中等-中上,題目常包裝成交易、錢包、帳本場景。Onsite 的系統設計輪分量很重,幾乎決定能否拿 offer。
二、OA 高頻題一:投資組合估值(雜湊聚合)
題目
給一組持倉記錄 (symbol, amount) 和一張即時價格表 prices[symbol],計算帳戶總市值;同一 symbol 可能出現多次,需要先合併。
思路
用雜湊表按 symbol 累加持倉,再乘以價格求和。一次遍歷搞定,注意價格表裡沒有的幣種要跳過或按 0 處理。
from collections import defaultdict
def portfolio_value(holdings, prices):
totals = defaultdict(float)
for symbol, amount in holdings:
totals[symbol] += amount # 合併同一幣種持倉
value = 0.0
for symbol, amount in totals.items():
value += amount * prices.get(symbol, 0.0)
return value
時間複雜度:O(n)。空間複雜度:O(k),k 為不同幣種數。考點是雜湊聚合和缺失鍵的健壯處理。
三、OA 高頻題二:簡化訂單撮合(雙堆)
題目
維護一個迷你訂單簿:買單按價格從高到低、賣單按價格從低到高排隊。每來一筆訂單,若能與對手方成交(買價 ≥ 賣價)就撮合,返回成交筆數。
思路
經典雙堆:買單用最大堆,賣單用最小堆。新訂單進來時不斷檢查堆頂能否成交,能成交就彈出並計數,否則入堆。
import heapq
def match_orders(orders):
buys, sells = [], [] # buys: 最大堆(取負); sells: 最小堆
trades = 0
for side, price in orders:
if side == "buy":
heapq.heappush(buys, -price)
else:
heapq.heappush(sells, price)
# 堆頂買價 >= 堆頂賣價 即可成交
while buys and sells and -buys[0] >= sells[0]:
heapq.heappop(buys)
heapq.heappop(sells)
trades += 1
return trades
時間複雜度:O(n log n)。空間複雜度:O(n)。難點在於想到用兩個方向相反的堆,以及循環撮合直到堆頂不再匹配。
四、OA 高頻題三:API 限流(滑動視窗)
題目
給一串帶時間戳的請求和每使用者每視窗的上限,判斷每筆請求是被接受還是被限流。Coinbase 公有 API 很看重限流,這題幾乎是常駐。
思路
每個使用者維護一個時間戳佇列,新請求到來時先把視窗外的舊時間戳彈掉,再看佇列長度是否超限。
from collections import defaultdict, deque
def rate_limit(requests, window, limit):
seen = defaultdict(deque)
result = []
for user, ts in requests:
q = seen[user]
while q and q[0] <= ts - window: # 移除視窗外請求
q.popleft()
if len(q) < limit:
q.append(ts)
result.append(True) # 接受
else:
result.append(False) # 限流
return result
時間複雜度:O(n),每個時間戳最多進出佇列一次。空間複雜度:O(使用者數 × limit)。
五、Onsite 系統設計:設計一個加密錢包 / 交易服務
系統設計輪是 Coinbase 的重頭戲,常見題是「設計一個支援充提幣和下單的錢包服務」。答題主線:
- 一致性優先:帳戶餘額變動必須強一致,用資料庫交易 + 樂觀鎖 / 行鎖,避免雙花。
- 冪等性:充值回呼、下單介面都要支援冪等鍵,防止網路重試導致重複記帳。
- 帳本設計:用 append-only 的雙分錄帳本(debit/credit)記錄每筆流水,餘額由流水推導,便於審計對帳。
- 非同步與對帳:鏈上確認走非同步佇列;定時對帳任務比對內部帳本與鏈上狀態。
- 擴展:讀多寫少的餘額查詢走快取,熱點帳戶做分片。
面試官會順著「如果回呼重複怎麼辦」「如何防止超賣」往下追,把冪等和一致性講透是關鍵。
六、備考建議
- 演算法:雜湊、堆、滑動視窗、圖論是高頻,按 CodeSignal 中上節奏限時練。
- 系統設計:重點準備冪等、一致性、帳本、對帳這套交易系統母題。
- 溝通:邊寫邊講,主動報複雜度和邊界條件。
FAQ
Q1:Coinbase OA 用什麼平台、幾道題?
CodeSignal,70–90 分鐘 3–4 道演算法題,按整體分評估。難度中等-中上,常包裝成交易 / 錢包 / 帳本場景,考雜湊、堆、滑動視窗、圖論。
Q2:Coinbase 面試系統設計重要嗎?
非常重要。Onsite 一般有完整系統設計輪,常考錢包 / 交易 / 帳本系統,重點考一致性、冪等、對帳,幾乎決定 offer。
Q3:要懂區塊鏈才能面 Coinbase 嗎?
不需要深入懂底層鏈。了解充提幣流程、鏈上確認是非同步的、冪等回呼這些工程概念即可,核心還是演算法和系統設計功底。
Q4:怎麼高效準備 Coinbase OA?
按雜湊 / 堆 / 滑窗 / 圖論分塊限時刷,系統設計專攻交易母題。需要限時 mock、現場講思路陪練或 OA輔助 / VO輔助,可聯繫 oavoservice 定製 Coinbase 專項。
正在準備 Coinbase 面試?
Coinbase 走 CodeSignal OA + 重系統設計的路線,看重一致性和工程嚴謹度。oavoservice 提供 Coinbase 全流程陪練:CodeSignal 高頻題限時模擬,交易 / 錢包 / 帳本系統設計專項,冪等與一致性打磨,按崗位做題型預測,含 OA輔助 / VO輔助 與現場講思路陪練。教練含交易所與大廠背景資深工程師,幫你把程式碼和表達同時練穩。
立即添加微信 Coding0201,獲取 Coinbase 真題與陪練。
聯繫方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy