Citadel / Citadel Securities 2026 SDE Intern OA 仍然是量化方向最「難定級」的一道關:題目本身在 LeetCode Medium 水平,但評分非常依賴 edge case 覆蓋率與程式碼效率,社群通過率長期不到 25%。本文按「平台 → 三類高頻題 → 高分節奏 → 踩雷」的順序,給出 2026 春招最新真題盤點。
OA 平台與節奏
| 維度 | 詳情 |
|---|---|
| 平台 | HackerRank |
| 題量 | 3–4 道 Coding |
| 時長 | 70 min(少量 stream 70 + 簡答 30) |
| 難度 | LC Medium → Medium-Hard |
| 語言 | Python / C++ / Java |
| 評分 | 測試用例分檔 + 隱藏 corner case |
Citadel OA 的 HackerRank 用的是自動評測 + 隱藏測試集,常見情況是 sample case 全過但 score 只有 60,那是因為某個隱藏 test 觸發了你的 edge bug。
三大高頻題型(2026 春招)
題型一:Order Book / Trading Simulation
給定一個 order stream(包含 BUY / SELL / CANCEL),模擬撮合,輸出每筆成交價 + 最終持倉。
要點:
- 維護兩個 heap:
buy_heap(max-heap)+sell_heap(min-heap) - 每次新 order 進來,先看對手簿能否成交
- CANCEL 需要支援 lazy delete(標記 + 跳過)
import heapq
from collections import defaultdict
def match_orders(orders):
buy = []
sell = []
cancelled = set()
trades = []
for op, oid, side, price, qty in orders:
if op == "CANCEL":
cancelled.add(oid)
continue
if side == "BUY":
while qty and sell:
while sell and sell[0][2] in cancelled:
heapq.heappop(sell)
if not sell or sell[0][0] > price:
break
sp, sq, sid = heapq.heappop(sell)
m = min(qty, sq)
trades.append((oid, sid, sp, m))
qty -= m
if sq - m > 0:
heapq.heappush(sell, (sp, sq - m, sid))
if qty:
heapq.heappush(buy, (-price, qty, oid))
else:
while qty and buy:
while buy and buy[0][2] in cancelled:
heapq.heappop(buy)
if not buy or -buy[0][0] < price:
break
bp, bq, bid = heapq.heappop(buy)
m = min(qty, bq)
trades.append((bid, oid, -bp, m))
qty -= m
if bq - m > 0:
heapq.heappush(buy, (bp, bq - m, bid))
if qty:
heapq.heappush(sell, (price, qty, oid))
return trades
時間複雜度:O(n log n),空間複雜度:O(n)
題型二:Greedy Simulation / Resource Allocation
給定一組任務(start, duration, priority),m 個 worker,輸出每個 worker 完成的任務總數。
要點:
- 用 min-heap 維護 worker 的下一次空閒時間
- 每次任務到來時 pop 出最早空閒的 worker
- 注意優先級在多個 worker 同時空閒時的 tie-break
import heapq
def allocate_tasks(tasks, m):
tasks.sort(key=lambda t: (t[0], -t[2]))
workers = [(0, i) for i in range(m)]
heapq.heapify(workers)
count = [0] * m
for start, dur, _ in tasks:
free_at, wid = heapq.heappop(workers)
actual = max(free_at, start)
heapq.heappush(workers, (actual + dur, wid))
count[wid] += 1
return count
時間複雜度:O((n + m) log m)
題型三:Bit Manipulation / Number Theory
給定整數陣列 a,求所有子陣列 XOR 之和 mod 1e9+7。
要點:
- 暴力 O(n²) 必 TLE
- 按 bit 拆解:每個 bit 獨立計算貢獻
- 子陣列 XOR 用前綴 XOR
MOD = 10**9 + 7
def sum_subarray_xor(a):
ans = 0
for b in range(30):
ones = 0
zeros = 1
pref = 0
contrib = 0
for x in a:
pref ^= (x >> b) & 1
if pref == 1:
contrib += zeros
ones += 1
else:
contrib += ones
zeros += 1
ans = (ans + contrib * (1 << b)) % MOD
return ans
時間複雜度:O(n · 30)
70 分鐘節奏分配建議
0–5 分鐘 通讀 3 道題 + 排序難度
5–25 分鐘 最簡單一道全 AC
25–55 分鐘 攻最有把握的一道(含 edge case 覆蓋)
55–65 分鐘 嘗試第三道 + 至少跑通樣例
65–70 分鐘 回看所有提交,確認無 syntax error
關鍵:Citadel 不要求全 AC,兩題完整高於三題半成品。
常見踩雷
- 不讀完所有題目就開始寫(錯過最容易題)
- 用
int預設 64-bit 而忽略溢位(C++ 提交常見) - 隱藏 case 觸發:空輸入、單元素、全相等、全相反
- 沒考慮 stable 順序:題目要求「保留輸入順序」但程式碼用了 sort
- 最後 5 分鐘還在改程式碼導致 syntax error 提交失敗
Citadel 和 Citadel Securities OA 一樣嗎?
兩家公司 OA 完全不同:
| 維度 | Citadel(HF) | Citadel Securities(市商) |
|---|---|---|
| 題目方向 | SDE 通用演算法 | 量化 / 低延遲 / Bit ops |
| 時長 | 70 min | 90 min |
| 數學題佔比 | 低 | 高(機率 / 期望) |
| 平台 | HackerRank | HackerRank |
申請 Citadel Securities 的同學額外要複習機率期望題。
我們見過的高分案例
oavoservice 學員中 Citadel OA 拿到 100 分的,普遍特徵是:兩道題全 AC + 第三道至少跑通 sample。我們 OA輔助 流程會先做能力評估,再針對薄弱題型補強。
具體方案與報價,加微信 Coding0201 溝通。
FAQ
Citadel OA 通過率多少?
社群回饋通過線約 70–80 分(滿分 100)。Top 候選人能拿到 90+ 進 phone screen。
Citadel OA 可以用 ChatGPT 嗎?
不可以。HackerRank 有 webcam + tab tracking 監考,疑似作弊會直接 reject。
Python 提交會 TLE 嗎?
部分題目(特別是 Order Book)Python 偏緊。建議 C++ 或者 PyPy。Citadel HackerRank 支援 PyPy。
OA 之後流程是什麼?
OA pass → HR phone → Tech phone(1–2 輪)→ Superday(3–5 輪 onsite)。Superday 通過率約 25%。
正在準備 Citadel / Jane Street / Two Sigma / HRT / IMC 等量化方向 OA?
oavoservice 長期追蹤量化與 HFT 公司的 OA + VO 真題。mentor 來自一線 quant / SDE 團隊,可提供題型分類訓練、Order Book / 機率題專項、HackerRank 時間節奏 mock等 OA輔助 服務。
👉 立即加微信:Coding0201,取得 Citadel OA 完整備考方案。
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy