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