和純演算法公司不同,Hudson River Trading(HRT)這類量化公司在 OA 裡會編程 + 數學雙線考察:既要寫程式碼,也要快速做機率、期望、心算推理。這篇按 oavoservice 學員的 HRT OA 複盤,把數學題和編程題分開講清楚,附推導和 Python 解法,給量化求職、刷題備考的同學一份系統參考。
一、HRT OA 雙線結構
| 模組 | 形式 | 重點 |
|---|---|---|
| 數學題 | 選擇 / 填空 | 機率、期望、組合、心算 |
| 編程題 | CodeSignal 編碼 | 陣列、模擬、貪婪 |
量化職看的是數理直覺 + 工程實作兩手都要硬。數學題往往限時很緊,靠的是熟練而不是臨場推半天。
二、數學題一:拋硬幣期望
題目
一枚公平硬幣,連續拋直到第一次出現正面,求期望拋擲次數。
推導
設期望為 E。第一次拋:1/2 機率正面(1 次結束),1/2 機率反面(已用 1 次,回到初始狀態):
E = 1/2 · 1 + 1/2 · (1 + E)
E = 1 + 1/2 · E → E = 2
答案:期望 2 次。 這是幾何分布 E = 1/p 的直接應用(p = 1/2)。
三、數學題二:撲克機率
題目
一副 52 張標準牌,隨機抽 5 張,求恰好兩張 A 的機率。
推導
從 4 張 A 選 2 張,從其餘 48 張選 3 張,除以總組合:
from math import comb
def prob_two_aces():
favorable = comb(4, 2) * comb(48, 3)
total = comb(52, 5)
return favorable / total # ≈ 0.0399
print(round(prob_two_aces(), 4)) # 0.0399
約 3.99%。組合題要熟 C(n,k) 的「選取 + 互補」套路。
四、編程題:做市盈虧模擬
題目
給一串買賣指令 (side, price, qty),模擬做市帳戶最終現金與持倉盈虧。買入花現金加持倉,賣出收現金減持倉。
思路
線性掃描,維護現金與持倉;最後用收盤價對持倉估值,得到總盈虧。
def simulate_pnl(orders, close_price):
cash = 0
position = 0
for side, price, qty in orders:
if side == "BUY":
cash -= price * qty
position += qty
else: # SELL
cash += price * qty
position -= qty
# 用收盤價對剩餘持倉估值
return cash + position * close_price
時間複雜度:O(n)。空間複雜度:O(1)。這類題考的是把業務規則準確翻譯成程式碼,別漏掉持倉估值這一步。
五、備考策略
- 數學:刷透期望(幾何/線性期望)、條件機率、組合、貝氏,練到心算秒出。
- 編程:陣列、前綴和、模擬、貪婪為主,限時寫乾淨程式碼。
- 推薦 LeetCode:53(最大子陣列)、238(除自身乘積)、56(合併區間)打底。
FAQ
Q1:HRT OA 數學題有多難?
多為大學機率統計水平,但限時緊、強調熟練度。重點是期望、條件機率、組合,靠平時積累而非臨場硬推。
Q2:編程和數學哪個更重要?
兩手都要硬。數學篩掉數理直覺弱的,編程篩掉工程能力弱的。量化職尤其看重數學,但編程過不了同樣出局。
Q3:心算來不及怎麼辦?
把高頻公式(幾何分布 E=1/p、線性期望、組合互補)背熟成肌肉記憶,平時用計時器練,把推導步數壓到最少。
Q4:沒有量化背景能準備嗎?
可以。系統過一遍機率期望 + 組合,再配合陣列/模擬編程題專項,按週計劃推進,多數 CS 背景都能補齊數理短板。
正在準備 HRT OA?
HRT OA 是數學 + 編程雙線,節奏快。oavoservice 提供 HRT 全流程陪練:機率期望 / 組合心算題庫限時訓練,做市模擬 / 陣列編程題專項,按量化職做題型預測與時間管理打磨。教練含量化研究與大廠工程背景,幫你把數理直覺和程式碼穩定度同時拉滿。
立即加入微信 Coding0201,獲取 HRT 真題與陪練。
聯絡方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy