Context: This piece aggregates 18 BBG VO debriefs collected by oavoservice between Jan and Apr 2026, covering SDE I/II, Quant Dev and Infra/SRE positions. Public Bloomberg interview reports tend to be fragmented; this guide reorganizes them by round → pattern → response template.
1. Overall Bloomberg interview flow
HR Screen (30 min)
│
▼
Coding Round 1 (60 min, 1–2 LC Medium)
│
▼
Team Match (HM chat, 30 min)
│
▼
Onsite / Final (3 rounds)
├── Algorithm + Data Structure (60 min)
├── System Design / Project Deep Dive (60 min)
└── Behavioral + Manager Round (45 min)
Duration: 3–6 weeks from HR screen to offer. BBG's team match is a two-way fit; failing it can lead to a reject even with strong technical scores.
2. Round 1: Algorithm & Data Structure (60 min)
2.1 High-frequency pattern distribution (2026 Q1)
| Pattern | Frequency | Representative |
|---|---|---|
| Linked list / design | ~30% | LRU, LFU, doubly linked list + hashmap |
| Heap / scheduling | ~20% | Top K, Meeting Rooms II, CPU scheduling |
| Tree / Trie | ~20% | Serialize/deserialize, Word Search II |
| String | ~15% | Sliding window, longest unique substring, int to Roman |
| Graph / DP | ~15% | Word Ladder, buy/sell stock, number of islands |
2.2 Real Q #1: Custom LRU + TTL
Problem (variant): Implement an LRU cache that supports TTL (time-to-live). get(key, now_ts) treats expired keys as missing; put(key, value, now_ts, ttl) inserts or updates.
Key design:
- HashMap node → doubly linked list node;
- Node stores
(key, value, expire_ts); - On
get, check expiry — if expired, remove and return -1; - Do not scan the whole map on every op; lazy cleanup is enough.
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
Complexity: amortized O(1) for get/put.
Common follow-ups:
- If TTLs cluster, can you batch-clean with a min-heap?
- Concurrency: how do you lock? (hint: doubly linked list + reader/writer + segment locks)
- If cap = 10^8, what about memory? (tiered caching)
2.3 Real Q #2: Rolling Median over a Stock Stream
Problem (variant): BBG terminal streams prices via add(price); query the median of the last k prices via median().
Idea: two heaps (max-heap + min-heap) + a length-k queue with 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
Complexity: amortized O(log k) per op.
3. Round 2: System Design / Project Deep Dive (60 min)
3.1 Frequent BBG system design prompts
- Design a real-time market data push system (million users / sub-second latency)
- Design Top-K tags for a news terminal
- Design a distributed message bus (simplified pub-sub)
- Design a global rate limiter
3.2 BBG-style 4-step method
- Clarify functional vs non-functional requirements (QPS, latency, data scale);
- Start from single-box, then evolve to horizontal scale;
- State CAP trade-offs explicitly — Bloomberg leans latency over strict consistency;
- Close the loop on observability, degradation and gradual rollout — these are the bonus signals.
3.3 Project Deep Dive
The interviewer will pick one resume line and drill for 30 min. Common probes:
- What was the bottleneck of this project? How did you find it?
- If QPS were 10x, what would you scale first?
- If you redid this from scratch, what would you change first?
Tip: For every resume project prepare 3 STAR snippets + 1 trade-off paragraph + 1 lesson-learned paragraph.
4. Round 3: Behavioral + Manager Round (45 min)
4.1 BBG culture keywords
- Curious
- Customer-obsessed (Terminal-user mindset)
- Collaborative (cross-team)
- Pragmatic (no resume-driven wheel reinvention)
4.2 High-frequency behavioral prompts
- Tell me about a time you disagreed with a teammate.
- Describe a project that didn't go as planned.
- Why Bloomberg? (Always asked. Don't reduce BBG to "another bank.")
- What's a feature you'd add to the Bloomberg Terminal?
4.3 STAR template
- Situation: 1 sentence of context;
- Task: 1 sentence on your goal;
- Action: 2–3 bullets emphasizing both tech and communication;
- Result: quantified outcome in 1 sentence (latency down X%, users up Y%).
Bloomberg cares about curiosity more than other banks — initiating questions about terminal features and proposing tech alternatives lands better than reciting "I did X".
5. Overall prep timeline
| Week | Focus |
|---|---|
| Week 1 | LC Bloomberg tag Top 100 (Easy/Medium first) |
| Week 2 | Design topics: LRU / LFU / Hit Counter / Tweet |
| Week 3 | 5 system design sets: market data, Top-K, rate limiter, CDC, message bus |
| Week 4 | Behavioral + 3 Mock VO sessions |
6. FAQ
Q1: How many rounds does the Bloomberg VO have?
A: Typically 1 phone + 3 onsite/final, total 4–5 rounds; onsite finishes within one day.
Q2: Does Bloomberg use LeetCode or HackerRank?
A: The first coding round usually runs on CoderPad / HackerRank CodePair. Onsite coding happens on a whiteboard or Google Doc.
Q3: Do you need to draw diagrams in the system design round?
A: Yes. Prepare 5 canvases in Excalidraw (push, rate limit, subscribe, message bus, cache).
Q4: How hard are SDE I questions at Bloomberg?
A: Mostly LC Medium with a sprinkle of Hard. BBG doesn't prioritize tricky problems — stating trade-offs clearly matters more than perfect code.
Q5: Can I re-apply after a Bloomberg rejection?
A: Yes, but wait 6–12 months, and ideally target a different team — BBG teams vary a lot in hiring tempo.
Q6: Does Bloomberg sponsor H-1B?
A: Yes. The NYC HQ is friendly to international hires; H-1B sponsorship continues in 2026.
Q7: Can the Bloomberg interview be fully remote?
A: Phone + virtual onsite are both supported remotely. A few roles (trading floor) require onsite presence.
Q8: Bloomberg vs Two Sigma / Citadel — which is harder?
A: Algorithm difficulty at BBG is slightly below Citadel / TS, but Bloomberg's project deep dive is far deeper, demanding stronger engineering taste.
7. Day-of Checklist
- Log into Bloomberg Zoom 15 min early; test the network
- Keep your resume PDF open
- Prepare 5 questions to ask back (always ask what the team is building)
- Drill 3 STAR projects from memory
- Pin BBG culture keywords on your second monitor
8. Need Bloomberg VO assistance?
We offer 1-on-1 BBG interview support:
- WeChat: Coding0201 · contact us
- Email: [email protected]
- Telegram: @OAVOProxy
What we offer:
- Current-week BBG high-frequency questions and variants;
- System design mocks with feedback;
- Live VO prompting (behavioral / project deep dive).
Last updated: 2026-05-11 | Author: oavoservice interview team