BlackRock 是全球最大的资产管理公司,管理资产规模超过 10 万亿美元。作为金融科技领域的巨头,BlackRock 的 OA 既考察标准的编程能力,也融入了金融数据处理和投资组合优化等业务场景。本文基于最新面经,全面拆解 BlackRock OA 的题型分布与备考策略。
BlackRock OA 难度分布
根据近期面经统计,BlackRock OA 的难度分布如下:
| 难度 | 占比 | 说明 |
|---|---|---|
| Easy | 43% | 基础数组/字符串操作 |
| Medium | 50% | 图论、DP、模拟 |
| Hard | 7% | 复杂优化问题 |
OA 基本信息
| 维度 | 详情 |
|---|---|
| 平台 | HackerRank |
| 时长 | 90 分钟 |
| 题量 | 2-3 道编程题 + 可能的 SQL 题 |
| 语言 | Java, Python, C++ |
| 考察重点 | 数组、图论、DP、SQL |
题型一:数组与字符串操作
典型题目:Happy Number 模拟
给定一个正整数,判断它是否为 Happy Number。一个 Happy Number 是指:将该数替换为其各位数字的平方和,重复这个过程,最终结果为 1。
def is_happy_number(n):
seen = set()
while n != 1 and n not in seen:
seen.add(n)
n = sum(int(d) ** 2 for d in str(n))
return n == 1
def count_happy_numbers(start, end):
"""统计区间 [start, end] 内的 Happy Number 数量"""
count = 0
for num in range(start, end + 1):
if is_happy_number(num):
count += 1
return count
典型题目:投资组合收益计算
给定一组股票的每日收益率和持仓权重,计算投资组合在给定时间段内的累计收益。
def portfolio_return(daily_returns, weights, start_day, end_day):
"""
daily_returns: [[stock1_day1, stock2_day1, ...], ...]
weights: [w1, w2, ...]
"""
cumulative = 1.0
for day in range(start_day, end_day + 1):
daily_portfolio_return = sum(
daily_returns[day][i] * weights[i]
for i in range(len(weights))
)
cumulative *= (1 + daily_portfolio_return)
return cumulative - 1
题型二:图论问题
典型题目:Modified Graph Problem
给定一个无向图,找到从节点 A 到节点 B 的最短路径,但有一个限制:路径中不能连续经过两条权重相同的边。
from collections import defaultdict
import heapq
def shortest_path_no_repeat_weight(n, edges, start, end):
graph = defaultdict(list)
for u, v, w in edges:
graph[u].append((v, w))
graph[v].append((u, w))
# state: (distance, node, last_edge_weight)
dist = defaultdict(lambda: float('inf'))
dist[(start, -1)] = 0
pq = [(0, start, -1)] # (dist, node, last_weight)
while pq:
d, u, last_w = heapq.heappop(pq)
if u == end:
return d
if d > dist[(u, last_w)]:
continue
for v, w in graph[u]:
if w != last_w: # 不能连续经过相同权重的边
new_dist = d + w
if new_dist < dist[(v, w)]:
dist[(v, w)] = new_dist
heapq.heappush(pq, (new_dist, v, w))
return -1
时间复杂度:O(E * W * log(V * W)),W 为不同权重数
空间复杂度:O(V * W)
题型三:动态规划
典型题目:资产配置优化
给定 n 种资产,每种资产有预期收益率和风险值。在总风险不超过阈值 T 的约束下,选择资产组合使得总收益最大化。
def max_return_with_risk_limit(assets, risk_limit):
"""
assets: [(return_rate, risk_value)]
risk_limit: 最大可承受风险
"""
n = len(assets)
# 0-1 背包变体
dp = [0] * (risk_limit + 1)
for ret, risk in assets:
for r in range(risk_limit, risk - 1, -1):
dp[r] = max(dp[r], dp[r - risk] + ret)
return dp[risk_limit]
典型题目:交易费用最小化
给定一系列必须执行的交易,每笔交易可以选择不同的执行方式(不同费率和延迟),在满足所有交易截止时间的前提下,最小化总费用。
def min_transaction_cost(transactions, methods):
"""
transactions: [(deadline, volume)]
methods: [(cost_rate, delay)]
"""
transactions.sort(key=lambda x: x[0])
n = len(transactions)
dp = [float('inf')] * n
for i, (deadline, volume) in enumerate(transactions):
for cost_rate, delay in methods:
if delay <= deadline:
cost = volume * cost_rate
if i == 0:
dp[i] = min(dp[i], cost)
else:
dp[i] = min(dp[i], dp[i-1] + cost)
return dp[-1] if dp[-1] != float('inf') else -1
题型四:SQL 查询
BlackRock 部分岗位的 OA 会包含 SQL 题目,常见考点:
- 窗口函数:计算滚动收益率、排名
- JOIN 操作:多表关联查询投资组合数据
- 聚合分析:按时间段统计交易量
-- 示例:计算每只基金过去30天的滚动收益率排名
SELECT
fund_id,
fund_name,
rolling_return_30d,
RANK() OVER (ORDER BY rolling_return_30d DESC) as return_rank
FROM (
SELECT
f.fund_id,
f.fund_name,
(p_end.nav / p_start.nav - 1) as rolling_return_30d
FROM funds f
JOIN prices p_end ON f.fund_id = p_end.fund_id
AND p_end.date = CURRENT_DATE
JOIN prices p_start ON f.fund_id = p_start.fund_id
AND p_start.date = CURRENT_DATE - INTERVAL '30 days'
) sub;
备考路线图
第一周:基础巩固
- 数组/字符串操作(LeetCode Easy 20 题)
- 基础 SQL 查询(窗口函数、JOIN)
第二周:核心算法
- 图论:BFS/DFS、Dijkstra(LeetCode Medium 15 题)
- 动态规划:背包问题、区间 DP
第三周:金融场景
- 理解基本金融概念(NAV、收益率、风险度量)
- 练习金融场景包装的算法题
FAQ
BlackRock OA 的难度如何?
BlackRock OA 整体难度适中,约 43% Easy + 50% Medium + 7% Hard。相比纯科技公司(如 Google、Meta),算法难度略低,但会融入金融业务场景,需要一定的领域知识。
BlackRock OA 会考 SQL 吗?
部分岗位(尤其是 Data Engineer、Quant Analyst)的 OA 会包含 SQL 题目,主要考察窗口函数、复杂 JOIN 和聚合查询。SWE 岗位通常只有编程题。
BlackRock 的面试流程是怎样的?
典型流程为:OA → HR 电话面 → 技术面试(1-2 轮)→ Super Day(含行为面试和技术深度面试)。从投递到 offer 通常需要 4-6 周。
BlackRock 看重什么技术栈?
BlackRock 主要使用 Java 和 Python,部分团队使用 Scala。面试中需要展示对 OOP、数据结构、算法的扎实理解,以及对金融产品的基本认知。
如何准备 BlackRock 的金融场景题?
建议了解以下基本概念:NAV(净值)、收益率计算、风险度量(VaR、Sharpe Ratio)、投资组合理论基础。不需要深入的金融工程知识,但要能理解题目中的业务背景。
正在准备 BlackRock OA?
oavoservice 提供专业的金融科技公司 OA/VO 辅助服务,覆盖 BlackRock、Goldman Sachs、JP Morgan、Two Sigma 等顶级机构。
👉 立即添加微信:Coding0201,获取真题与辅助方案。
联系方式
Email: [email protected]
Telegram: @OAVOProxy