寫在前面:本文是 oavoservice 團隊根據 2025 年下半年至 2026 春招學員回饋,對 Citadel / Citadel Securities SDE Intern OA 的一次系統性復盤。和市面上「貼一兩道題就走」的 OA 攻略不同,本文聚焦在題型分佈的統計規律、HackerRank 平台的隱藏規則和可落地的 4 週備考路線,讓你不僅知道「今年考什麼」,還知道「怎麼練才不浪費時間」。
一、Citadel OA 平台與基本資訊
1.1 投遞路徑
Citadel SDE Intern 通常透過以下三條路徑觸發 OA:
- 官網直投:投遞後 1–7 天發出 OA 邀請;
- 學校 career fair / 內推:通常 24–72 小時內發邀請;
- 獵頭 / 專案內推:偶有跳過 OA 直接進 first round 的情況。
OA 邀請信來自 [email protected],主旨一般是 Citadel | Citadel Securities Online Assessment。信件連結 7 天內有效,但進入考試後必須一次完成。
1.2 平台規則一覽
| 維度 | 說明 |
|---|---|
| 考試平台 | HackerRank for Work |
| 題量 | 2 道(少數職位 3 道) |
| 時長 | 70 分鐘(部分職位 90 分鐘) |
| 語言 | C++ / Java / Python 3 / JavaScript / Go 等主流語言 |
| 攝影機 | 不強制開啟,但頁面焦點離開會被記錄 |
| 切換分頁 | 有偵測,頻繁切換會被 flag |
| 提交方式 | 自動評測(hidden test cases) |
| 除錯 | 允許 custom input,但無法 print 隱藏測資 |
重點:HackerRank 的隱藏測資通常包含:
- 邊界值(n=1、空陣列、單元素);
- 極端規模(n=10^5 ~ 10^6);
- 全相同 / 全不同元素;
- 負數與零的混合。
只過 sample 遠遠不夠,通過率 = 隱藏測資命中率。
二、近一年 Citadel SDE Intern OA 題型分佈
我們整理了 2025 年 9 月至 2026 年 4 月之間收集到的 60+ 份 OA 回饋,題型大致分佈如下:
| 類別 | 出現頻率 | 代表題型 |
|---|---|---|
| 陣列與前綴和 | ~35% | 區間求和、子陣列極值、滑動視窗 |
| 字串與雜湊 | ~25% | 模式比對、迴文判斷、子字串計數 |
| 圖論與連通分量 | ~20% | 網格 BFS、Union-Find、最短路 |
| 模擬與設計 | ~15% | 訂單簿、庫存、撮合系統簡化版 |
| 數學 / 組合 | ~5% | 模運算、組合計數、機率 |
Citadel 作為量化對沖基金,模擬 + 設計類題目是它和普通互聯網公司 OA 最大的區別——你常會看到帶「價格」「掛單」「觸發」「撮合」語境的擬交易題。
三、3 類高頻題型 + 解題範本
3.1 陣列類:最大平均子陣列(變體)
題目(變體):給定陣列 prices(長度 n ≤ 10^5)和視窗 k,找出長度恰為 k 的連續子陣列中平均價格最大的視窗起點;若有多個,回傳最小起點。
核心思路:滑動視窗 + 前綴和。
def max_avg_window_start(prices, k):
n = len(prices)
if k > n:
return -1
cur = sum(prices[:k])
best = cur
best_start = 0
for i in range(k, n):
cur += prices[i] - prices[i - k]
if cur > best:
best = cur
best_start = i - k + 1
return best_start
複雜度:O(n) 時間,O(1) 空間。
面試常見追問:
- 若陣列為串流輸入怎麼辦?→ 用環形緩衝 + 線上平均;
- 若要前 m 大視窗?→ 維護大小為 m 的最小堆。
3.2 字串類:合法括號修復
題目(變體):給定只含 (、) 和小寫字母的字串,最少刪除多少個字元使其括號合法?回傳最小刪除數及任一合法結果。
核心思路:單次掃描計數 + 反向掃描。
def min_remove_to_make_valid(s):
s = list(s)
open_idx = []
for i, ch in enumerate(s):
if ch == '(':
open_idx.append(i)
elif ch == ')':
if open_idx:
open_idx.pop()
else:
s[i] = ''
for i in open_idx:
s[i] = ''
return ''.join(s)
複雜度:O(n)。
坑點:第二輪「刪除多餘的左括號」必須用 stack 記錄索引,不能簡單從右往左數——否則字串裡夾雜字母時會錯位。
3.3 圖論類:網格連通分量(含障礙)
題目(變體):grid[i][j] ∈ {0, 1, 2}:0 空地、1 障礙、2 端點。問所有 2 之間是否都能互相到達(只能上下左右走 0 或 2)?
核心思路:以任一 2 為起點 BFS,能訪問到的 2 計數若等於總數則 yes。
from collections import deque
def all_endpoints_connected(grid):
R, C = len(grid), len(grid[0])
endpoints = [(r, c) for r in range(R) for c in range(C) if grid[r][c] == 2]
if not endpoints:
return True
start = endpoints[0]
seen = {start}
q = deque([start])
while q:
r, c = q.popleft()
for dr, dc in ((1,0),(-1,0),(0,1),(0,-1)):
nr, nc = r + dr, c + dc
if 0 <= nr < R and 0 <= nc < C and grid[nr][nc] != 1 and (nr, nc) not in seen:
seen.add((nr, nc))
q.append((nr, nc))
return all(p in seen for p in endpoints)
複雜度:O(R·C)。
四、70 分鐘時間分配範本
| 階段 | 用時 | 關鍵動作 |
|---|---|---|
| 0–3 min | 通讀兩題 | 不動鍵盤,先判斷哪題更穩 |
| 3–30 min | 攻第 1 題(更穩的) | 寫 brute force → 優化 → 自測 3 組邊界 |
| 30–55 min | 攻第 2 題 | 即使寫不完,也要交一個能過 50% 的解 |
| 55–65 min | 回頭補隱藏測資 | 最容易出分的階段 |
| 65–70 min | 提交 + 反檢查 | 確認兩題都點了 Submit |
經驗值:兩題都拿 70%+ ≫ 一題 100% 一題 0%,Citadel 的 HR 看的是平均得分。
五、4 週備考路線(學員實測版)
Week 1:地基
- LeetCode Easy 30 題(陣列 / 字串)
- 重點理解:滑動視窗、前綴和、雙指標的判別條件
Week 2:高頻
- LeetCode Medium 25 題(雜湊 / 堆 / 二分)
- 至少 2 題:合法括號、最長無重複子字串變體
Week 3:圖論 + 模擬
- LeetCode Medium 20 題(BFS / DFS / Union-Find)
- 1–2 題帶交易語境的設計題(撮合簡化、訂單簿)
Week 4:限時實戰
- 用 70 分鐘做 6 套模擬(自定 2 題套)
- 每次復盤:哪些隱藏測資沒考慮
六、常見問題 FAQ
Q1:Citadel SDE Intern OA 一般幾道題、多長時間?
A:目前主流是 2 道題 / 70 分鐘,部分職位是 3 道題 / 90 分鐘。具體以信件為準。
Q2:Citadel OA 用的是什麼平台?
A:HackerRank for Work,不是 CodeSignal。可以使用 C++/Java/Python 等主流語言。
Q3:可以中途切換分頁查資料嗎?
A:技術上不會立刻打斷你,但所有切換分頁行為都會被記錄,作為面試官參考。強烈不建議。
Q4:通過 Citadel OA 之後下一步是什麼?
A:通常是 HackerRank CodePair 技術輪(45–60 分鐘,1 道 LC Medium-Hard)+ System / Behavioral,最終 onsite。
Q5:Citadel OA 和 Citadel Securities OA 有區別嗎?
A:題型幾乎一致,但 Citadel Securities 偏交易類語境(訂單、撮合、做市),Citadel 偏一般 SDE。
Q6:被 Citadel OA 刷掉後多久能再投?
A:通常需要等 6 個月以上(隱性冷凍期)。建議刷掉後先復盤,再投同職位前最好換一個 referrer。
Q7:OA 用 ChatGPT 會被偵測嗎?
A:HackerRank 已經接入 plagiarism + AI similarity 偵測,範本化 AI 回答會被打 flag。若一定要參考 AI,記得自己重寫命名與思路。
Q8:Python 寫 Citadel OA 會因為速度被卡嗎?
A:在 n ≤ 10^6 範圍內,只要演算法複雜度對,Python 基本不會 TLE。真正卡 TLE 的幾乎都是 O(n²) 寫法。
七、附:常見錯誤清單(自測用)
- 沒處理 n=0 / n=1 的邊界
- 用了
list.pop(0)(O(n)),應換deque.popleft() - 模運算少了一個
% MOD - 二分寫了
mid = (l + r) // 2但沒處理l == r - BFS 沒在入隊時標記 visited,導致重複入隊 TLE
- 字串拼接用
s += ch,應換''.join(list)
八、需要 Citadel OA 真題 / 代做?
Citadel 的 OA 一旦刷掉冷凍期長達半年起,第一次機會非常寶貴。如果你正在準備 Citadel SDE Intern / New Grad,歡迎來聊:
- 微信:Coding0201 · 取得真題
- Email:[email protected]
- Telegram:@OAVOProxy
我們能提供:
- 當週高頻題與變體題;
- 限時模擬(HackerRank 同款節奏);
- OA 代做(滿分通過)/ VO 即時輔助。
最後更新:2026-05-11 | 作者:oavoservice 演算法組