← 返回博客列表 Bloomberg 实习面试第一轮:口头推理主导的通关打法
Bloomberg

Bloomberg 实习面试第一轮:口头推理主导的通关打法

2026-07-16

Bloomberg 的软件实习面试第一轮以「边讲边写」著称:真正被打分的不是你能否跑通代码,而是你能否把思路讲清楚、拆解干净、和面试官同步节奏。这一轮 60 分钟,切成三段——先聊项目,再做两道 HackerRank 算法题,最后留几分钟反问。本文按真实面经复盘整轮流程,给出两道代表题的完整 Python 解法与复杂度分析,并补充 VO辅助 / VO代面 的实战准备路径。

第一轮流程概览

项目 内容
平台 HackerRank(无需共享屏幕)
总时长 约 60 分钟
段落 自我介绍 + 项目问答(约 10 min)→ 两道算法(约 45 min)→ 反问(几分钟)
每题时长 约 20 分钟 / 题
难度 中低(LC Easy-Medium 区间)
核心考点 口头推理、问题拆解、复杂度分析、沟通表达
是否要求运行代码 否——先讲清思路,再写代码

第一段:自我介绍 + 项目问答(约 10 分钟)

开场面试官会让你挑一个「最有意思的项目」展开讲。问题偏模板化,不会往技术细节深挖,通常围绕这几条:

这一段基本不会「挂人」,目标是让面试官快速建立对你的印象。建议提前把一个项目打磨成 2 分钟的口述版本:一句话背景 → 你的角色 → 一个具体技术难点 → 结果与反思,避免流水账。

第二段:两道 HackerRank 算法题(约 45 分钟)

这是决定成败的核心段落。两题都在 HackerRank 上完成,无需共享屏幕,每题约 20 分钟。答题节奏是这一轮的关键:

  1. 先复述题意,确认边界与输入范围;
  2. 口头讲清思路,等面试官点头认可;
  3. 再动手写代码;
  4. 写完主动报出时间与空间复杂度
  5. 面试官通常会加 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]]

思路

  1. start 排序;
  2. 线性扫描,维护当前区间 (cur_start, cur_end)
  3. 若下一区间 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 第一轮难度中低,评估的是编码基本功 + 沟通,而非算法奇技。备考重点:

oavoservice 的 VO辅助 / VO代面 支援

针对 Bloomberg 这种「口头推理主导、要求边讲边写」的一轮,oavoservice 提供:

具体方案与报价,加微信 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辅助方案

联系方式