Optiver 作為頂級做市商,OA 的風格和普通網路公司截然不同:它既考演算法實作,也考你對機率、市場機制的直覺。本文聚焦最高頻的三類題,重點講「如何在限時內快速找到最優解」。
Optiver OA 概覽
| 維度 | 詳情 |
|---|---|
| 平台 | HackerRank / CodeSignal / 自有系統 |
| 時長 | 60–75 分鐘 |
| 題量 | 2–4 題(編碼 + 心算/機率) |
| 難度 | LeetCode Medium 偏上,重思維 |
| 考察重點 | 模擬、機率期望、貪心/最優執行 |
核心題型一:做市撮合模擬
給定一串買賣訂單,模擬訂單簿撮合,輸出成交價與剩餘掛單。破題關鍵是用兩個堆維護買賣盤。
import heapq
def match_orders(orders):
buy = [] # 最大堆(存負價):買方出價越高越優先
sell = [] # 最小堆:賣方報價越低越優先
trades = []
for side, price, qty in orders:
if side == 'BUY':
while qty > 0 and sell and sell[0][0] <= price:
sp, sq = heapq.heappop(sell)
traded = min(qty, sq)
trades.append((sp, traded))
qty -= traded
if sq > traded:
heapq.heappush(sell, (sp, sq - traded))
if qty > 0:
heapq.heappush(buy, (-price, qty))
else:
while qty > 0 and buy and -buy[0][0] >= price:
bp, bq = heapq.heappop(buy)
traded = min(qty, bq)
trades.append((-bp, traded))
qty -= traded
if bq > traded:
heapq.heappush(buy, (bp, bq - traded))
if qty > 0:
heapq.heappush(sell, (price, qty))
return trades
時間複雜度:O(n log n)。破題提示:看到「撮合 / 訂單簿」立刻想到雙堆。
核心題型二:機率期望與心算
Optiver 偏愛期望值題,比如「擲骰子直到出現 6,期望次數?」這類。編碼版常要求模擬或閉式計算。
def expected_rolls_until(target_faces, sides=6):
# 幾何分布期望 = 1 / p,p = target_faces / sides
p = target_faces / sides
return 1 / p
破題提示:先判斷是否服從幾何分布或線性期望(期望可加性),多數題不需要真模擬。
核心題型三:最優執行 / 貪心
「在 T 個時間步內賣出 N 股,每步價格不同,最大化收益」。本質是帶約束的貪心或 DP。
def max_revenue(prices, shares, per_step_limit):
# 優先在高價時間步賣出,受每步上限約束
revenue = 0
remaining = shares
for price in sorted(prices, reverse=True):
sell = min(remaining, per_step_limit)
revenue += sell * price
remaining -= sell
if remaining == 0:
break
return revenue
時間複雜度:O(n log n)。
時間分配策略
Optiver OA 時間緊,建議:先掃一遍所有題,優先做心算/機率題(耗時短、確定性高),再攻編碼模擬題,把最耗時的最優執行題留最後。
FAQ
Optiver OA 難度如何? 編碼題在 LeetCode Medium 偏上,但真正的難點是機率與市場直覺題,需要的是數學思維而非純刷題。
Optiver OA 用什麼平台、時長多久? 多為 HackerRank/CodeSignal 或自有系統,60–75 分鐘,2–4 題,含編碼與心算/機率。
SWE 和 Trader 的 OA 一樣嗎? 不完全一樣。SWE 偏編碼模擬,Trader 職心算與機率比重更大、限時更短。
心算題完全不會怎麼辦? 我們提供 Optiver OA輔助 與 OA代面:針對心算、期望值與做市模擬做專項訓練,幫你建立快速破題的條件反射。
正在準備 Optiver 的 OA?
Optiver OA 的關鍵是「快」:在極短時間內識別題型、套對模型。我們的導師可提供做市模擬、機率期望與最優執行的專項拆解。需要系統規劃,歡迎交流,立刻聯繫微信 Coding0201,獲取真題與備考資料。
聯繫方式
Email: [email protected] Telegram: @OAVOProxy