← 返回博客列表 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 真题与陪练

联系方式