Bloomberg 的軟體實習面試第一輪以「邊講邊寫」著稱:真正被評分的不是你能否跑通程式碼,而是你能否把思路講清楚、拆解乾淨、和面試官同步節奏。這一輪 60 分鐘,切成三段——先聊專案,再做兩道 HackerRank 演算法題,最後留幾分鐘反問。本文按真實面經複盤整輪流程,給出兩道代表題的完整 Python 解法與複雜度分析,並補充 VO輔助 / VO代面 的實戰準備路徑。
第一輪流程概覽
| 項目 | 內容 |
|---|---|
| 平台 | HackerRank(無需共享螢幕) |
| 總時長 | 約 60 分鐘 |
| 段落 | 自我介紹 + 專案問答(約 10 min)→ 兩道演算法(約 45 min)→ 反問(幾分鐘) |
| 每題時長 | 約 20 分鐘 / 題 |
| 難度 | 中低(LC Easy-Medium 區間) |
| 核心考點 | 口頭推理、問題拆解、複雜度分析、溝通表達 |
| 是否要求執行程式碼 | 否——先講清思路,再寫程式碼 |
第一段:自我介紹 + 專案問答(約 10 分鐘)
開場面試官會讓你挑一個「最有意思的專案」展開講。問題偏模板化,不會往技術細節深挖,通常圍繞這幾條:
- 這個專案最大的挑戰是什麼?
- 如果重做一次,你會改進哪裡?
- 團隊協作裡你負責哪塊?
- 為什麼選 Bloomberg?
這一段基本不會「刷人」,目標是讓面試官快速建立對你的印象。建議提前把一個專案打磨成 2 分鐘的口述版本:一句話背景 → 你的角色 → 一個具體技術難點 → 結果與反思,避免流水帳。
第二段:兩道 HackerRank 演算法題(約 45 分鐘)
這是決定成敗的核心段落。兩題都在 HackerRank 上完成,無需共享螢幕,每題約 20 分鐘。答題節奏是這一輪的關鍵:
- 先複述題意,確認邊界與輸入範圍;
- 口頭講清思路,等面試官點頭認可;
- 再動手寫程式碼;
- 寫完主動報出時間與空間複雜度;
- 面試官通常會加 1-2 個追問約束,順著繼續推理即可。
不要求跑程式碼——思路組織、拆解、口頭表達 的權重遠高於執行結果。
題目一:自訂間隔規則的區間合併
題意
給定若干區間 [start, end]。經典題只合併相互重疊的區間,這裡加一條規則:如果兩個區間之間的間隔 ≤ k,也要合併。
例:[[1,3],[6,8],[9,10]],k=2 → [6,8] 與 [9,10] 間隔為 1(≤ 2),合併成 [6,10],結果 [[1,3],[6,10]]。
思路
- 按
start排序; - 線性掃描,維護當前區間
(cur_start, cur_end); - 若下一區間
next_start <= cur_end + k,則cur_end = max(cur_end, next_end);否則把當前區間入結果,重置為新區間。
Python 解法
def merge_with_gap(intervals, k):
"""按 start 排序後線性掃描;間隔 <= k 視為可合併。"""
if not intervals:
return []
# 先按起點排序,保證合併只需向右看一步
intervals.sort(key=lambda x: x[0])
merged = [list(intervals[0])]
for start, end in intervals[1:]:
cur = merged[-1]
if start <= cur[1] + k: # 間隔 <= k,合併
cur[1] = max(cur[1], end)
else: # 間隔過大,另起一個區間
merged.append([start, end])
return merged
# 快速自測
print(merge_with_gap([[1, 3], [6, 8], [9, 10]], 2)) # [[1, 3], [6, 10]]
時間複雜度:O(n log n)(排序主導) 空間複雜度:O(n)(結果陣列)
常見追問
如果輸入是串流 / 無限資料、區間陸續到達該怎麼辦?此時無法先排序。可維護一棵平衡樹 / 有序結構(或按到達順序用最小堆管理活躍區間),每來一個新區間就定位其左右鄰居,判斷間隔是否 ≤ k 並就地合併,單次操作 O(log n)。
題目二:最長交替差分子陣列
題意
給定整數陣列,找出最長連續子陣列,使得相鄰元素之差的符號交替出現。
例:[1,3,2,4,3],差分為 + - + -,全程交替,整段長度 5。
思路
暴力 O(n²) 列舉起點即可,但最優是一次線性掃描:從左到右維護「當前交替長度」和「上一個差的符號」;若當前差的符號與上一個不同 → 長度 +1;若相同 → 從當前這對元素重新計數;若差為 0 → 斷開重置。
Python 解法
def longest_alternating_subarray(nums):
"""線性掃描,維護當前交替長度與上一差分符號。"""
n = len(nums)
if n < 2:
return n
best = 1
cur = 1 # 當前交替子陣列的元素個數
last_sign = 0 # 0 表示尚無有效符號
for i in range(1, n):
diff = nums[i] - nums[i - 1]
if diff == 0: # 相等則斷開
cur, last_sign = 1, 0
continue
sign = 1 if diff > 0 else -1
if last_sign != 0 and sign != last_sign:
cur += 1 # 符號交替,延長
else:
cur = 2 # 同號或首個差,從這對元素重新起算
last_sign = sign
best = max(best, cur)
return best
# 快速自測
print(longest_alternating_subarray([1, 3, 2, 4, 3])) # 5
時間複雜度:O(n) 空間複雜度:O(1)
常見追問
要求就地改寫陣列,使其前綴恰好存放最長交替子陣列。可用雙指標寫指標:掃描時同時維護一個寫入下標 w,把當前最長交替段的元素依次寫回陣列前段,最終前 best 個位置即為答案,額外空間 O(1)。
第三段:反問(幾分鐘)
留幾分鐘給你提問。可以問團隊做的產品線、實習生的日常專案、Bloomberg 的技術棧演進等。表現出對具體業務的興趣,比問「我表現怎麼樣」更加分。
備考策略
Bloomberg 第一輪難度中低,評估的是編碼基本功 + 溝通,而非演算法奇技。備考重點:
- 練「邊講邊寫」:找人或對著錄影,強制自己先講完思路再敲鍵盤;
- 複雜度必答:每寫完一題都主動報時間 / 空間複雜度,形成肌肉記憶;
- 追問預演:區間題練「串流輸入」,陣列題練「就地改寫」,把常見 follow-up 提前跑一遍;
- 專案 2 分鐘腳本:把最拿手的專案壓成結構化口述版本。
oavoservice 的 VO輔助 / VO代面 支援
針對 Bloomberg 這種「口頭推理主導、要求邊講邊寫」的一輪,oavoservice 提供:
- VO輔助:按真實節奏出 HackerRank 風格題,mentor 全程聽你口述思路並即時糾偏,重點打磨「先講後寫 + 複雜度收尾」的表達閉環;
- VO代面:面試當天即時協作陪練,針對區間合併、交替子陣列這類中低難度題的臨場組織與追問應對提供支援;
- 專案問答打磨:把你的核心專案壓成可複用的 2 分鐘腳本,涵蓋挑戰 / 改進 / 分工 / why Bloomberg 四問。
具體方案與報價,加微信 Coding0201 溝通。
FAQ
Bloomberg 第一輪需要跑通程式碼嗎?
不需要。這一輪在 HackerRank 上完成但不要求執行,面試官更看重你能否清晰講出思路、拆解問題並給出複雜度。寫出正確、可讀的程式碼即可。
第一段專案問答會刷人嗎?
通常不會。專案問答偏模板化(最大挑戰、如何改進、團隊分工、why Bloomberg),目的是建立第一印象。準備一個 2 分鐘的結構化口述版本就足夠。
兩道演算法題難度如何?
中低,大致落在 LC Easy-Medium 區間,考察編碼基本功而非演算法難題。真正拉開差距的是口頭推理與溝通:先講清思路、拿到面試官認可再動手。
面試官加的追問一般是什麼方向?
多是加約束。比如區間合併會問「輸入是串流 / 無限怎麼辦」,交替子陣列會問「能否就地改寫陣列」。順著原思路往「線上處理」或「空間優化」方向推即可。
VO輔助 / VO代面 對這一輪有用嗎?
有用。這一輪吃「邊講邊寫」的表達節奏,VO輔助 可用 mock 把這套節奏練成肌肉記憶;VO代面 則在面試當天提供即時組織與追問應對的臨場支援,尤其適合容易「一緊張就悶頭寫」的同學。
正在準備 Bloomberg 實習 VO?
oavoservice 長期追蹤 Bloomberg 各輪真題與出題風格,mentor 熟悉其「口頭推理主導」的評分邏輯,可提供 HackerRank 風格限時模擬、專案問答腳本打磨、追問應對演練等 VO輔助 服務。
👉 立即添加微信 Coding0201,獲取 Bloomberg 高頻題與 VO輔助方案。
聯絡方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy