← 返回博客列表 HRT OA 编程 + 数学题指南:概率、期望与算法实现
Hudson River Trading

HRT OA 编程 + 数学题指南:概率、期望与算法实现

2026-06-12

和纯算法公司不同,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)。这类题考的是把业务规则准确翻译成代码,别漏掉持仓估值这一步。

五、备考策略


FAQ

Q1:HRT OA 数学题有多难?

多为本科概率统计水平,但限时紧、强调熟练度。重点是期望、条件概率、组合,靠平时积累而非临场硬推。

Q2:编程和数学哪个更重要?

两手都要硬。数学筛掉数理直觉弱的,编程筛掉工程能力弱的。量化岗尤其看重数学,但编程过不了同样出局。

Q3:心算来不及怎么办?

把高频公式(几何分布 E=1/p、线性期望、组合互补)背熟成肌肉记忆,平时用计时器练,把推导步数压到最少。

Q4:没有量化背景能准备吗?

可以。系统过一遍概率期望 + 组合,再配合数组/模拟编程题专项,按周计划推进,多数 CS 背景都能补齐数理短板。


正在准备 HRT OA?

HRT OA 是数学 + 编程双线,节奏快。oavoservice 提供 HRT 全流程陪练:概率期望 / 组合心算题库限时训练,做市模拟 / 数组编程题专项,按量化岗做题型预测与时间管理打磨。教练含量化研究与大厂工程背景,帮你把数理直觉和代码稳定度同时拉满。

立即添加微信 Coding0201获取 HRT 真题与陪练

联系方式