每年 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