← 返回博客列表 Bloomberg 实习面试复盘:带间隔合并区间 + 最长交替子数组,60 分钟两道题
Bloomberg

Bloomberg 实习面试复盘:带间隔合并区间 + 最长交替子数组,60 分钟两道题

2026-06-06

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 更重要。

五、备考建议


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 实习真题与陪练

联系方式