每年 9-12 月,Optiver 在一亩三分地的 OA 帖子都会迎来一波高峰。和传统科技公司不同,Optiver 是阿姆斯特丹起家的全球做市商,其 OA 几乎全部围绕交易场景展开:Order Book 撮合、做市报价、Trading Sequences 收益最大化、心算 + 概率推理。本文按照一亩三分地 2026 最新面经的题型分布做一次系统整理,并补充 VO代面 / VO辅助 的实际准备路径。
Optiver OA 概览(2026 年版)
| 维度 | SWE 岗 | Trader 岗 |
|---|---|---|
| 平台 | HackerRank | Optiver 自建 + HackerRank |
| 时长 | 90 分钟 | 60-80 分钟 |
| 题型 | 2-3 道编程题 | 心算 + 概率 + 1 道编程 |
| 重点 | 模拟、贪心、堆 | 期望、Sharpe、做市直觉 |
| 难度 | LC Medium-Hard | 速算极快 + 概率扎实 |
一亩三分地的反馈普遍指出:90 分钟 3 题对大多数人来说时间紧,做完 2 题且全部 AC 已是稳进面试的水平。
题型一:Trading Sequences(最大加权收益子段)
题目描述
给定一段时间序列的报价 prices[] 与对应成交量 volumes[],要求选择连续子区间 [l, r] 使加权收益最大,且区间长度 ≥ 2。
思路
- 计算每个时间点的「单步收益」
profit[i] = (prices[i+1] - prices[i]) * volumes[i] - 套 Kadane 的最大子段和模板
- 注意:允许全负时返回 0(不交易)
Python 解法
def max_trading_window(prices, volumes):
n = len(prices)
if n < 2:
return 0
profits = [(prices[i + 1] - prices[i]) * volumes[i] for i in range(n - 1)]
best = cur = 0
for p in profits:
cur = max(p, cur + p)
best = max(best, cur)
return best
时间复杂度:O(n) 空间复杂度:O(n)
题型二:Order Book 撮合
题目描述
实现支持 ADD / CANCEL / MATCH 的撮合引擎:
ADD side price quantity加入限价单CANCEL order_id撤单MATCH在best_bid ≥ best_ask时撮合,按对手挂单价成交
思路
- 买单:最大堆(按价格降序)
- 卖单:最小堆(按价格升序)
- 取消采用懒删除:弹出堆顶时再过滤已撤单 id
Python 解法
import heapq
class OrderBook:
def __init__(self):
self.bids = [] # max-heap, store (-price, id, qty)
self.asks = [] # min-heap, store (price, id, qty)
self.cancelled = set()
self.next_id = 0
def add(self, side, price, qty):
self.next_id += 1
oid = self.next_id
if side == "BUY":
heapq.heappush(self.bids, (-price, oid, qty))
else:
heapq.heappush(self.asks, (price, oid, qty))
return oid
def cancel(self, oid):
self.cancelled.add(oid)
def _clean(self, heap):
while heap and heap[0][1] in self.cancelled:
heapq.heappop(heap)
def match(self):
trades = []
while True:
self._clean(self.bids)
self._clean(self.asks)
if not self.bids or not self.asks:
break
best_bid = -self.bids[0][0]
best_ask = self.asks[0][0]
if best_bid < best_ask:
break
bp, bid, bq = heapq.heappop(self.bids)
ap, aid, aq = heapq.heappop(self.asks)
qty = min(bq, aq)
trades.append((best_ask, qty))
if bq > qty:
heapq.heappush(self.bids, (bp, bid, bq - qty))
if aq > qty:
heapq.heappush(self.asks, (ap, aid, aq - qty))
return trades
时间复杂度:ADD/CANCEL O(log n),MATCH O(k log n)
题型三:Allocation(资金/风险约束分配)
题目描述
n 个交易员(资金上限、风险承受能力不同),m 个交易机会(需要资金、风险等级、预期收益),将机会分配给最合适的交易员,使总收益最大化。每个交易员至多接一个机会。
思路
- 机会按预期收益降序
- 每个机会找「资金/风险都达标 + 剩余资金最少」的交易员,把高资金留给后面的大单
- 经典贪心,与「Assign Cookies / Boats To Save People」同源
Python 解法
def allocate(traders, opps):
# traders: [(cap, risk_tol)]
# opps: [(need_cap, risk_lv, profit)]
opps.sort(key=lambda x: -x[2])
used = [False] * len(traders)
total = 0
for need, risk, profit in opps:
pick, slack = -1, float("inf")
for i, (cap, tol) in enumerate(traders):
if used[i] or cap < need or tol < risk:
continue
if cap - need < slack:
slack = cap - need
pick = i
if pick >= 0:
used[pick] = True
total += profit
return total
一亩三分地高频问题速查
| 类别 | 出现频率 | 备考核心 |
|---|---|---|
| Order Book 撮合 | ★★★★★ | 堆 + 懒删除 |
| 最大加权子段 | ★★★★ | Kadane 变体 |
| 资金/风险分配 | ★★★★ | 贪心 + 排序 |
| 简化做市报价 | ★★★ | bid/ask spread |
| 心算(仅 Trader) | ★★★★★ | 8 秒内算 4 位数 |
VO 代面 / VO 辅助 准备路径
注意:Optiver VO 在一亩三分地的描述里普遍多轮 + 高强度:技术面、Trading Game、心算、行为题、Hiring Manager。VO代面 / VO辅助 的核心价值是「让你不在临场紧张时把已经掌握的东西丢掉」。
1)VO 流程拆解
- 第 1 轮:算法 / 系统设计(45 min)
- 第 2 轮:Order Book / 撮合系统讨论
- 第 3 轮:行为面(团队协作、压力情境)
- 第 4 轮:Trading Game / 概率心算(仅 Trader)
- 第 5 轮:Hiring Manager / 团队匹配
2)VO辅助常见用法
- 第一遍走查:把一亩三分地最近 30 天的面经按题型分桶,列出 Order Book / Trading Sequences 的 5 种变体
- 影子面试:用 Zoom + 共享屏幕,由 mentor 模拟面试官出题,限时 45 min
- 错题回放:录像复盘,重点看 "听不懂题就开始写代码"、"边界条件没问" 这类高频翻车
3)oavoservice 提供的 VO代面 / VO辅助 一体化服务
oavoservice 同时提供 VO代面(面试当天实时辅助) 与 VO辅助(mock interview + 题型分桶 + 录像复盘) 两类服务,覆盖 Optiver SWE / Trader 完整流程:
- 赛前:VO辅助 mock 模拟,按真实 90 min 节奏出题 + 提示,结束后录像逐分钟复盘
- 赛中:VO代面 实时支援,让你在临场紧张时不丢掉已经掌握的东西
- 赛后:每轮过后给出 follow-up 修补建议,准备下一轮
具体方案与报价,加微信 Coding0201 沟通。
备考 7 天冲刺
| 天数 | 任务 |
|---|---|
| D1 | 通读一亩三分地最近 90 天 Optiver 面经,按题型分类 |
| D2 | 手写 Order Book(含懒删除)一次,跑 5 组用例 |
| D3 | Trading Sequences + Allocation 各 3 道变体 |
| D4 | 概率/期望 20 题(仅 Trader) |
| D5 | 1 次完整 90 分钟模拟,模拟 HackerRank 环境 |
| D6 | 系统设计:撮合引擎 + 低延迟队列 |
| D7 | 行为面:复盘 STAR,准备 2 个团队冲突案例 |
FAQ
Optiver OA 是不是和 LeetCode Hard 一个难度?
题面看像 Medium,但 90 分钟做 3 道 + 题面英文长 + Edge Case 多,整体压力相当于 LC Hard。一亩三分地里完成 2 题且全 AC 的同学,进面率最高。
Optiver 一亩三分地面经能直接背吗?
不能直接背。Optiver 题库每年至少 30% 翻新,但主题(撮合、贪心分配、收益子段)几乎不变。背思路 + 模板比背题面更有效。
SWE 和 Trader 的 OA 怎么选?
如果你能在 8 秒内算完两位数乘法、并且对概率题有 sense,可以试 Trader;否则首选 SWE。SWE 路径更适合 ACM 背景 + Python 熟练的同学。
Optiver OA 没过还能复投吗?
通常 12 个月冷却期。一亩三分地有少数同学换 referral + 强简历后 9 个月再投通过。
正在准备 Optiver 一亩三分地高频题?
oavoservice 长期跟踪 Optiver SWE / Trader 的 OA + VO 真题更新,提供题型分桶、变体讲解、限时模拟、行为面复盘等 VO辅助 服务。我们的 mentor 来自 Optiver / Citadel / Jane Street / Five Rings 等做市与量化机构,可针对你的弱点定制 1-2 周冲刺方案。
👉 立即添加微信:Coding0201,获取 Optiver 高频题与 VO辅助方案。
联系方式
Email: [email protected]
Telegram: @OAVOProxy