← 返回博客列表 Optiver OA 一亩三分地真题|Trading Sequences + Allocation + Order Book 三件套 OA辅助 2026
Optiver

Optiver OA 一亩三分地真题|Trading Sequences + Allocation + Order Book 三件套 OA辅助 2026

2026-05-23

Optiver 2026 春招在一亩三分地上的 OA 反馈密度很高,三地(阿姆斯特丹 / 芝加哥 / 悉尼)题库基本同源,Trading Sequences、Allocation、Order Book 三条主线占了约 85% 的题面比例。本文按一亩三分地最近 60 天发帖整理题型分布、Python 解法和 OA辅助 接入方式,帮你少走弯路。

Optiver OA 一亩三分地反馈速览(2026 春招)

维度 详情
投放渠道 HackerRank + Optiver 自研在线 IDE
时长 70–90 分钟
题量 2–3 题(必含 1 道 simulation)
平均通过率 一亩三分地反馈约 38%
评测特点 全自动判题 + 隐藏 corner case + 时间复杂度限制
冷却期 6 个月,跨城市单独计数

主线一:Trading Sequences(数列模拟)

题型描述

给定一秒级成交价数组 prices[],找出最长非递减子段,且子段平均价 ≥ 全局均价。一亩三分地 2026 帖子中这题反复出现,注意「平均价 ≥」是闭区间。

Python 解法

def longest_strong_run(prices):
    if not prices:
        return 0
    avg = sum(prices) / len(prices)
    best = 0
    start = 0
    cur_sum = 0
    for i, p in enumerate(prices):
        if i > 0 and prices[i] < prices[i - 1]:
            start = i
            cur_sum = 0
        cur_sum += p
        length = i - start + 1
        if cur_sum / length >= avg and length > best:
            best = length
    return best

复杂度:O(n) 时间 / O(1) 空间。一亩三分地反馈隐藏 case 有「全降序」「全相等」「长度=1」边界。

主线二:Allocation(按比例配额分配)

题型描述

n 个客户对一篮子标的下达申购量 demand[i],可用总量 S < sum(demand)。要求按「比例 + 整手取整 + 余量按时间戳轮询」规则给每个客户分配最终成交量。

Python 解法

def pro_rata_allocate(demands, ts, S, lot=1):
    n = len(demands)
    total = sum(demands)
    base = [(d * S) // total // lot * lot for d in demands]
    leftover = S - sum(base)
    order = sorted(range(n), key=lambda i: ts[i])
    i = 0
    while leftover >= lot and i < n:
        idx = order[i]
        if base[idx] < demands[idx]:
            base[idx] += lot
            leftover -= lot
        i += 1
    return base

复杂度:O(n log n),瓶颈在 timestamp 排序。一亩三分地反馈最常见 corner case 是「lot 不能整除 S」时余量未正确轮询。

主线三:Order Book(限价撮合)

题型描述

实现一个最小可行 Limit Order Book,支持 add(side, price, qty)match()match() 撮合所有可成交对,返回 [(buy_id, sell_id, price, qty), ...]

Python 解法

import heapq
from collections import defaultdict

class OrderBook:
    def __init__(self):
        self.buys = []
        self.sells = []
        self.qty = defaultdict(int)
        self.ts = 0

    def add(self, side, price, qty, oid):
        self.ts += 1
        self.qty[oid] = qty
        if side == 'B':
            heapq.heappush(self.buys, (-price, self.ts, oid))
        else:
            heapq.heappush(self.sells, (price, self.ts, oid))

    def match(self):
        fills = []
        while self.buys and self.sells and -self.buys[0][0] >= self.sells[0][0]:
            _, _, bid = self.buys[0]
            sp, _, sid = self.sells[0]
            q = min(self.qty[bid], self.qty[sid])
            fills.append((bid, sid, sp, q))
            self.qty[bid] -= q
            self.qty[sid] -= q
            if self.qty[bid] == 0:
                heapq.heappop(self.buys)
            if self.qty[sid] == 0:
                heapq.heappop(self.sells)
        return fills

复杂度:每次 match 平均 O(k log n),k 为本轮成交对数。

一亩三分地高频题对照表

题型 60 天频率 核心数据结构 易错点
Trading Sequences ★★★★★ 滑动 + 均价 >= 不是 >
Allocation ★★★★★ 取整 + 轮询 余量未分配
Order Book ★★★★ 双堆 + 数量字典 部分成交时未减库存
价差最大化 ★★★ 单调栈 负数收益
行情字符串解析 ★★ 状态机 缺失字段

OA辅助 实战路径

oavoservice 的 OA辅助 服务

一亩三分地之外,我们还做了什么

光刷一亩三分地的帖子效率不高——一是题面会换字段名,二是 Optiver 隐藏 case 边界格外严格。我们维护了一份只在内部循环更新的 corner case 清单,包含每道主线题的 8–12 个隐藏边界,帮你在 70 分钟里少踩坑。

具体方案与报价,加微信 Coding0201 沟通。


FAQ

Optiver OA 一亩三分地反馈和真实题面差距大吗?

题面骨架基本一致,变量名 / 输入格式偶有调整。我们见过的最大差距是 Allocation 题的 lot size 从 1 变成 100,逻辑不变但要重新调整测试用例。

三地(阿姆斯特丹 / 芝加哥 / 悉尼)OA 题库相同吗?

一亩三分地反馈 80% 共享,剩下 20% 是本地化变体(如悉尼场偏概率,芝加哥场偏 Order Book)。

HackerRank 平台和 Optiver 自研平台有什么区别?

HackerRank 给 sample case 不允许自定义运行环境;自研平台允许自己写测试用例,但隐藏 case 更严。建议两套都练。

OA 没过冷却期多久?换岗位也算吗?

通常 6 个月,跨城市办公室单独计数。换岗位(如 SWE → Trading)一般另算池子,可以更早再投。


正在准备 Optiver OA / VO?

oavoservice 长期追踪 Optiver / Citadel / Jane Street / IMC 等量化机构的 OA + VO 真题。mentor 来自一线做市 / 自营团队,可以提供 题型分桶、限时模拟、自研平台实时 OA辅助、行为面剧本 等 OA辅助 / VO辅助 服务。

👉 立即添加微信:Coding0201获取 Optiver 一亩三分地高频题与 OA辅助 方案


联系方式

Email: [email protected]
Telegram: @OAVOProxy