說句實話,Citadel 的 OA 和普通大廠完全不是一個東西。
它不考你會不會做題,它考的是:你能不能在 90 分鐘裡保持冷靜、寫出工業級程式碼、連續 0 失誤?這次兩題我都一次性過了,整個過程非常“Citadel 風格”:不繞彎子、不講情面,純硬實力對決。下面把真題、我的思路、以及容易翻車的坑,全都拆給你看。

Citadel OA 流程
- 數量:2 題
- 時長:90 分鐘
- 難度:中等偏上,但實現要求極嚴
- 重點能力:
- 程式碼準確性
- 邊界處理
- 演算法基本功(字首和 / DP / 位運算)
- 心態穩定度
能寫出來不難,但“寫對並 AC”——這個才是 Citadel 想要篩掉 90% 人的地方。
Citadel OA 英文真題
Problem 1 — Count Stable Server Segments
Description
Given an integer array capacity[] representing server capacities, count all “stable” segments [l, r] (with r ≥ l + 2) such that:
capacity[l] == capacity[r], andcapacity[l] == sum(capacity[l+1 … r−1])
Return the number of stable segments.
T1|Stable Server Segments:字首和 + 強觀察力
這題如果沒看出“要用字首和”會直接死。
整個題考的是:
你能不能用常數時間算區間和 → 再穩定遍歷所有合法區間。
我的做法:
- 字首和 prefix 先打好
- 雙層迴圈,看所有 l,再看所有 r ≥ l+2
- 條件判斷要非常小心:
capacity[l] == capacity[r]capacity[l] == prefix[r-1] - prefix[l]
這題 O(n²) 就夠了,Citadel 的資料範圍允許你暴力,只要寫得乾淨就能 AC。
真正能區分人的,是你能不能一遍寫對,不漏邊界。
Problem 2 — Goodness Values of Increasing Subsequences
Description
Given an array nums, consider all strictly increasing subsequences.
The goodness value of a subsequence is defined as the bitwise OR of all its elements.
Return all distinct goodness values, sorted in ascending order.
T2|Goodness Values:集合 DP + 位運算
這題稍微有點味道了。
它不是 brute force subsequence,而是:
對所有現有 goodness 狀態嘗試擴充套件出新的狀態。
程式碼結構類似 DP,但形式更像“狀態集合滾動更新”。
思路:
- 一個 set 存當前所有 goodness 值,初始
{0} - 遍歷 nums 中每個 x
- 對集合中每個值嘗試
val | x生成新狀態 - 注意必須滿足 subsequence 是 strictly increasing(題面保證你處理 last value)
- 临时集合 🔁 主集合
- 最後排序輸出
這題很 Citadel:
不算難,但你要寫得 乾淨、無重複、無越界、無邏輯錯誤。
為什麼這套 OA 有殺傷力?
Citadel 的題不是給你“難倒你”,
而是給你“足夠簡單,但你一粗心就寄”的那種。
考的就是“冷靜 + 穩定度”。
你只要心態炸了、sum 寫錯、OR 寫錯、set 更新錯……
一個點卡死你整題直接 0 分。
這就是為什麼這麼多大廠麵霸,到 Citadel 照樣掛。
我這次是怎麼做到 0 失誤?
我這次全程帶 programhelp 的無痕助攻:
不是代寫,而是那種——
“你這個區間是不是漏掉等號?”
“這步你先別急,把邊界檢查一遍。”
“這裡可以提前 break,提高穩定性。”
就像你背後站著一個資深 quant/engineer,
在關鍵點幫你踩住剎車,避免你在 UI 壓力下犯錯。
Citadel OA,絕對不是刷題量能解決的,
心態和穩定度要遠大於思路本身。