這不是一篇「刷題清單」,而是 oavoservice 團隊對 30+ 位 2026 春招 / 暑期 SDE Intern 學員的 Citadel OA 實測覆盤。我們整理了他們在 HackerRank 上真正看到的題型、平台的小坑、最終得分分佈,以及——所有人事後都會拍大腿的那 7 條踩坑。看完不一定能押中原題,但至少不會「白白浪費 70 分鐘」。
一、寫在前面:這 30+ 份覆盤從哪來?
樣本來自 2025-11 至 2026-05 期間,33 位通過 oavoservice 渠道做過 Citadel SDE Intern(含 Citadel Securities Software Engineer Intern)OA 的學員,職缺涵蓋:
- Chicago / NYC SDE Intern(19 位)
- Citadel Securities Software Engineer Intern(9 位)
- Dallas Quant Tech Intern(5 位,OA 題與 SDE 一致)
核心結論:題型不再像 2024 年那樣集中在「前綴和 + 滑窗」,2026 年圖論與實作題佔比明顯上升,HackerRank 還引入了強制全螢幕與剪貼簿攔截兩個新特性。
二、HackerRank 平台體驗:真實候選人怎麼說
| 維度 | 實測數據 | 學員吐槽點 |
|---|---|---|
| 入場流程 | 攝影機快照 + 證件掃描(NYC 職缺強制) | 部分學員攝影機權限彈窗卡住 5 分鐘 |
| 全螢幕 | 強制全螢幕,切換 3 次即彈警告 | Mac 上 Cmd+Tab 也算切換 |
| 剪貼簿 | 從外部貼上會被封鎖,但編輯器內可複製 | 想從 ChatGPT 貼上的同學直接陣亡 |
| 編輯器 | 內建 Monaco,支援 Python 3.10 / C++17 / Java 17 | 沒有自動補全,習慣 IDE 的人容易抓瞎 |
| 時長 | 70 min(2 題)/ 90 min(3 題,少數) | 70 min 普遍認為偏緊 |
| 自測 | 允許 custom input,但只顯示 stdout | 不能 print 隱藏用例 |
| 評測 | 提交即評,hidden cases 數量在 8–15 之間 | 通過率公開顯示,會「看著自己掛掉」 |
一位 CMU 學員的原話:「最大的驚喜不是題難,而是進考試前要交身分證掃描檔,沒準備好攝影機的同學多浪費 10 分鐘。」
三、題型分佈:30+ 份樣本統計
我們把 33 份 OA 的所有題(合計 71 道,含部分 3 題套)按方向歸類:
| 題型 | 占比 | 出現次數 | 難度(學員自評 1-5) |
|---|---|---|---|
| 陣列 / 字串 / 前綴和 | ~45% | 32 道 | 3.0 |
| 圖論 BFS / 最短路徑 | ~25% | 18 道 | 3.8 |
| DP / 區間 DP | ~20% | 14 道 | 4.0 |
| 實作題 / 模擬 / 設計 | ~10% | 7 道 | 3.5 |
得分分佈(滿分 100,每題平均權重):
[90-100] ███ 12%
[70-89] ██████ 37%
[50-69] ████████ 42%
[<50] ██ 9%
進入下一輪的及格線,根據 recruiter 回饋,通常在 70 分以上,但 Quant Tech 職缺有學員 62 分也進了 VO——職缺 headcount 緊的會放寬。
四、題型一:陣列 / 前綴和(最高頻)
學員還原題:水位平衡線
一條河上有 n 個感測器,給定陣列
levels[i]表示第 i 個感測器讀到的水位。要求選一段連續區間[l, r],使得區間內最大值與最小值之差不超過 D,問最長這樣的區間長度。
10 份樣本中 6 份遇到了它的變體(替換為「價格」、「溫度」等情境)。
from collections import deque
def longest_balanced(levels, D):
n = len(levels)
max_q, min_q = deque(), deque() # 單調佇列
l = 0
best = 0
for r in range(n):
# 維護最大值單調遞減
while max_q and levels[max_q[-1]] <= levels[r]:
max_q.pop()
max_q.append(r)
# 維護最小值單調遞增
while min_q and levels[min_q[-1]] >= levels[r]:
min_q.pop()
min_q.append(r)
# 收縮左端點直到合法
while levels[max_q[0]] - levels[min_q[0]] > D:
l += 1
if max_q[0] < l:
max_q.popleft()
if min_q[0] < l:
min_q.popleft()
best = max(best, r - l + 1)
return best
複雜度:O(n) 時間,O(n) 空間。踩坑提醒:用樸素 O(n²) 會在 n=10^5 時掛一半隱藏用例,必須上單調佇列。
五、題型二:圖論 BFS / 最短路徑
學員還原題:伺服器叢集最短延遲
資料中心有 n 台伺服器,給定無向帶權圖
edges[i] = [u, v, w]表示鏈路延遲。某個請求需要從伺服器s出發,經過至少一個關鍵節點(集合 K),再到達t。求最短延遲。
樣本中 4 位學員遇到此題或變體(「必須經過加油站」、「必須過中轉倉」)。
import heapq
def shortest_via_keypoint(n, edges, s, t, keypoints):
graph = [[] for _ in range(n)]
for u, v, w in edges:
graph[u].append((v, w))
graph[v].append((u, w))
def dijkstra(src):
dist = [float('inf')] * n
dist[src] = 0
pq = [(0, src)]
while pq:
d, u = heapq.heappop(pq)
if d > dist[u]:
continue
for v, w in graph[u]:
if d + w < dist[v]:
dist[v] = d + w
heapq.heappush(pq, (dist[v], v))
return dist
dist_s = dijkstra(s)
dist_t = dijkstra(t)
best = float('inf')
for k in keypoints:
if dist_s[k] + dist_t[k] < best:
best = dist_s[k] + dist_t[k]
return -1 if best == float('inf') else best
複雜度:O((V + E) log V)。踩坑:很多人用 BFS 求最短路忘了邊帶權,直接 0 分;一定要確認權重再選演算法。
六、題型三:實作題 / 模擬
學員還原題:訂單簿事件回放
給定時間序列事件
events,每筆為(timestamp, side, price, qty, type),其中type ∈ {ADD, CANCEL, MATCH}。回放完所有事件後,返回剩餘訂單簿中買一價、賣一價及對應總量。
5 份樣本含此題(Citadel Securities 職缺高發)。
from sortedcontainers import SortedDict
def replay_book(events):
bids = SortedDict() # price -> qty (買盤,按價格降序取頂)
asks = SortedDict() # price -> qty (賣盤,按價格升序取頂)
orders = {} # order_id -> (side, price, qty)
for ts, oid, side, price, qty, etype in events:
if etype == 'ADD':
book = bids if side == 'B' else asks
book[price] = book.get(price, 0) + qty
orders[oid] = (side, price, qty)
elif etype == 'CANCEL':
if oid in orders:
s, p, q = orders.pop(oid)
book = bids if s == 'B' else asks
book[p] -= q
if book[p] <= 0:
del book[p]
elif etype == 'MATCH':
# 撮合:從對手盤頂部吃掉 qty
book = asks if side == 'B' else bids
remaining = qty
while remaining > 0 and book:
top_price = book.keys()[0] if side == 'B' else book.keys()[-1]
fill = min(book[top_price], remaining)
book[top_price] -= fill
remaining -= fill
if book[top_price] == 0:
del book[top_price]
best_bid = (bids.keys()[-1], bids[bids.keys()[-1]]) if bids else None
best_ask = (asks.keys()[0], asks[asks.keys()[0]]) if asks else None
return best_bid, best_ask
複雜度:O(E log P),E 為事件數,P 為唯一價格數。踩坑:HackerRank 預設環境內建 sortedcontainers,但 C++ 學員要用 std::map 而非 unordered_map。
七、學員踩坑總結(7 條,按出現頻率排序)
- 沒讀完題就開寫 — 5 人栽在此,題面「至少經過一個 keypoint」被忽略,寫成普通最短路 0 分。
- 範例過了就提交 — 隱藏用例覆蓋 n=1、空輸入、全相同元素,至少 9 人因此從 100 掉到 60。
- 暴力解超時 — 陣列類用 O(n²) 在 n=10^5 必 TLE,單調佇列 / 雙指標是底線。
- Python list
pop(0)— O(n) 複雜度,應換collections.deque。 - 圖論忘記建無向邊 — 單向 append 漏掉反向,連通分量算錯。
- 切視窗觸發 flag — Mac 學員尤其多,
Cmd+Tab看時間也算。建議提前關閉所有通知。 - 最後一分鐘沒提交 — HackerRank 不會自動提交未點 Submit 的題,至少 3 人因此 0 分。
八、提分技巧(學員真實總結)
8.1 邊界值清單(開題先列)
- n = 0 / n = 1
- 全相同 / 全不同元素
- 極端規模(10^5 ~ 10^6)
- 負數與零
- 重複輸入(圖中重邊、訂單簿同價同量)
8.2 70 分鐘時間分配(實測最優)
| 時段 | 任務 | 關鍵動作 |
|---|---|---|
| 0-5 min | 通讀 2 題 | 標「穩」和「賭」,先做穩的 |
| 5-25 min | 第 1 題 | brute force → 優化 → 自測 3 個邊界 |
| 25-55 min | 第 2 題 | 寫不完也要交一個 50% 解 |
| 55-65 min | 回頭補隱藏用例 | 改邊界檢查,最容易加分 |
| 65-70 min | 雙題確認提交 | 看到 "Submitted" 狀態 |
8.3 除錯技巧
- 不要 print 除錯,改用 assert 在關鍵節點。
- 自測時手算 1 個 n=3 的小用例,比跑 sample 更能抓 bug。
- Python 用
if __name__ == '__main__':包住測試程式碼,提交前註解掉,避免誤觸發。
九、FAQ
Q1:Citadel OA 2026 多少分能進 VO?
A:根據 33 位學員回饋,SDE Intern 主流通過線在 70/100,Citadel Securities 偏嚴要 75+,Quant Tech 職缺有學員 62 分進 VO(headcount 緊)。分數不是唯一標準,隱藏用例命中率、程式碼風格、提交時間都會被參考。
Q2:HackerRank 這次的「強制全螢幕」嚴格嗎?掛代理或開虛擬機會被發現嗎?
A:全螢幕切換 3 次會彈 warning,第 4 次直接終止。虛擬機本身不被偵測,但攝影機快照若辨識為黑屏 / 靜態圖,會被人工 review。強烈建議正常環境作答。
Q3:Citadel OA 和 Citadel Securities OA 題型一樣嗎?
A:核心演算法重疊 ~70%,但 Citadel Securities 實作題佔比更高(訂單簿、撮合、做市模擬),且題面帶交易情境。30+ 學員裡,Citadel Securities 9 人中有 6 人遇到訂單簿類。
Q4:掛掉之後多久能再投?
A:官方冷凍期 6 個月,但同年內換職缺(如 Intern → New Grad、Chicago → NYC)可再投。建議掛掉立即覆盤,寫 OA 後總結寄給 recruiter,留個印象。
Q5:Python 寫 Citadel OA 會因為速度被卡嗎?
A:33 位學員裡 22 人用 Python,只有 2 人遇到 TLE——且都是 O(n²) 演算法。在 n ≤ 10^6 內,Python 只要複雜度對就夠用。C++/Java 優勢在常數,但寫起來慢,CP 值未必更高。
十、需要 Citadel OA 當週高頻題 / 真題覆盤?
Citadel OA 一旦掛掉冷凍期半年起,第一次機會非常寶貴。我們持續追蹤每週新出現的變體題,提供:
- 當週高頻題 + 學員覆盤庫(30+ 份持續更新)
- HackerRank 同款節奏的 70 min 限時模擬
- OA 代做(滿分通過)/ VO 即時輔助
- 履歷優化與 Citadel referral 渠道對接
聯絡方式:
- 微信:Coding0201 · 立即諮詢
- Email:[email protected]
- Telegram:@OAVOProxy
聯絡方式
Email: [email protected]
Telegram: @OAVOProxy
微信: Coding0201
最後更新:2026-05-18 | 作者:oavoservice 面試組 | 樣本:33 位 2026 春招 Citadel SDE Intern 學員