最近幫幾位同學做了幾場 Citadel OA ,總體感覺很統一: 時間緊 + 題不難但細節多,真正卡人的不是演算法,而是建模能力 + 寫程式碼速度。這篇直接把最新一輪 OA 情況 + 各崗位高頻題給大家拆一下。

Citadel OA 需要多長時間?
根據候選人反饋,OA 時長通常為 75–90 分鐘,具體取決於崗位:
- 軟體工程:2 道程式設計題 + 量化/邏輯題。
- 量化研究:機率、程式設計和領域特定問題的混合。
- 金融/資料類崗位:帶有金融背景的量化題 + 邏輯挑戰。
時間管理至關重要。常見策略是先把 60–70% 的時間花在你最擅長的部分,然後用剩餘時間攻克難題。
Citadel HackerRank 題目 獨家分享
Citadel SWE HackerRank 題目
問題 1:迴文密碼轉換
題目描述: 給你一個由小寫字母組成的密碼字串。你需要將其轉換為一個長度相同的新密碼,該新密碼必須同時滿足兩個條件:
- 新密碼必須是迴文(正讀反讀相同)。
- 每隔 k 個字元必須相同(即位置相差 k 的倍數的字元必須相同)。
返回使原密碼滿足條件所需的最小字元修改次數。
輸入:
- 字串 s(1 ≤ |s| ≤ 10⁵),僅包含小寫英文字母。
- 整數 k(1 ≤ k ≤ |s|)。
輸出: 一個整數,表示所需的最小修改次數。
示例:
plaintext
輸入: s = "abcda" k = 2 輸出: 2 解釋: - 要成為迴文,位置 (0,4) 和 (1,3) 必須相同。 - 要滿足 k=2 的條件,位置 (0,2,4) 必須相同,位置 (1,3) 必須相同。 至少需要 2 次修改。
問題 2:無連續重複的程序排程
題目描述: 給你 n 個程序,需要將它們安排到 n_intervals 個時間槽中。每個時間槽必須安排且僅安排一個程序。同一程序不能安排在兩個連續的時間槽中。
返回有效的排程方案總數。
輸入:
- 兩個整數:n(1 ≤ n ≤ 20)和 n_intervals(1 ≤ n_intervals ≤ 50)。
輸出: 一個整數,表示有效的排程方案數量。
示例 1:
輸入: n = 2 n_intervals = 3 輸出: 6 解釋: 有兩個程序(A、B)。長度為 3 的有效排程:ABA、BAB、ABB、BAA、AAB、BBA → 共 6 種。
示例 2:
輸入: n = 3 n_intervals = 2 輸出: 6 解釋: 有三個程序(A、B、C)。長度為 2 且無連續重複的有效排程:AB、AC、BA、BC、CA、CB → 共 6 種。
Citadel 量化交易 HackerRank 題目
以下是量化交易職位常見的機率與期望值問題:
- 青蛙跳躍問題(Frog Jump Problem) 青蛙從 Ground → Rock → Grass 跳躍。
- P(Ground → Rock) = 1/3
- P(Rock → Grass) = 1/4 計算:逃脫所需的期望跳躍次數(E[num of jumps to escape])。
- 五局三勝錦標賽(Tournament Best of 5) 兩支隊伍進行比賽,直到一方贏得 3 局(五局三勝)。 計算:比賽進行的期望局數(E[num of games played])。
- 襪子配對機率(Socks Pairing Probability) 10 只襪子:5 只紅色、5 只白色。 計算:抽取 4 只襪子後組成兩對的機率。
- 相鄰相同髮色人數期望(Adjacent Pairs with Same Hair Color) 4 人紅髮,8 人黑髮。 計算:相鄰兩人髮色相同的期望對數(E[num of adjacent pairs w/ same color hair])。
- 公交車晚點問題(Bus Lateness Problem)
- 紅車晚點機率 3/4
- 藍車晚點機率 1/3 一個人隨機乘坐公交車。已知乘坐紅車機率為 1/2,且該人遲到了,計算紅車與藍車的比例。
- 島上游客問題(Tourists on Islands) 三名遊客分別獨立隨機選擇三個島嶼之一。 計算:三個島嶼遊客數量中位數的期望值。
- 社羣步行時間問題(Neighborhood Walk Time) 一個社羣有 25 人,每人步行時間均值為 80 分鐘,標準差為 10 分鐘。 計算:整個社羣總步行時間的標準差。
Citadel NXT HackerRank 題目
問題:實現高效的訂單簿匹配引擎
允許時間: 45 分鐘
目標: 實現一個簡化的訂單簿核心功能,能夠高效接收和處理買入與賣出訂單。
資料結構設計要求:
- 使用 最大堆(max-heap) 儲存所有買入訂單(Bids),按訂單價格優先(最高買價優先)。
- 使用 最小堆(min-heap) 儲存所有賣出訂單(Asks),按訂單價格優先(最低賣價優先)。
匹配邏輯:
- 買入訂單匹配:如果新買入訂單的價格 ≥ 當前最低賣出訂單價格,則發生交易。
- 賣出訂單匹配:如果新賣出訂單的價格 ≤ 當前最高買入訂單價格,則發生交易。
- 交易發生後,從堆中移除已匹配的訂單,並處理剩餘數量。
功能要求:
- 編寫一箇中心函式來處理新訂單。
- 輸入:訂單型別(buy/sell)、價格、數量。
- 輸出:
- 總交易量
- 交易後訂單簿的狀態(最佳買價和最佳賣價)
一站式求職輔助|OA + 面試全流程支援
最近很多同學在準備大廠 OA / 面試,時間緊 + 壓力大,確實很容易在關鍵環節翻車。Programhelp 主要做 OA 和麵試相關的輔助支援,像 HackerRank、CodeSignal、牛客這些平臺都比較熟,也整理了不少高頻題和思路。這段時間確實已經幫不少同學順利上岸大廠和量化崗位,很多其實差的就是臨場一點點節奏和思路。如果你自己準備有點拿捏不準,或者總是卡在某一環,也可以來聊聊看看怎麼最佳化更合適。