Bloomberg 软件工程师面试实录 2026:真实面经完整复盘
Bloomberg面试软件工程师面试VO面试真实面经算法题System Design

Bloomberg 软件工程师面试实录 2026:真实面经完整复盘

Bloomberg面试第一人称完整复盘:涵盖算法Coding、系统设计、Behavioral面试。还原真实面试对话、高频题目与解题思路,附准备策略与注意事项,助你高效备战Bloomberg技术面试。

Sam · · 15 分钟阅读

公司:Bloomberg 岗位:软件工程师 (SDE) 面试形式:Virtual Onsite 结果:Pass → Offer

🌸 9.25 一面

白人 senior 面试官,挺 chill,但专业度很高。面试刚开始就从简历挖,重点放在我项目里多次提到的 Kafka。聊得非常细,他问我 producer 和 broker 之间的 ack 机制是怎么工作的,acks=all 会不会导致吞吐下降;然后问 consumer 如何防止消息丢失,我提到 offset 提交和幂等消费逻辑,他就追问如果要做到 exactly-once?我讲了幂等 producer + transactional write 的机制…

进入 coding 环节之后,给了两道中等难度题。第一题是类似rotting oranges,就是典型的 BFS 扩散问题。我先扫描所有rotting oranges的初始位置入队,然后每一轮扩散,记录时间层数。写完马上跑测试用例,一次 AC。第二题是验证括号字符串是否valid,但不是普通的三种括号,而是带 * 的变体。我用两个栈思路讲解,写完代码后解释了为什么可以在 O(n) 时间内完成。面试官挺满意没怎么 follow up。最后五分钟是我问他问题,我问他们组在用的mq是不是 Kafka,他说现在已经在迁移到 Pulsar 了。

一面整体感觉:技术氛围很正,面试官不会卡节奏,但会挖到细节。Kafka 那块要能从 producer、broker、consumer 三方视角讲清楚。

总体结构

第一轮时长 60 分钟,分三个阶段。前十分钟是自我介绍和项目交流,随后约四十五分钟完成两道算法题,最后会有一个简短的QA环节。

面试开始后,双方会先做一个简短的自我介绍。随后面试官要求我选择一个 most interesting project 进行详细讲解。我介绍了自己在上一次实习中完成的一个数据处理系统。这部分的提问比较模板化,和大部分公司很不一样,不会深挖技术细节。常见问题包括biggest challenge、如果重新做一遍会如何改进、是否有团队合作以及个人在其中的角色、为什么选择 Bloomberg 等。正常不会因为这个环节挂掉面试。

第一题:Merge Intervals with Custom Merge Rule

题目要求给定一组区间 [start, end],但与经典的合并重叠区间不同,这里定义了一个新的合并规则:如果两个区间之间的间隔小于等于 k,则也需要合并。例如输入 [[1,3],[6,8],[9,10]],当 k = 2 时,第二和第三个区间需要合并成 [6,10]。解题思路是先按照起点排序,然后线性扫描。维护一个当前合并区间 (start, end),如果下一个区间的 start <= end + k,则更新 end = max(end, next_end)。否则将当前区间加入结果并重置窗口。时间复杂度是 O(n log n),来源于排序;空间复杂度是 O(n),用于存储结果列表。面试官的 follow-up 是讨论如何在 streaming 场景下处理无限输入流。我的回答是可以使用一个平衡树或最小堆维护活动区间,每次新输入一个区间就与相邻区间尝试合并,这样能够在线完成近似的合并操作。

第二题:Longest Alternating Subarray

第二题是个高频题。给定一个int array,要求找出最长的连续子数组,使得相邻元素的差值符号交替(例如 [1,3,2,4,3] 是合法的,因为差值符号为 + - + -)我首先说明暴力法是 O(n^2),但可以用linear时间完成。具体思路是从左到右扫描数组,维护当前交替长度和上一次差值的符号。若当前差值符号不同于上一次,则长度加一;若相同则重新计数。最后取最大值。算法时间复杂度为 O(n),空间复杂度为 O(1)。面试官随后增加了约束:要求在原地(in-place)修改数组,使得前缀部分保存最长交替子数组。我的回答是可以利用双指针方法在扫描过程中同时移动写指针,用于原地覆盖。

第一轮:Phone Screen —— 纯 Coding

第一轮是标准的电话技术面,只有 coding,没有bq面。题目难度一般在 LeetCode medium 偏上,重点在于数据结构选择是否合理,以及代码是否干净利落。我当时遇到的题目是设计一个支持插入、删除、以及返回当前 Top K 高频元素的数据结构。面试官并不满足于你直接用现成库,而是希望你解释为什么选择 HashMap + Min Heap,而不是排序或者 TreeMap。时间控制在 45 分钟左右,但 coding 本身大概 30 分钟,剩下时间会追问复杂度优化、边界情况处理,以及如果数据规模上亿怎么办。Bloomberg 的 phone screen 风格很直接,没有太多寒暄,写代码的过程比较严肃。建议提前适应共享文档或在线编辑器的 coding 方式,保持边写边讲思路的节奏。

Virtual Onsite 第一轮:System Design(60 分钟高强度)

Bloomberg 的 system design 给的时间非常充裕。真正讨论设计的时间接近 60 分钟,刨除开头介绍和最后提问,大概能完整讲 50 分钟以上。这和 Meta 的 45 分钟、Amazon 的 30 分钟相比明显更深入,也意味着你必须准备更细致的设计。我遇到的题目是设计一个实时股票行情推送系统。用户可以订阅多个股票代码,当价格变化时需要毫秒级推送到客户端。刚开始需要明确需求,是偏重低延迟还是高吞吐,是全球用户还是单区域,是推送给终端用户还是内部系统。Bloomberg 很看重你对 trading 场景的理解,比如行情更新频率可能达到每秒上万次,如何避免 fan-out 风暴,如何做 backpressure 控制。设计过程中必须从 high level architecture 讲起,明确数据源、消息队列、实时处理层、缓存层以及推送层。面试官会不断追问,比如如果某个股票特别热门,订阅人数暴增怎么办?如果 websocket server 崩溃如何快速恢复?是否需要分区?如何保证顺序性?时间足够长,所以一定要准备 storage 设计、缓存策略、数据一致性、监控、限流策略、容量估算。Bloomberg 面试官很喜欢问 numbers,你需要能大概算出 QPS 和带宽。

Virtual Onsite 第二轮:Coding(两道题,60 分钟)

这一轮 coding 会有两个面试官同时在场。气氛比 phone screen 稍微 relaxed,但节奏依然紧张。一般会给两道题。并不是说必须写完两道题才算通过,有些面试官会频繁让你 dry run,或者要求你手动写 test case,这些都会消耗时间。所以节奏一定要自己掌控。我遇到的第一题是实现一个 LRU Cache,但要求支持 TTL 过期机制。也就是说不仅要支持 O(1) 的 get/put,还要自动清理过期数据。这题考察你对双向链表 + HashMap 的熟练程度,以及如何在不增加复杂度的前提下处理时间戳。

第二题是给定一个股票价格数组,设计一个 API,可以实时返回过去 N 秒内的最大价格。这个题本质上是 sliding window maximum,但场景被包装成 market data stream。面试官会追问如果是实时流而不是数组怎么办,如何在多线程环境下保证安全。Bloomberg coding 的特点是非常重视你写代码时的表达能力。他们会让你解释每一个关键选择,有时还会故意打断你,让你优化空间复杂度或者讨论 corner case。时间非常容易被拖慢,所以第一题一定要稳准快。

面试总结

成功经验

  1. 充分准备高频题:Bloomberg 的面试题目集中在经典算法和数据结构上,提前准备 LeetCode 高频题非常有必要。
  2. Behavioral 故事要准备充分:使用 STAR 框架准备 5-8 个核心故事,覆盖 Leadership、Conflict、Innovation 等场景。
  3. 沟通表达要清晰:解题过程中要主动与面试官沟通思路,不要闷头写代码。
  4. 边界条件要主动讨论:面试官很看重候选人对 edge cases 的考虑。

面试注意事项

时间管理:每轮 45-60 分钟,需要合理分配时间给题目、讨论和 follow-up 问题。

技术深度:Bloomberg 的面试官对技术细节要求很高,边界条件、性能优化、系统设计能力都是考察重点。


推荐阅读


💡 需要面试辅导?

如果你对准备技术面试感到迷茫,或者想要个性化的面试指导和简历优化,欢迎联系 Interview Coach Pro 获取一对一辅导服务。

👉 联系我们 获取专属面试准备方案


📝 最新面试经验补充(2025-2026年面经)

🌸 9.25 一面

白人 senior 面试官,挺 chill,但专业度很高。面试刚开始就从简历挖,重点放在我项目里多次提到的 Kafka。聊得非常细,他问我 producer 和 broker 之间的 ack 机制是怎么工作的,acks=all 会不会导致吞吐下降;然后问 consumer 如何防止消息丢失,我提到 offset 提交和幂等消费逻辑,他就追问如果要做到 exactly-once?我讲了幂等 producer + transactional write 的机制… 整个 Kafka 这段聊了十多分钟。 进入 coding 环节之后,给了两道中等难度题。第一题是类似rotting oranges,就是典型的 BFS 扩散问题。我先扫描所有rotting oranges的初始位置入队,然后每一轮扩散,记录时间层数。写完马上跑测试用例,一次 AC。第二题是验证括号字符串是否valid,但不是普通的三种括号,而是带 * 的变体。我用两个栈思路讲解,写完代码后解释了为什么可以在 O(n) 时间内完成。面试官挺满意没怎么 follow up。最后五分钟是我问他问题,我问他们组在用的mq是不是 Kafka,他说现在已经在迁移到 Pulsar 了。 一面整体感觉:技术氛围很正,面试官不会卡节奏,但会挖到细节。Kafka 那块要能从 producer、broker、consumer 三方视角讲清楚。

Virtual Onsite 第一轮:System Design(60 分钟高强度)

Bloomberg 的 system design 给的时间非常充裕。真正讨论设计的时间接近 60 分钟,刨除开头介绍和最后提问,大概能完整讲 50 分钟以上。这和 Meta 的 45 分钟、Amazon 的 30 分钟相比明显更深入,也意味着你必须准备更细致的设计。我遇到的题目是设计一个实时股票行情推送系统。用户可以订阅多个股票代码,当价格变化时需要毫秒级推送到客户端。刚开始需要明确需求,是偏重低延迟还是高吞吐,是全球用户还是单区域,是推送给终端用户还是内部系统。Bloomberg 很看重你对 trading 场景的理解,比如行情更新频率可能达到每秒上万次,如何避免 fan-out 风暴,如何做 backpressure 控制。设计过程中必须从 high level architecture 讲起,明确数据源、消息队列、实时处理层、缓存层以及推送层。面试官会不断追问,比如如果某个股票特别热门,订阅人数暴增怎么办?如果 websocket server 崩溃如何快速恢复?是否需要分区?如何保证顺序性?时间足够长,所以一定要准备 storage 设计、缓存策略、数据一致性、监控、限流策略、容量估算。Bloomberg 面试官很喜欢问 numbers,你需要能大概算出 QPS 和带宽。

Virtual Onsite 第二轮:Coding(两道题,60 分钟)

这一轮 coding 会有两个面试官同时在场。气氛比 phone screen 稍微 relaxed,但节奏依然紧张。一般会给两道题。并不是说必须写完两道题才算通过,有些面试官会频繁让你 dry run,或者要求你手动写 test case,这些都会消耗时间。所以节奏一定要自己掌控。我遇到的第一题是实现一个 LRU Cache,但要求支持 TTL 过期机制。也就是说不仅要支持 O(1) 的 get/put,还要自动清理过期数据。这题考察你对双向链表 + HashMap 的熟练程度,以及如何在不增加复杂度的前提下处理时间戳。 第二题是给定一个股票价格数组,设计一个 API,可以实时返回过去 N 秒内的最大价格。这个题本质上是 sliding window maximum,但场景被包装成 market data stream。面试官会追问如果是实时流而不是数组怎么办,如何在多线程环境下保证安全。Bloomberg coding 的特点是非常重视你写代码时的表达能力。他们会让你解释每一个关键选择,有时还会故意打断你,让你优化空间复杂度或者讨论 corner case。时间非常容易被拖慢,所以第一题一定要稳准快。

第一题:Merge Intervals with Custom Merge Rule

题目要求给定一组区间 [start, end],但与经典的合并重叠区间不同,这里定义了一个新的合并规则:如果两个区间之间的间隔小于等于 k,则也需要合并。例如输入 [[1,3],[6,8],[9,10]],当 k = 2 时,第二和第三个区间需要合并成 [6,10]。解题思路是先按照起点排序,然后线性扫描。维护一个当前合并区间 (start, end),如果下一个区间的 start <= end + k,则更新 end = max(end, next_end)。否则将当前区间加入结果并重置窗口。时间复杂度是 O(n log n),来源于排序;空间复杂度是 O(n),用于存储结果列表。面试官的 follow-up 是讨论如何在 streaming 场景下处理无限输入流。我的回答是可以使用一个平衡树或最小堆维护活动区间,每次新输入一个区间就与相邻区间尝试合并,这样能够在线完成近似的合并操作。

第一轮:Phone Screen —— 纯 Coding

第一轮是标准的电话技术面,只有 coding,没有bq面。题目难度一般在 LeetCode medium 偏上,重点在于数据结构选择是否合理,以及代码是否干净利落。我当时遇到的题目是设计一个支持插入、删除、以及返回当前 Top K 高频元素的数据结构。面试官并不满足于你直接用现成库,而是希望你解释为什么选择 HashMap + Min Heap,而不是排序或者 TreeMap。时间控制在 45 分钟左右,但 coding 本身大概 30 分钟,剩下时间会追问复杂度优化、边界情况处理,以及如果数据规模上亿怎么办。Bloomberg 的 phone screen 风格很直接,没有太多寒暄,写代码的过程比较严肃。建议提前适应共享文档或在线编辑器的 coding 方式,保持边写边讲思路的节奏。

第二题:Longest Alternating Subarray

第二题是个高频题。给定一个int array,要求找出最长的连续子数组,使得相邻元素的差值符号交替(例如 [1,3,2,4,3] 是合法的,因为差值符号为 + - + -)我首先说明暴力法是 O(n^2),但可以用linear时间完成。具体思路是从左到右扫描数组,维护当前交替长度和上一次差值的符号。若当前差值符号不同于上一次,则长度加一;若相同则重新计数。最后取最大值。算法时间复杂度为 O(n),空间复杂度为 O(1)。面试官随后增加了约束:要求在原地(in-place)修改数组,使得前缀部分保存最长交替子数组。我的回答是可以利用双指针方法在扫描过程中同时移动写指针,用于原地覆盖。

总体结构

第一轮时长 60 分钟,分三个阶段。前十分钟是自我介绍和项目交流,随后约四十五分钟完成两道算法题,最后会有一个简短的QA环节。 面试开始后,双方会先做一个简短的自我介绍。随后面试官要求我选择一个 most interesting project 进行详细讲解。我介绍了自己在上一次实习中完成的一个数据处理系统。这部分的提问比较模板化,和大部分公司很不一样,不会深挖技术细节。常见问题包括biggest challenge、如果重新做一遍会如何改进、是否有团队合作以及个人在其中的角色、为什么选择 Bloomberg 等。正常不会因为这个环节挂掉面试。

准备好拿下下一次面试了吗?

获取针对你的目标岗位和公司的个性化辅导方案。

联系我们