背景:本文整理自 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) 更新或新增。
關鍵設計:
- HashMap 節點 → 雙向鏈表節點;
- 節點儲存
(key, value, expire_ts); get時檢查 expire,過期則刪除並回傳 -1;- 不要在每次 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()
self.tail = Node()
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 面試官常追問:
- 若 TTL 大小相近,能否用最小堆批次清理?
- 多執行緒下如何加鎖?(提示:雙向鏈表 + 單寫多讀 + 分段鎖)
- 若 cap = 10^8,記憶體怎麼辦?(分層快取)
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 = []
self.hi = []
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):
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)
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):
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 高頻系統設計題
- 設計即時股票行情推送系統(million users / sub-second latency)
- 設計新聞終端 Top-K 標籤
- 設計分散式訊息匯流排(pub-sub 簡化版)
- 設計全域速率限制器
3.2 BBG 風格 4 步法
- 釐清功能 vs 非功能需求(QPS、延遲、資料規模);
- 從 single-box 起步,再說水平擴展;
- 明確 CAP 取捨——Bloomberg 偏 latency over consistency;
- 閉環講監控、降級、灰度——這是 BBG 加分項。
3.3 專案深挖 (Resume Deep Dive)
面試官會盯住簡歷某一行 30 分鐘,常見追問:
- 這個專案的 bottleneck 是什麼?怎麼發現的?
- 若 QPS 翻 10 倍,你會先擴什麼?
- 若讓你重做一次,第一件事改什麼?
建議:簡歷每個專案準備 3 段 STAR + 1 段技術取捨 + 1 段失敗教訓。
四、第三輪:行為面 + Manager Round(45 min)
4.1 BBG 文化關鍵字
- Curious(好奇心)
- Customer-obsessed(終端客戶思維)
- Collaborative(跨團隊協作)
- Pragmatic(務實,不堆輪子)
4.2 高頻行為問題
- Tell me about a time you disagreed with a teammate.
- Describe a project that didn't go as planned.
- Why Bloomberg?(必問,不要把 BBG 說成 "another bank")
- What's a feature you'd add to the Bloomberg Terminal?
4.3 STAR 範本
- Situation:交代上下文,1 句話;
- Task:你的具體目標,1 句話;
- Action:你做了什麼,2–3 個 bullet,強調技術 + 溝通;
- Result:量化結果(latency 降低 X%、使用者量成長 Y%),1 句話。
注意: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
- 提前 15 分鐘登入 Bloomberg Zoom,測網路
- 簡歷 PDF 打開備查
- 準備 5 個反問問題(一定要問 team 在做什麼)
- STAR 範本默寫 3 個專案
- 把 BBG 文化關鍵字寫在螢幕旁
八、需要 Bloomberg VO 輔助?
我們提供 BBG 面試一對一輔助:
- 微信:Coding0201 · 立即聯絡
- Email:[email protected]
- Telegram:@OAVOProxy
服務內容:
- 當週 BBG 高頻題與變體;
- 系統設計 mock + 回饋;
- VO 即時提示(行為 / 專案深挖)。
最後更新:2026-05-11 | 作者:oavoservice 面試組