Bloomberg 的软件实习面试第一轮以「边讲边写」著称:真正被打分的不是你能否跑通代码,而是你能否把思路讲清楚、拆解干净、和面试官同步节奏。这一轮 60 分钟,切成三段——先聊项目,再做两道 HackerRank 算法题,最后留几分钟反问。本文按真实面经复盘整轮流程,给出两道代表题的完整 Python 解法与复杂度分析,并补充 VO辅助 / VO代面 的实战准备路径。
第一轮流程概览
| 项目 | 内容 |
|---|---|
| 平台 | HackerRank(无需共享屏幕) |
| 总时长 | 约 60 分钟 |
| 段落 | 自我介绍 + 项目问答(约 10 min)→ 两道算法(约 45 min)→ 反问(几分钟) |
| 每题时长 | 约 20 分钟 / 题 |
| 难度 | 中低(LC Easy-Medium 区间) |
| 核心考点 | 口头推理、问题拆解、复杂度分析、沟通表达 |
| 是否要求运行代码 | 否——先讲清思路,再写代码 |
第一段:自我介绍 + 项目问答(约 10 分钟)
开场面试官会让你挑一个「最有意思的项目」展开讲。问题偏模板化,不会往技术细节深挖,通常围绕这几条:
- 这个项目最大的挑战是什么?
- 如果重做一次,你会改进哪里?
- 团队协作里你负责哪块?
- 为什么选 Bloomberg?
这一段基本不会「挂人」,目标是让面试官快速建立对你的印象。建议提前把一个项目打磨成 2 分钟的口述版本:一句话背景 → 你的角色 → 一个具体技术难点 → 结果与反思,避免流水账。
第二段:两道 HackerRank 算法题(约 45 分钟)
这是决定成败的核心段落。两题都在 HackerRank 上完成,无需共享屏幕,每题约 20 分钟。答题节奏是这一轮的关键:
- 先复述题意,确认边界与输入范围;
- 口头讲清思路,等面试官点头认可;
- 再动手写代码;
- 写完主动报出时间与空间复杂度;
- 面试官通常会加 1-2 个追问约束,顺着继续推理即可。
不要求跑代码——思路组织、拆解、口头表达 的权重远高于执行结果。
题目一:自定义间隔规则的区间合并
题意
给定若干区间 [start, end]。经典题只合并相互重叠的区间,这里加一条规则:如果两个区间之间的间隔 ≤ k,也要合并。
例:[[1,3],[6,8],[9,10]],k=2 → [6,8] 与 [9,10] 间隔为 1(≤ 2),合并成 [6,10],结果 [[1,3],[6,10]]。
思路
- 按
start排序; - 线性扫描,维护当前区间
(cur_start, cur_end); - 若下一区间
next_start <= cur_end + k,则cur_end = max(cur_end, next_end);否则把当前区间入结果,重置为新区间。
Python 解法
def merge_with_gap(intervals, k):
"""按 start 排序后线性扫描;间隔 <= k 视为可合并。"""
if not intervals:
return []
# 先按起点排序,保证合并只需向右看一步
intervals.sort(key=lambda x: x[0])
merged = [list(intervals[0])]
for start, end in intervals[1:]:
cur = merged[-1]
if start <= cur[1] + k: # 间隔 <= k,合并
cur[1] = max(cur[1], end)
else: # 间隔过大,另起一个区间
merged.append([start, end])
return merged
# 快速自测
print(merge_with_gap([[1, 3], [6, 8], [9, 10]], 2)) # [[1, 3], [6, 10]]
时间复杂度:O(n log n)(排序主导) 空间复杂度:O(n)(结果数组)
常见追问
如果输入是流式 / 无限数据、区间陆续到达该怎么办?此时无法先排序。可维护一棵平衡树 / 有序结构(或按到达顺序用最小堆管理活跃区间),每来一个新区间就定位其左右邻居,判断间隔是否 ≤ k 并就地合并,单次操作 O(log n)。
题目二:最长交替差分子数组
题意
给定整数数组,找出最长连续子数组,使得相邻元素之差的符号交替出现。
例:[1,3,2,4,3],差分为 + - + -,全程交替,整段长度 5。
思路
暴力 O(n²) 枚举起点即可,但最优是一次线性扫描:从左到右维护「当前交替长度」和「上一个差的符号」;若当前差的符号与上一个不同 → 长度 +1;若相同 → 从当前这对元素重新计数;若差为 0 → 断开重置。
Python 解法
def longest_alternating_subarray(nums):
"""线性扫描,维护当前交替长度与上一差分符号。"""
n = len(nums)
if n < 2:
return n
best = 1
cur = 1 # 当前交替子数组的元素个数
last_sign = 0 # 0 表示尚无有效符号
for i in range(1, n):
diff = nums[i] - nums[i - 1]
if diff == 0: # 相等则断开
cur, last_sign = 1, 0
continue
sign = 1 if diff > 0 else -1
if last_sign != 0 and sign != last_sign:
cur += 1 # 符号交替,延长
else:
cur = 2 # 同号或首个差,从这对元素重新起算
last_sign = sign
best = max(best, cur)
return best
# 快速自测
print(longest_alternating_subarray([1, 3, 2, 4, 3])) # 5
时间复杂度:O(n) 空间复杂度:O(1)
常见追问
要求就地改写数组,使其前缀恰好存放最长交替子数组。可用双指针写指针:扫描时同时维护一个写入下标 w,把当前最长交替段的元素依次写回数组前段,最终前 best 个位置即为答案,额外空间 O(1)。
第三段:反问(几分钟)
留几分钟给你提问。可以问团队做的产品线、实习生的日常项目、Bloomberg 的技术栈演进等。表现出对具体业务的兴趣,比问「我表现怎么样」更加分。
备考策略
Bloomberg 第一轮难度中低,评估的是编码基本功 + 沟通,而非算法奇技。备考重点:
- 练「边讲边写」:找人或对着录像,强制自己先讲完思路再敲键盘;
- 复杂度必答:每写完一题都主动报时间 / 空间复杂度,形成肌肉记忆;
- 追问预演:区间题练「流式输入」,数组题练「就地改写」,把常见 follow-up 提前跑一遍;
- 项目 2 分钟脚本:把最拿手的项目压成结构化口述版本。
oavoservice 的 VO辅助 / VO代面 支援
针对 Bloomberg 这种「口头推理主导、要求边讲边写」的一轮,oavoservice 提供:
- VO辅助:按真实节奏出 HackerRank 风格题,mentor 全程听你口述思路并即时纠偏,重点打磨「先讲后写 + 复杂度收尾」的表达闭环;
- VO代面:面试当天实时协作陪练,针对区间合并、交替子数组这类中低难度题的临场组织与追问应对提供支援;
- 项目问答打磨:把你的核心项目压成可复用的 2 分钟脚本,覆盖挑战 / 改进 / 分工 / why Bloomberg 四问。
具体方案与报价,加微信 Coding0201 沟通。
FAQ
Bloomberg 第一轮需要跑通代码吗?
不需要。这一轮在 HackerRank 上完成但不要求运行,面试官更看重你能否清晰讲出思路、拆解问题并给出复杂度。写出正确、可读的代码即可。
第一段项目问答会挂人吗?
通常不会。项目问答偏模板化(最大挑战、如何改进、团队分工、why Bloomberg),目的是建立第一印象。准备一个 2 分钟的结构化口述版本就足够。
两道算法题难度如何?
中低,大致落在 LC Easy-Medium 区间,考察编码基本功而非算法难题。真正拉开差距的是口头推理与沟通:先讲清思路、拿到面试官认可再动手。
面试官加的追问一般是什么方向?
多是加约束。比如区间合并会问「输入是流式 / 无限怎么办」,交替子数组会问「能否就地改写数组」。顺着原思路往「在线处理」或「空间优化」方向推即可。
VO辅助 / VO代面 对这一轮有用吗?
有用。这一轮吃「边讲边写」的表达节奏,VO辅助 可用 mock 把这套节奏练成肌肉记忆;VO代面 则在面试当天提供实时组织与追问应对的临场支援,尤其适合容易「一紧张就闷头写」的同学。
正在准备 Bloomberg 实习 VO?
oavoservice 长期跟踪 Bloomberg 各轮真题与出题风格,mentor 熟悉其「口头推理主导」的评分逻辑,可提供 HackerRank 风格限时模拟、项目问答脚本打磨、追问应对演练等 VO辅助 服务。
👉 立即添加微信 Coding0201,获取 Bloomberg 高频题与 VO辅助方案。
联系方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy