Bloomberg 的实习面试节奏适中,题目难度中等偏下,但非常看重思维组织、问题拆解和口头表达,而不是代码执行结果。第一轮 60 分钟,分三段:开场项目介绍、两道算法题、简短 QA。两道题都在 HackerRank 上完成,但不要求运行代码——重点是 verbal reasoning:先讲清楚思路,得到面试官认可后再动手写。下面完整复盘。
一、Bloomberg 实习面试概览
| 维度 | 详情 |
|---|---|
| 时长 | 60 分钟 |
| 平台 | HackerRank(不要求 share screen) |
| 结构 | 10 min 项目交流 + 45 min 两道题 + QA |
| 难度 | 中等偏下,重推理与表达 |
| 要求 | 先讲思路再写码,写完报复杂度 |
开场是简短自我介绍 + 选一个 most interesting project 详细讲。Bloomberg 这部分提问很模板化、不深挖技术细节:biggest challenge、如果重做会怎么改进、团队协作中你的角色、为什么选 Bloomberg。正常不会因为这个环节挂掉。
二、题 1:带自定义间隔规则的合并区间
给定一组区间
[start, end],与经典合并重叠区间不同,这里定义新规则:如果两个区间之间的间隔 小于等于 k,也需要合并。例如输入[[1,3],[6,8],[9,10]],当k = 2时,第二、三个区间合并成[6,10]。
思路转化:经典合并区间的判定是 next_start <= end,这题把判定放宽成 next_start <= end + k。先按起点排序,再线性扫描,维护当前合并区间 (start, end)。
def merge_with_gap(intervals, k):
if not intervals:
return []
intervals.sort(key=lambda x: x[0])
res = []
cs, ce = intervals[0]
for s, e in intervals[1:]:
if s <= ce + k: # 间隔 <= k 也合并
ce = max(ce, e)
else:
res.append([cs, ce])
cs, ce = s, e
res.append([cs, ce])
return res
时间复杂度:O(n log n)(排序主导);空间复杂度:O(n)(结果列表)。
Follow-up:streaming 场景如何处理无限输入流? 不能先全部排序。我的回答是用一个 平衡树 / 最小堆维护活跃区间,每次新进一个区间就尝试与相邻区间合并,从而在线完成近似合并。关键在于说清楚「为什么离线排序在 streaming 下不可行」。
三、题 2:最长交替子数组
给定一个整数数组,找出最长的连续子数组,使得相邻元素的差值符号交替。例如
[1,3,2,4,3]合法,因为差值符号是+ - + -。
思路转化:暴力是 O(n²),但可以 O(n) 一遍扫描:维护当前交替长度,以及上一次差值的符号。若当前差值符号与上一次不同,长度 +1;若相同,从当前对重新计数。
def longest_alternating(nums):
n = len(nums)
if n < 2:
return n
best = 1
cur = 1
prev_sign = 0 # 0 表示尚未确定
for i in range(1, n):
diff = nums[i] - nums[i - 1]
if diff == 0:
cur = 1 # 相等直接断开
prev_sign = 0
continue
sign = 1 if diff > 0 else -1
if prev_sign == 0 or sign == prev_sign:
cur = 2 # 重新以这一对开头
else:
cur += 1 # 符号交替,延长
prev_sign = sign
best = max(best, cur)
return best
时间复杂度:O(n);空间复杂度:O(1)。
Follow-up:原地修改,让前缀部分保存最长交替子数组。 我的回答是用 双指针:扫描的同时用写指针覆盖原数组,把找到的最长交替段移到前缀。讲清楚读写指针不会冲突即可。
四、Bloomberg 实习面试评分逻辑
| 维度 | 面试官在看什么 |
|---|---|
| 思路清晰度 | 写码前能否把算法逻辑讲明白 |
| 复杂度意识 | 写完主动报时间 / 空间复杂度及来源 |
| Follow-up 反应 | streaming / 原地修改等延展能否当场推 |
| 沟通表达 | 全程口头 reasoning,不闷头写 |
整体节奏适中,题目难度中等偏下,更像在评估编程基础与沟通能力。两道题都不要求运行,所以表达比 AC 更重要。
五、备考建议
- 把「合并区间」练到能随口改规则:重叠、间隔 k、带权频次都要会变。
- 一遍扫描类题(最长交替、最长递增段)练熟 O(n) 状态维护。
- 每写完一题,主动报复杂度并说明来源,这是 Bloomberg 的硬性加分项。
- 准备 1-2 个 streaming / 原地 的延展回答,follow-up 几乎必问。
FAQ
Q1:Bloomberg 实习面试用什么平台?几轮?
第一轮在 HackerRank 上完成,60 分钟,含项目交流 + 两道算法题 + QA,且不要求 share screen。后续还会有更多轮次,但第一轮是过滤基础能力与沟通的关键 gate。
Q2:Bloomberg 实习题难吗?
中等偏下。考点集中在合并区间、双指针、一遍扫描这类高频基础题,很少出 trick。难点不在算法本身,而在 follow-up(streaming、原地修改)和口头表达是否清晰。
Q3:不要求运行代码,那评分看什么?
看你写码前是否把思路讲清楚、写完是否主动报复杂度、follow-up 能否当场推导。Bloomberg 明确更看重推理过程与沟通,而非 AC 结果。如果想在这块拿稳分,我们提供 VO 辅助 / VO 代面 / 面试辅助 的实时对接,帮你把推理和表达练到位。
Q4:项目介绍环节会挂人吗?
基本不会。Bloomberg 的项目提问很模板化(biggest challenge、如何改进、你的角色、为什么 Bloomberg),不深挖技术细节,准备一个能讲清楚 challenge 与改进的项目即可。
正在准备 Bloomberg 实习面试?
Bloomberg 考的是基础题的熟练度 + 口头推理 + follow-up 应变。如果你想要这两道真题的限时陪练、合并区间 / 一遍扫描的变种专项,或完整面试流程的复盘,欢迎交流:发岗位 JD 先做题型预测,再排练习计划,也支持 VO 辅助 / VO 代面 / 面试辅助 的实时对接。
立即添加微信 Coding0201,获取 Bloomberg 实习真题与陪练。
联系方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy