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 面试喜欢一边加需求一边看你改设计,所以回答时要保持类职责单一,不要让 GamePlayerDeck 混在一起。

题目逐题答案速查

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 /subscriptionsDELETE /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。你可以在服务和价格页面查看服务;也可以通过联系我们页面发送面试安排。

Previous
Previous

Citadel 面试题型总结整理:SWE Intern、OA、Phone Screen、QT/QR 和 Leadership 怎么准备

Next
Next

Apple 面试题型总结整理:SWE、MLE、AIML、Computer Vision、Frontend 和 HM 怎么准备