写在前面:本文是 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)。
坑点:第二轮"删除多余的左括号"必须用栈记录索引,不能简单从右往左数——否则字符串里夹杂字母时会错位。
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 算法组