分享最近帶學員走的一套 HRT OA 。 這位同學是今年衝擊 quant / trading firm 的候選人,之前刷過不少 CodeSignal 的大廠 OA(Citadel、Optiver 那類),對常見的陣列、模擬題都比較熟悉。 這次碰到 HRT 的 OA,整體還是偏熟悉的題型。
這套 OA 一共 70 分鐘 4 題,難度分佈比較均衡。 我這位同學 25 分鐘就全 AC 了,剩下時間用來檢查 edge case。 順便提一句,HRT 還有另外一個版本:150 分鐘 3 題,其中第三題會有兩個 level,第二個要在第一個的基礎上繼續寫,相對更耗時。
Hudson River Trading 獨家真題分享
Problem 1: Build Obstacles and Check Blocks on Number Line
Task: Implement code to support two operations on an infinite integer number line for building obstacles and checking block feasibility.
Operation Types:
[1, x]: Build an obstacle at coordinate x.
[2, x, size]: Check if a block centered at x (extending size - 1 each way) can be built. Return "1" or "0".
Output: A binary string of all results.
👉 這題的難點在於要動態插入障礙點,還要快速判斷區間里有沒有障礙。 暴力掃描不行,數據量大就超時。
常見解法是用 有序集合:
- 插入障礙:
set.add(x),O(log n)。 - 查詢
[x-(size-1), x+(size-1)]:在集合里二分找到>= left的障礙,如果它 ≤ right 就說明衝突。
Python 可以用 bisect,Java 用 TreeSet,C++ 用 set.lower_bound。
邊界要注意:size=1 時就是單點,可能正好有障礙; 而且題目保證插入時位置沒有障礙,但 check 時要小心溢出範圍。
Problem 2: Find First Day to Reach Target Visits
Task: Given a visits array (daily website visitors), find the index i of the first day where cumulative visits reach or exceed target.
Rules: Return i if reached, else -1.
Complexity: No worse than O(n²).
👉 这题其实是送分题。思路就是前缀和:
sum = 0
for i in range(n):
sum += visits[i]
if sum >= target: return i
返回 i 即可。
容易錯的地方:
如果 target 一開始 ≤ 0,要不要直接返回 0? 一般題意下還是從 day 0 開始累計。
如果陣列空,直接返回 -1。
還有個進階思路:如果 target 有很多次查詢,可以先做前綴和陣列,然後二分搜索。 但這場考試只問一次,直接 O(n) 就好。
Problem 3: Find Lexicographically Smallest String
Task: Perform all possible prefix or suffix reversals on word and return the lexicographically smallest result.
Rules: Reverse first k 或者 last k characters。
Complexity: No worse than O(n²).
👉 這題看起來有點 trick,但其實暴力就能過:
遍曆所有前置長度 k:word[:k][::-1] + word[k:]
遍曆所有後綴長度 k:word[:-k] + word[-k:][::-1]
記錄所有結果,取字典序最小。
複雜度 O(n²),題目給的限制就允許這麼做。
容易錯的地方:
忘記 k = n 的情況(整個字串 reverse)。
Python 里直接用切片 reverse 最方便,C++ 就得寫 reverse()。
如果有多個結果字典序一樣,隨便返回其中一個就行。
Problem 4: Simulate Bubble – Popping Game
Task: 類比一個泡泡消除遊戲。 點擊一個 cell 時,消除該點及同色的 diagonal 鄰居,之後空位要下落。
Rules:
點擊空格沒反應。
消除完成後,所有列執行重力下落。
Input: 初始 bubbles board + operations。
Output: 操作完成後的最終 board(空格用 0 表示)。
👉 這是全場最複雜的一題,要同時做消除 + 重力下落。
做法:
消除部分:DFS 或 BFS,从点击点开始,只走对角线方向,遇到相同颜色的继续扩展,把这些点设为 0。
重力下落:對每列,從底部往上掃,把非 0 的數字壓到底,再把剩餘上方補 0。
容易錯的地方:
點到空格子要跳過,不然會報錯。
“同色 diagonal neighbors” 是 4 个对角方向,不包括上下左右。
重力一定要列為單位,不要一行一行處理。
整體複雜度大概 O(m × rows × cols),題目範圍下足夠。
從刷題到真場助攻,我們幫你少掉坑、多拿 Offer
這套 HRT OA 基本就是 CodeSignal 熱門題型大雜烩,難度比純演算法題更偏類比和細節。 考場上一定要注意時間分配,別在最後一題卡死。
如果你也在準備 HRT / Citadel / Jane Street 這類 quant OA 或其他北美大廠面試,其實完全不用單打獨鬥。 我們這邊可以提供 OA 代寫(HackerRank / CodeSignal / 牛客全覆蓋)、遠端語音助攻、mock interview 陪練,還會在關鍵節點幫你提醒 edge case,保證效率和正確率。