Heads-up: This is a structured retrospective written by the oavoservice team based on 60+ Citadel / Citadel Securities SDE Intern OA debriefs collected between late 2025 and spring 2026. Unlike most "drop two problems and leave" OA guides, this one focuses on the statistical distribution of question types, the hidden rules of the HackerRank platform, and a 4-week prep roadmap you can actually execute.
1. Platform & Basics
1.1 Invitation paths
You typically receive a Citadel SDE Intern OA invite through one of three channels:
- Direct application on the careers site — OA usually arrives in 1–7 days;
- Campus career fair / referral — invite often arrives in 24–72 hours;
- Recruiter / program nomination — occasionally you can skip the OA and start at first round.
The invitation email is sent from [email protected] with a subject line similar to Citadel | Citadel Securities Online Assessment. The link is valid for 7 days, but once you start, the test must be completed in a single sitting.
1.2 Platform rules at a glance
| Dimension | Detail |
|---|---|
| Platform | HackerRank for Work |
| Number of questions | 2 (some roles 3) |
| Time | 70 minutes (some roles 90 min) |
| Languages | C++ / Java / Python 3 / JavaScript / Go and other mainstream |
| Webcam | Not strictly required, but focus changes are logged |
| Tab switching | Detected and flagged |
| Submission | Auto-graded against hidden tests |
| Debugging | Custom input allowed; you can't print hidden cases |
Important: HackerRank hidden tests usually include:
- Boundary values (n=1, empty array, single element);
- Extreme scale (n = 10^5 to 10^6);
- All-same / all-distinct elements;
- Mixed negative numbers and zeros.
Passing the sample alone is far from enough — pass rate = hidden-test hit rate.
2. Question Type Distribution
Aggregating 60+ OA debriefs from Sep 2025 – Apr 2026, the rough distribution is:
| Category | Frequency | Representative variants |
|---|---|---|
| Array & prefix sum | ~35% | Range sum, subarray extrema, sliding window |
| String & hashing | ~25% | Pattern matching, palindrome, substring counting |
| Graph & connectivity | ~20% | Grid BFS, Union-Find, shortest path |
| Simulation & design | ~15% | Order book, inventory, simplified matching engine |
| Math / combinatorics | ~5% | Modular arithmetic, counting, probability |
Citadel is a quant fund, so simulation + design questions are what set it apart from typical Big Tech OAs — expect problems framed with "price", "order", "trigger", "match" language.
3. Three High-frequency Patterns + Templates
3.1 Array: max-average window (variant)
Problem (variant): Given prices (n ≤ 10^5) and window size k, find the starting index of the length-k contiguous subarray with the maximum average price; if tied, return the smallest start index.
Idea: sliding window + running sum.
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
Complexity: O(n) time, O(1) space.
Common follow-ups:
- Streaming input → ring buffer + online average;
- Top-m windows → min-heap of size m.
3.2 String: minimum-removal valid parentheses
Problem (variant): Given a string with (, ) and lowercase letters, find the minimum number of characters to remove so the parentheses are valid, and return any valid result.
Idea: forward pass + index stack.
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)
Complexity: O(n).
Gotcha: when removing extra ( you must use an index stack — don't try to count from the right, because mixed letters will mis-align positions.
3.3 Graph: connected components in a grid with obstacles
Problem (variant): grid[i][j] ∈ {0, 1, 2} where 0 is open, 1 is obstacle, 2 is endpoint. Decide whether every pair of endpoints is mutually reachable (you can walk on 0 or 2 cells, 4-directionally).
Idea: BFS from any 2, then check that all 2 cells are visited.
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)
Complexity: O(R·C).
4. 70-minute Time Allocation Template
| Phase | Time | Action |
|---|---|---|
| 0–3 min | Read both problems | Don't touch the keyboard yet — pick the safer one |
| 3–30 min | Attack problem 1 (safer) | Brute force → optimize → self-test 3 edge cases |
| 30–55 min | Attack problem 2 | Even if incomplete, submit a 50%-passing solution |
| 55–65 min | Patch hidden tests | The highest-ROI phase |
| 65–70 min | Submit + re-check | Confirm both problems are submitted |
Rule of thumb: 70% on both ≫ 100% on one + 0% on the other. Citadel HR looks at the average.
5. 4-week Prep Roadmap (Student-tested)
Week 1: Foundations
- 30 Easy LC problems (arrays/strings)
- Internalize: when to use sliding window vs. prefix sum vs. two pointers
Week 2: High-frequency
- 25 Medium (hashing/heap/binary search)
- At least 2: valid parentheses, longest unique substring variants
Week 3: Graph + simulation
- 20 Medium (BFS/DFS/Union-Find)
- 1–2 trading-style design problems (simplified matching, order book)
Week 4: Timed practice
- 6 mock sets at 70-min cadence
- After each: list which hidden cases you missed
6. FAQ
Q1: How many problems and how long is the Citadel SDE Intern OA?
A: The current norm is 2 problems / 70 minutes, with some roles using 3 problems / 90 min. Follow the email instructions.
Q2: Which platform does Citadel use?
A: HackerRank for Work — not CodeSignal. Major languages (C++/Java/Python) are supported.
Q3: Can I tab away to look things up?
A: It won't stop the test, but every tab switch is logged and visible to the interviewer. Strongly not recommended.
Q4: What's next after passing the OA?
A: Typically a HackerRank CodePair technical round (45–60 min, one LC Medium-Hard), then system / behavioral, then onsite.
Q5: Is the Citadel OA different from the Citadel Securities OA?
A: The patterns are similar, but Citadel Securities leans into trading scenarios (orders, matching, market-making), while Citadel leans into general SDE.
Q6: How long do I have to wait after failing the OA?
A: An implicit cooldown of 6+ months. Debrief carefully and consider getting a new referrer before re-applying.
Q7: Will using ChatGPT during the OA be detected?
A: HackerRank now has plagiarism + AI-similarity detection. Template-style AI answers get flagged. If you must reference AI, rewrite naming and approach yourself.
Q8: Will Python be too slow for Citadel OA?
A: For n ≤ 10^6, a correct-complexity solution rarely TLEs. The real TLE risk is writing O(n²) by accident.
7. Self-check List
- Handled n=0 / n=1 edge cases
- Avoided
list.pop(0)(O(n)) — useddeque.popleft()instead - Every modular step ends with
% MOD - Binary search handles
l == r - BFS marks visited on enqueue, not dequeue
- String built via
''.join(list), nots += ch
8. Need Citadel OA real questions / assistance?
A Citadel OA fail triggers a 6-month cooldown, so the first attempt is precious. If you're prepping Citadel SDE Intern / New Grad, reach out:
- WeChat: Coding0201 · get real questions
- Email: [email protected]
- Telegram: @OAVOProxy
What we offer:
- Current week's high-frequency questions and variants;
- Timed mocks at HackerRank cadence;
- OA done-for-you (full-score pass) / VO live coaching.
Last updated: 2026-05-11 | Author: oavoservice algorithm team