← 返回博客列表 Bloomberg VO 2026 真题复盘|算法、系统设计、行为面三轮通关手册
Bloomberg

Bloomberg VO 2026 真题复盘|算法、系统设计、行为面三轮通关手册

2026-05-11

背景:本文整理自 2026 年 1–4 月通过 oavoservice 学员渠道获得的 BBG VO 反馈共 18 份,涵盖 SDE I/II、Quant Dev、Infra/SRE 三类岗位。一亩三分地上的 Bloomberg 面经普遍信息断裂,本文按"轮次 → 题型 → 应对模板"重新结构化。


一、Bloomberg 面试整体流程

HR Screen (30min)
    │
    ▼
Coding Round 1 (60min, 1–2 题 LC Med)
    │
    ▼
Team Match (HM Chat, 30min)
    │
    ▼
Onsite/Final (3 轮)
    ├── Algorithm + Data Structure (60min)
    ├── System Design / Project Deep Dive (60min)
    └── Behavioral + Manager Round (45min)

时长:从 HR screen 到 offer 通常 3–6 周;BBG 的 team match 是双向选择,不通过会直接 reject。


二、第一轮:算法与数据结构(60 min)

2.1 高频题型分布(2026 Q1)

题型 出现频率 典型代表
LinkedList / 设计类 ~30% LRU、LFU、双向链表 + HashMap
Heap / 调度 ~20% Top K、Meeting Rooms II、CPU 调度
Tree / Trie ~20% 序列化反序列化、Word Search II
字符串 ~15% 滑窗、最长无重复、整数转 Roman
图 / DP ~15% Word Ladder、买卖股票、岛屿数量

2.2 真题 #1:自定义 LRU + TTL

题目(变体):实现一个支持 TTL(time-to-live)的 LRU 缓存。get(key, now_ts) 若 key 已过期则视为不存在;put(key, value, now_ts, ttl) 更新或新增。

关键设计

  1. HashMap 节点 → 双向链表节点;
  2. 节点存 (key, value, expire_ts)
  3. get 时检查 expire,过期则删除并返回 -1;
  4. 不要在每次 op 都扫描全表,惰性清理即可。
class Node:
    __slots__ = ('key', 'val', 'exp', 'prev', 'next')
    def __init__(self, k=0, v=0, e=0):
        self.key, self.val, self.exp = k, v, e
        self.prev = self.next = None

class LRUTTL:
    def __init__(self, cap):
        self.cap = cap
        self.map = {}
        self.head = Node()  # most recent
        self.tail = Node()  # least recent
        self.head.next = self.tail
        self.tail.prev = self.head

    def _remove(self, node):
        node.prev.next = node.next
        node.next.prev = node.prev

    def _add_front(self, node):
        node.next = self.head.next
        node.prev = self.head
        self.head.next.prev = node
        self.head.next = node

    def get(self, key, now):
        if key not in self.map:
            return -1
        node = self.map[key]
        if node.exp <= now:
            self._remove(node)
            del self.map[key]
            return -1
        self._remove(node)
        self._add_front(node)
        return node.val

    def put(self, key, val, now, ttl):
        if key in self.map:
            node = self.map[key]
            node.val = val
            node.exp = now + ttl
            self._remove(node)
            self._add_front(node)
            return
        if len(self.map) >= self.cap:
            lru = self.tail.prev
            self._remove(lru)
            del self.map[lru.key]
        node = Node(key, val, now + ttl)
        self._add_front(node)
        self.map[key] = node

复杂度get/put 均摊 O(1)。

Bloomberg 面试官常追问

2.3 真题 #2:股票数据流的滑动中位数

题目(变体):BBG 终端持续推送股票价格 add(price),随时查询最近 k 笔的中位数 median()

核心思路:双堆(max-heap + min-heap)+ 长度为 k 的队列,超过 k 时延迟删除(lazy deletion)。

import heapq
from collections import deque, defaultdict

class RollingMedian:
    def __init__(self, k):
        self.k = k
        self.lo = []   # max-heap (negate)
        self.hi = []   # min-heap
        self.q = deque()
        self.removed = defaultdict(int)
        self.size_lo = 0
        self.size_hi = 0

    def _prune(self, heap):
        while heap and self.removed[heap[0] if heap is self.hi else -heap[0]] > 0:
            v = heap[0] if heap is self.hi else -heap[0]
            self.removed[v] -= 1
            heapq.heappop(heap)

    def add(self, price):
        # push into correct heap
        if not self.lo or price <= -self.lo[0]:
            heapq.heappush(self.lo, -price)
            self.size_lo += 1
        else:
            heapq.heappush(self.hi, price)
            self.size_hi += 1
        self.q.append(price)
        # evict oldest if exceed k
        if len(self.q) > self.k:
            old = self.q.popleft()
            self.removed[old] += 1
            if old <= -self.lo[0]:
                self.size_lo -= 1
            else:
                self.size_hi -= 1
        self._rebalance()

    def _rebalance(self):
        # ensure size_lo == size_hi or size_lo == size_hi + 1
        while self.size_lo > self.size_hi + 1:
            v = -heapq.heappop(self.lo)
            heapq.heappush(self.hi, v)
            self.size_lo -= 1
            self.size_hi += 1
            self._prune(self.lo)
        while self.size_lo < self.size_hi:
            v = heapq.heappop(self.hi)
            heapq.heappush(self.lo, -v)
            self.size_hi -= 1
            self.size_lo += 1
            self._prune(self.hi)
        self._prune(self.lo)
        self._prune(self.hi)

    def median(self):
        n = self.size_lo + self.size_hi
        if n == 0:
            return None
        if n % 2:
            return -self.lo[0]
        return (-self.lo[0] + self.hi[0]) / 2

复杂度:add/median 均摊 O(log k)。


三、第二轮:系统设计 / 项目深挖(60 min)

3.1 BBG 高频系统设计题

3.2 BBG 风格 4 步法

  1. 澄清功能 vs 非功能需求(QPS、延迟、数据规模);
  2. 从 single-box 起步,再讲水平扩展;
  3. 明确 CAP 取舍——Bloomberg 偏 latency over consistency;
  4. 闭环讲监控、降级、灰度——这是 BBG 加分项。

3.3 项目深挖 (Resume Deep Dive)

面试官会盯住简历上某一行 30 分钟,常见追问:

建议:简历每个项目准备 3 段 STAR + 1 段技术取舍 + 1 段失败教训。


四、第三轮:行为面 + Manager Round(45 min)

4.1 BBG 文化关键词

4.2 高频行为问题

  1. Tell me about a time you disagreed with a teammate.
  2. Describe a project that didn't go as planned.
  3. Why Bloomberg?(必问,不要把 BBG 说成 "another bank")
  4. What's a feature you'd add to the Bloomberg Terminal?

4.3 STAR 模板

注意:BBG 比其他银行类公司更看重好奇心——主动追问 terminal 功能、主动提技术替代方案,比"我做过 xxx"更加分。


五、整体备考时间表

周次 重点
Week 1 LC Bloomberg tag Top 100(先 Easy/Med)
Week 2 设计类专题:LRU / LFU / Hit Counter / Tweet
Week 3 系统设计 5 套:行情推送、Top-K、限流、CDC、消息总线
Week 4 行为面 + Mock VO 3 场

六、常见问题 FAQ

Q1:Bloomberg VO 一共几轮?

A:通常 1 轮 phone + 3 轮 onsite/final,整体 4–5 轮,其中 onsite 1 天内完成。

Q2:Bloomberg 用 LeetCode 还是 HackerRank?

A:第一轮 coding 多用 CoderPad / HackerRank CodePair,onsite 多在白板或 Google Doc 写代码。

Q3:Bloomberg 系统设计要画图吗?

A:要。建议用 Excalidraw 提前练 5 张图(推送、限流、订阅、消息总线、缓存)。

Q4:Bloomberg 给 SDE I 的题难吗?

A:LC Medium 居多,少量 Hard。BBG 不强调难题,但讲清 trade-off 比写对代码更重要

Q5:Bloomberg 挂了能再投吗?

A:可以,但建议等 6–12 个月,并最好换一个组(BBG 不同 team 招聘节奏差异较大)。

Q6:Bloomberg 给 H1B sponsor 吗?

A:给。BBG NYC 总部对国际员工友好,2026 春招继续 sponsor H1B。

Q7:BBG 面试可以全程 remote 吗?

A:phone + virtual onsite 都支持 remote;少数岗(trading floor)要求 onsite 现场。

Q8:Bloomberg vs Two Sigma / Citadel 哪个更难?

A:算法难度上 BBG 略低于 Citadel / TS,但 BBG 的项目深挖远比量化所深,对 SDE 的工程素养要求更高。


七、临场 Checklist


八、需要 Bloomberg VO 辅助?

我们提供 BBG 面试一对一辅助:

服务内容:


最后更新:2026-05-11 | 作者:oavoservice 面试组