← 返回部落格列表 Optiver SWE OA 一畝三分地真題速覽|Order Book + Allocation 全題型 OA輔助 2026
Optiver

Optiver SWE OA 一畝三分地真題速覽|Order Book + Allocation 全題型 OA輔助 2026

2026-05-23

Optiver 阿姆斯特丹 / 芝加哥 / 雪梨三地的 SWE 職位在 2026 春招繼續開放,OA 仍由 HackerRank / 自研平台二選一發放。我們結合一畝三分地最近 90 天發帖整理:題型基本固定在 Order Book 撮合、Trading Sequences 數列模擬、Allocation 分配 三條主線,每條都對應一道核心演算法 + 一段業務封裝。下面按真題密度排序拆解,並補充 OA輔助 的具體接入方式。

Optiver SWE OA 概覽

維度 詳情
平台 HackerRank / 自研線上 IDE
時長 70–90 分鐘
題量 2–3 道(含 1 道偏 simulation)
難度 LC Medium 為主,1 道帶 Hard 收尾
評分 全自動判題 + 隱藏 corner case
反饋 一畝三分地 2026 帖子約 65% 反饋三題全過即進下一輪

題型一: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]:
            bp, _, 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 為本輪成交單數。

題型二:Trading Sequences

題目描述

給定每秒成交價陣列 prices[],找出最長非遞減子段且子段平均價 ≥ 全域均價。

Python 解法

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

時間複雜度:O(n)。這道題在一畝三分地反覆出現,注意 >= 而非 >

題型三: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]
    used = sum(base)
    leftover = S - used
    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 = (i + 1) % n if leftover >= lot else i + 1
    return base

時間複雜度:O(n log n),瓶頸在排序。

一畝三分地高頻題速查

題型 90 天頻率 核心模板
Order Book 撮合 ★★★★★ 雙堆 + 數量字典
Trading Sequences ★★★★ 單調段 + 均價滑動
Pro-rata Allocation ★★★★ 取整 + 餘量輪詢
價差最大化 ★★★ 單調棧 / 雙指標
字串行情解析 ★★ 正規 + 狀態機

OA輔助 實戰路徑

oavoservice 的 OA輔助 服務

針對 Optiver SWE OA 這種「全自動判題 + 隱藏 corner case」的特點,oavoservice 的 OA輔助 提供:

具體方案與報價,加微信 Coding0201 溝通。

從盲刷到順利通過 Optiver OA

這次很高興能幫助這批同學順利通過 Optiver SWE OA。我們發現很多同學準備 OA 時,光靠自己刷一畝三分地的帖子效率其實不高——一是題面會換,二是 Optiver 特別看 corner case 邊界,單靠 LC Medium 刷題量很難覆蓋。

如果你也在準備 Optiver、Citadel、Jane Street、IMC 這類量化 SWE 的 HackerRank / 自研平台 OA,感覺一個人複習方向模糊、節奏不穩,歡迎聯絡 oavoservice。我們會根據你的具體水平和弱點,提供專業的 OA 實戰輔助服務和一對一指導,把題型分桶、限時模擬、當天思路核對全部打通。


FAQ

Optiver SWE OA 難度和 LeetCode 比是什麼水平?

主體 LC Medium,但每場至少有一道帶 Hard 級 corner case 收尾的 simulation 題,需要你在 70–90 分鐘內同時處理演算法 + 業務規則。

Optiver 哪幾個城市的 OA 題庫一致?

阿姆斯特丹、芝加哥、雪梨三地題庫 80% 共享,少量本地化變體。一畝三分地反饋過最近批次三地 Order Book 題完全相同。

自研平台和 HackerRank 平台有什麼區別?

自研平台允許你自己寫測試用例,但隱藏 case 更嚴;HackerRank 給出 sample case 但不允許自訂執行環境。建議兩套都練。

OA 沒過冷卻期多久?

通常 6 個月,跨地區辦公室單獨計數。換職位(如 SWE → Trading)一般另算池子,可以更早再投。


正在準備 Optiver SWE OA / VO?

oavoservice 長期追蹤 Optiver / Citadel / Jane Street / IMC 等量化機構的 OA + VO 真題。我們的 mentor 來自一線做市 / 自營團隊,可以提供 題型分桶、限時模擬、自研平台即時輔助、行為面劇本 等 OA輔助 服務。

👉 立即加微信:Coding0201獲取 Optiver 高頻題與 OA輔助 方案


聯絡方式

Email: [email protected]
Telegram: @OAVOProxy