← 返回博客列表 BlackRock OA 2026 实战指南|Portfolio + SQL 题型快攻
BlackRock

BlackRock OA 2026 实战指南|Portfolio + SQL 题型快攻

2026-05-23

如果你已经把 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 兼容;建议熟悉 WITHOVER (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