← 返回部落格列表 Coinbase 軟體工程師面試:OA + 系統設計全流程
Coinbase

Coinbase 軟體工程師面試:OA + 系統設計全流程

2026-06-14

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 的重頭戲,常見題是「設計一個支援充提幣和下單的錢包服務」。答題主線:

面試官會順著「如果回呼重複怎麼辦」「如何防止超賣」往下追,把冪等和一致性講透是關鍵。

六、備考建議


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 真題與陪練

聯繫方式