Bloomberg 面试题型总结整理:NG、Phone Screen、VO、System Design 和 Behavioral 怎么准备
Bloomberg 面试题型总结整理:NG、Phone Screen、VO、System Design 和 Behavioral 怎么准备
Bloomberg 的面试对 NG/Intern/SWE 候选人很常见,近期面经里有 phone screen、VO1、campus onsite、五轮面试、HM、behavioral、system design 等信号。准备时要兼顾基础 coding 和沟通表达。
本文基于近期公开面经标题和本地整理信号,不代表官方流程。
近期面经信号
- NG/SWE phone screen 和 VO1 很常见。
- Onsite 可能多轮,包含 coding、system design、behavioral/HM。
- Behavioral round 在部分面经中单独出现。
- Intern 也有第一轮/第二轮电面和 onsite。
面试真题题目合集
下面是 Bloomberg 相关面经里出现过的题目和题型摘要:
- Longest substring without repeating characters。
- Flatten down pointer linked list。
- Flatten multilevel doubly linked list 变体。
- Design deck of 52 cards。
- Shuffle deck / return randomized deck。
- Card game follow-up:game class 还是 player class 决定继续抽牌。
- Train station OOD。
- Train station follow-up:graph DFS。
- Meeting Room II。
- Atoi / string to integer。
- Wordle feedback:correct / misplaced / absent。
- Word Search。
- Binary tree vertical order traversal。
- Todo list OOD:add/delete/get/get_all。
- Simplified grep:找包含特定字符串的行。
- Grep follow-up:flag 扩展性。
- Friend requests by age 条件计数。
- Lottery storage system:add/remove/pick participants。
- Find deepest string inside parentheses。
- Wildcard string:把
*替换成 0/1,输出所有可能。 - Josephus circle:n 个人围圈每次数到 k 移除。
- Num of islands 变体。
- Num of islands follow-up:用 BFS 写。
- Fuel grid BFS:起点、终点、障碍、油量补给。
- Ordered Stream。
- Insert Delete GetRandom O(1)。
- Valid Parentheses。
- Recursively remove 3+ consecutive same letters。
- Design report platform system。
- Social graph:找第一个满足条件的伙伴。
- Graph DFS 非题库题。
- HR / behavioral:Most challenging project、why Bloomberg。
真题整理与分析
Bloomberg 的 new grad 面试经常是 OOD + coding + behavior 混合。题目不一定难,但会追你类设计是否清楚、接口是否好用。
真题 1:Deck of cards
题目大意:设计一副 52 张牌,支持初始化、shuffle、返回随机 deck 或 draw card。
考点分析: 这是 OOD 基础题。要定义 Card、Suit、Rank、Deck,shuffle 用 Fisher-Yates。follow-up 可能问多副牌、发牌、重置、线程安全或如何测试随机性。
真题 2:Train station OOD
题目大意:设计火车站相关对象,可能包括 train、platform、schedule、arrival/departure、乘客查询等。
考点分析: OOD 题重点是实体和关系。要先澄清系统目标:是调度平台、查询系统,还是售票系统。不同目标的数据模型完全不同。Bloomberg 会看你有没有从需求出发,而不是直接堆类。
真题 3:Graph DFS follow-up
题目大意:在 OOD 或 coding 题后追问图遍历,例如从某节点查可达、检测路径或处理环。
考点分析: 准备 adjacency list、visited set、递归/迭代 DFS,以及有向/无向图的差异。Bloomberg 喜欢让你边写边解释测试 case。
真题 4:System design round
题目大意:NG 也可能遇到系统设计,题目范围不固定,常见是市场数据、订阅、消息流或查询服务。
考点分析: Bloomberg 的业务强实时、强数据。回答时要主动讲 market data ingestion、subscription fanout、latency、ordering、replay、backpressure 和监控。
真题 5:Behavioral round
题目大意:behavioral round 会围绕项目、冲突、为什么 Bloomberg、团队合作、失败经验。
考点分析: 不要只准备 STAR 模板。Bloomberg 面试官会追细节:你具体负责什么、怎么 debug、结果如何量化、学到了什么。
高频题最优解速查
Flatten multilevel linked list
最优解思路: DFS。对每个节点,如果有 child/down,先 flatten child 链,再把 child 链插入 current 和 next 之间,最后返回 flatten 后的 tail。也可以用 stack 迭代。
复杂度: O(n),空间递归 O(depth) 或 stack O(depth)。
面试要讲的边界: prev 指针是否存在;child 插入后要清空;多层嵌套;空链表。
Deck shuffle
最优解思路: Fisher-Yates shuffle。从后往前遍历 i,在 [0,i] 随机选 j 并交换。每种排列概率相同。
复杂度: O(n),空间 O(1) 原地。
面试要讲的边界: 随机数范围 inclusive;返回新 deck 还是原地修改;如何测试随机性;多副牌。
Lottery add/remove/pick
最优解思路: 用 array 存 participants,用 hashmap 存 participant -> index。add 追加,remove 和末尾元素交换后 pop,pick 随机 array index。
复杂度: add/remove/pick 都是 O(1)。
面试要讲的边界: 重复 add;remove 不存在的人;pick 空集合;是否支持 weighted pick。
Wordle feedback
最优解思路: 两 pass。第一遍标记 exact match,并统计 target 中未匹配字符 counts;第二遍处理 misplaced,如果 counts > 0 则标记存在但错位并减 count,否则 absent。
复杂度: O(n),空间 O(alphabet)。
面试要讲的边界: 重复字符是核心;大小写;target/input 长度不同;输出格式。
可直接练习的答案骨架
Coding sample:Fisher-Yates shuffle
import random
def shuffle(deck):
deck = list(deck)
for i in range(len(deck) - 1, 0, -1):
j = random.randint(0, i)
deck[i], deck[j] = deck[j], deck[i]
return deck
OOD class definition:Deck of cards
from dataclasses import dataclass
from enum import Enum
class Suit(Enum):
HEART = "heart"
DIAMOND = "diamond"
CLUB = "club"
SPADE = "spade"
@dataclass(frozen=True)
class Card:
suit: Suit
rank: str
class Deck:
def __init__(self):
self.cards = [Card(s, r) for s in Suit for r in list("A23456789TJQK")]
def shuffle(self):
self.cards = shuffle(self.cards)
def draw(self):
if not self.cards:
raise ValueError("empty deck")
return self.cards.pop()
High-level OOD diagram:Card game
classDiagram
class Card {
suit
rank
}
class Deck {
cards
shuffle()
draw()
}
class Player {
hand
draw(deck)
}
class Game {
players
deck
start()
next_turn()
}
Deck --> Card
Game --> Deck
Game --> Player
System design:Report platform
API design
POST /reports
GET /reports/{id}
GET /reports/{id}/download
POST /reports/{id}/schedule
Data model
reports(id, owner_id, template_id, status, created_at)
report_jobs(id, report_id, scheduled_at, status, output_uri)
report_templates(id, name, query_definition, format)
Bloomberg OOD 面试喜欢一边加需求一边看你改设计,所以回答时要保持类职责单一,不要让 Game、Player、Deck 混在一起。
题目逐题答案速查
Coding:longest substring without repeating chars
Sample code
def length_of_longest_substring(s):
last = {}
left = 0
best = 0
for right, ch in enumerate(s):
if ch in last and last[ch] >= left:
left = last[ch] + 1
last[ch] = right
best = max(best, right - left + 1)
return best
Coding:atoi
Sample code
def my_atoi(s):
i, n = 0, len(s)
while i < n and s[i] == " ":
i += 1
sign = 1
if i < n and s[i] in "+-":
sign = -1 if s[i] == "-" else 1
i += 1
value = 0
while i < n and s[i].isdigit():
value = value * 10 + int(s[i])
i += 1
value *= sign
return max(-(2**31), min(2**31 - 1, value))
Coding:valid parentheses
Sample code
def is_valid_parentheses(s):
pairs = {")": "(", "]": "[", "}": "{"}
stack = []
for ch in s:
if ch in pairs.values():
stack.append(ch)
elif ch in pairs:
if not stack or stack.pop() != pairs[ch]:
return False
return not stack
Coding:ordered stream
答案骨架: 用 array 存 values,ptr 指向下一个应该输出的位置。insert(id,value) 后,如果 id == ptr,就连续输出直到遇到空。复杂度每个元素总共输出一次,amortized O(1)。
OOD:todo list
class TodoList:
def add(self, text): ...
def delete(self, todo_id): ...
def get_todo(self, todo_id): ...
def get_all(self, include_done=False): ...
def mark_done(self, todo_id): ...
System design:market data subscription
答案骨架: Feed handler -> normalizer -> pub/sub topic -> subscription gateway -> clients。API:POST /subscriptions、DELETE /subscriptions/{id}、GET /symbols/{id}/snapshot。Data model:symbols、ticks、subscriptions。
准备重点
Coding:准备基础数据结构算法,尤其是字符串、数组、哈希、树、图、BFS/DFS、设计小函数。Bloomberg coding 很看重清晰沟通和测试。
System Design:NG 可能较轻,experienced 或 onsite 可能问系统设计。准备 news/market data/feed、notification、search、rate limit、data ingestion。
Behavioral/HM:准备 why Bloomberg、团队合作、项目经历、失败复盘和沟通风格。
流程节奏:多轮面试里要保持稳定,不要一轮表现好后忽略 behavioral。
7 天冲刺计划
- Day 1-3:基础 coding 限时训练。
- Day 4:复盘常见数据结构。
- Day 5:准备 behavioral。
- Day 6:练轻量 system design。
- Day 7:做一轮 phone screen mock。
常见失分点
- 代码能写但解释不清。
- 没有主动跑测试。
- Behavioral 准备不足。
- System design 答得太大,没有结合 Bloomberg 数据/信息产品场景。
CTA
如果你已经拿到 Bloomberg 面试,建议先做 phone screen mock,再根据轮次补 system design 或 behavioral。你可以在服务和价格页面查看服务;也可以通过联系我们页面发送面试安排。