Bloomberg 的實習面試節奏適中,題目難度中等偏下,但非常看重思維組織、問題拆解和口頭表達,而不是程式碼執行結果。第一輪 60 分鐘,分三段:開場專案介紹、兩道演算法題、簡短 QA。兩道題都在 HackerRank 上完成,但不要求執行程式碼——重點是 verbal reasoning:先講清楚思路,得到面試官認可後再動手寫。下面完整複盤。
一、Bloomberg 實習面試概覽
| 維度 | 詳情 |
|---|---|
| 時長 | 60 分鐘 |
| 平台 | HackerRank(不要求 share screen) |
| 結構 | 10 min 專案交流 + 45 min 兩道題 + QA |
| 難度 | 中等偏下,重推理與表達 |
| 要求 | 先講思路再寫碼,寫完報複雜度 |
開場是簡短自我介紹 + 選一個 most interesting project 詳細講。Bloomberg 這部分提問很模板化、不深挖技術細節:biggest challenge、如果重做會怎麼改進、團隊協作中你的角色、為什麼選 Bloomberg。正常不會因為這個環節掛掉。
二、題 1:帶自訂間隔規則的合併區間
給定一組區間
[start, end],與經典合併重疊區間不同,這裡定義新規則:如果兩個區間之間的間隔 小於等於 k,也需要合併。例如輸入[[1,3],[6,8],[9,10]],當k = 2時,第二、三個區間合併成[6,10]。
思路轉化:經典合併區間的判定是 next_start <= end,這題把判定放寬成 next_start <= end + k。先按起點排序,再線性掃描,維護當前合併區間 (start, end)。
def merge_with_gap(intervals, k):
if not intervals:
return []
intervals.sort(key=lambda x: x[0])
res = []
cs, ce = intervals[0]
for s, e in intervals[1:]:
if s <= ce + k: # 間隔 <= k 也合併
ce = max(ce, e)
else:
res.append([cs, ce])
cs, ce = s, e
res.append([cs, ce])
return res
時間複雜度:O(n log n)(排序主導);空間複雜度:O(n)(結果串列)。
Follow-up:streaming 場景如何處理無限輸入流? 不能先全部排序。我的回答是用一個 平衡樹 / 最小堆維護活躍區間,每次新進一個區間就嘗試與相鄰區間合併,從而在線完成近似合併。關鍵在於說清楚「為什麼離線排序在 streaming 下不可行」。
三、題 2:最長交替子陣列
給定一個整數陣列,找出最長的連續子陣列,使得相鄰元素的差值符號交替。例如
[1,3,2,4,3]合法,因為差值符號是+ - + -。
思路轉化:暴力是 O(n²),但可以 O(n) 一遍掃描:維護當前交替長度,以及上一次差值的符號。若當前差值符號與上一次不同,長度 +1;若相同,從當前對重新計數。
def longest_alternating(nums):
n = len(nums)
if n < 2:
return n
best = 1
cur = 1
prev_sign = 0 # 0 表示尚未確定
for i in range(1, n):
diff = nums[i] - nums[i - 1]
if diff == 0:
cur = 1 # 相等直接斷開
prev_sign = 0
continue
sign = 1 if diff > 0 else -1
if prev_sign == 0 or sign == prev_sign:
cur = 2 # 重新以這一對開頭
else:
cur += 1 # 符號交替,延長
prev_sign = sign
best = max(best, cur)
return best
時間複雜度:O(n);空間複雜度:O(1)。
Follow-up:原地修改,讓前綴部分保存最長交替子陣列。 我的回答是用 雙指標:掃描的同時用寫指標覆蓋原陣列,把找到的最長交替段移到前綴。講清楚讀寫指標不會衝突即可。
四、Bloomberg 實習面試評分邏輯
| 維度 | 面試官在看什麼 |
|---|---|
| 思路清晰度 | 寫碼前能否把演算法邏輯講明白 |
| 複雜度意識 | 寫完主動報時間 / 空間複雜度及來源 |
| Follow-up 反應 | streaming / 原地修改等延展能否當場推 |
| 溝通表達 | 全程口頭 reasoning,不悶頭寫 |
整體節奏適中,題目難度中等偏下,更像在評估程式設計基礎與溝通能力。兩道題都不要求執行,所以表達比 AC 更重要。
五、備考建議
- 把「合併區間」練到能隨口改規則:重疊、間隔 k、帶權頻次都要會變。
- 一遍掃描類題(最長交替、最長遞增段)練熟 O(n) 狀態維護。
- 每寫完一題,主動報複雜度並說明來源,這是 Bloomberg 的硬性加分項。
- 準備 1-2 個 streaming / 原地 的延展回答,follow-up 幾乎必問。
FAQ
Q1:Bloomberg 實習面試用什麼平台?幾輪?
第一輪在 HackerRank 上完成,60 分鐘,含專案交流 + 兩道演算法題 + QA,且不要求 share screen。後續還會有更多輪次,但第一輪是過濾基礎能力與溝通的關鍵 gate。
Q2:Bloomberg 實習題難嗎?
中等偏下。考點集中在合併區間、雙指標、一遍掃描這類高頻基礎題,很少出 trick。難點不在演算法本身,而在 follow-up(streaming、原地修改)和口頭表達是否清晰。
Q3:不要求執行程式碼,那評分看什麼?
看你寫碼前是否把思路講清楚、寫完是否主動報複雜度、follow-up 能否當場推導。Bloomberg 明確更看重推理過程與溝通,而非 AC 結果。如果想在這塊拿穩分,我們提供 VO 輔助 / VO 代面 / 面試輔助 的即時對接,幫你把推理和表達練到位。
Q4:專案介紹環節會掛人嗎?
基本不會。Bloomberg 的專案提問很模板化(biggest challenge、如何改進、你的角色、為什麼 Bloomberg),不深挖技術細節,準備一個能講清楚 challenge 與改進的專案即可。
正在準備 Bloomberg 實習面試?
Bloomberg 考的是基礎題的熟練度 + 口頭推理 + follow-up 應變。如果你想要這兩道真題的限時陪練、合併區間 / 一遍掃描的變種專項,或完整面試流程的複盤,歡迎交流:發職缺 JD 先做題型預測,再排練習計畫,也支援 VO 輔助 / VO 代面 / 面試輔助 的即時對接。
立即新增微信 Coding0201,獲取 Bloomberg 實習真題與陪練。
聯絡方式
- 微信:Coding0201
- Email:[email protected]
- Telegram:@OAVOProxy