如果你已经把 LC Medium 刷得差不多,但 BlackRock 的 OA 题面里满屏都是 portfolio、return_pct、AUM、benchmark 这些金融术语,仍然有可能在 90 分钟里翻车。这篇文章是给 2026 春招 + 暑期 + 全职岗位的 快攻指南:不是从零开始的题型梳理,而是把过去 30 天一亩三分地最频繁出现的 4 道高频题用「模板 + 一行业务话语翻译」直接给你。
BlackRock OA 概览(2026 最新)
| 维度 | 详情 |
|---|---|
| 平台 | HackerRank |
| 时长 | 90–120 分钟 |
| 题量 | 3–4 道(含 1 道 SQL) |
| 难度 | LC Medium,SQL 中等偏上 |
| 评分 | 自动判题 + 业务边界 case |
一亩三分地 2026 最新反馈:3 道 AC 即进 phone screen;4 道全过的薪资 offer 比例显著升高。
题型一:Portfolio 滚动收益
题目
returns[] 是日收益序列,给定窗口 k,计算每个窗口的「年化夏普近似值」mean(window) / std(window) * sqrt(252)。
Python
import math
from collections import deque
def rolling_sharpe(rets, k):
n = len(rets)
if n < k:
return []
s = sum(rets[:k])
s2 = sum(r * r for r in rets[:k])
out = []
def push(i):
nonlocal s, s2
s += rets[i]
s2 += rets[i] * rets[i]
def pop(i):
nonlocal s, s2
s -= rets[i]
s2 -= rets[i] * rets[i]
def emit():
mean = s / k
var = max(s2 / k - mean * mean, 0)
std = math.sqrt(var)
return mean / std * math.sqrt(252) if std > 1e-12 else 0.0
out.append(emit())
for i in range(k, n):
push(i)
pop(i - k)
out.append(emit())
return out
时间复杂度:O(n)。考点是滑动方差 = E[X²] − (E[X])²,注意浮点稳定。
题型二:风险敞口分桶
题目
给基金持仓 holdings[(asset, exposure)] 与分桶阈值 thresholds[](升序)。把每个 asset 分到对应桶,输出每桶总敞口 + 桶内最大单笔。
Python
import bisect
def bucket_exposure(holdings, thresholds):
n = len(thresholds) + 1
total = [0.0] * n
max_single = [0.0] * n
for asset, exp in holdings:
b = bisect.bisect_right(thresholds, abs(exp))
total[b] += exp
if abs(exp) > abs(max_single[b]):
max_single[b] = exp
return list(zip(total, max_single))
时间复杂度:O(n log m)。一亩三分地反馈:bisect_right vs bisect_left 的边界容易判错。
题型三:SQL 窗口函数 + 多表 JOIN
题目
fund(fund_id, name, asset_class) 与 daily_return(fund_id, date, return_pct)。求每个 asset_class 内最近 30 个交易日累计收益最高的前 5 只基金。
SQL
WITH recent AS (
SELECT
f.fund_id,
f.asset_class,
SUM(d.return_pct) AS r30
FROM fund f
JOIN daily_return d ON f.fund_id = d.fund_id
WHERE d.date >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY f.fund_id, f.asset_class
), ranked AS (
SELECT
fund_id,
asset_class,
r30,
DENSE_RANK() OVER (PARTITION BY asset_class ORDER BY r30 DESC) AS rk
FROM recent
)
SELECT fund_id, asset_class, r30
FROM ranked
WHERE rk <= 5
ORDER BY asset_class, r30 DESC;
关键点:DENSE_RANK 处理并列正确;用 INTERVAL '30 days' 而非 30 - now() 兼容 PostgreSQL / Snowflake。
题型四:投资组合再平衡
题目
当前权重 w[] 与目标权重 t[](和为 1),交易成本 c[i] 比例。求最少总交易成本的再平衡方案。
Python
def rebalance_cost(w, t, c):
n = len(w)
cost = 0.0
for i in range(n):
diff = abs(w[i] - t[i])
cost += diff * c[i]
return cost
这道题表面上是「绝对值之和」,但常见进阶版本会附加约束——例如不能同时买入和卖出同一资产;此时退化为 LP / DP,用一亩三分地反馈的版本看,进阶版出现率约 20%。
6 天冲刺方案
| 天数 | 任务 |
|---|---|
| D1 | 滑动窗口 + 滑动方差模板 3 道 |
| D2 | 二分 / 分桶 / 区间问题 4 道 |
| D3 | LeetCode SQL Top 50 + RANK / DENSE_RANK |
| D4 | 多表 JOIN + DATE_TRUNC + 时间窗口 5 道 |
| D5 | 一亩三分地 BlackRock 30 天帖完整刷一遍 |
| D6 | 限时 90 分钟 mock,一次性 4 题 |
FAQ
BlackRock OA 必须用 Python 吗?
可以选 Python / Java / C++,SQL 题独立。一亩三分地反馈:90% 候选人选 Python。
SQL 题用什么方言?
HackerRank 默认 PostgreSQL 兼容;建议熟悉 WITH、OVER (PARTITION BY ...)、DATE_TRUNC 三大语法。
Portfolio Manager 岗和 SDE 岗 OA 有差吗?
PM 岗 SQL + 统计题占比更高(约 60%),SDE 岗算法题占比更高(约 70%)。
没过冷却期?
通常 6 个月,跨 BLK / Aladdin / Wealth 业务线一般另算池。
正在准备 BlackRock OA / VO?
这次很高兴帮这批同学顺利通过 BlackRock OA。很多同学反馈,BlackRock OA 的 SQL 边界 case + 业务 wording 让他们在 90 分钟里方寸大乱——光刷 LC SQL 50 题是不够的,得练 BlackRock 风格的「多表 JOIN + 日期窗口 + DENSE_RANK」组合拳。
如果你也在准备 BlackRock、Vanguard、Fidelity、Citi 这类资管 / 投资科技公司的 OA,感觉一个人复习方向模糊,欢迎联系 oavoservice。我们会根据你的具体水平和弱点,提供专业的 OA 实战辅助服务和一对一指导,把 Portfolio + SQL + 再平衡题型完整打通。
👉 立即添加微信:Coding0201,获取 BlackRock 2026 高频题与备考方案。
联系方式
Email: [email protected]
Telegram: @OAVOProxy