← 返回部落格列表 Bloomberg 實習面試複盤:帶間隔合併區間 + 最長交替子陣列,60 分鐘兩道題
Bloomberg

Bloomberg 實習面試複盤:帶間隔合併區間 + 最長交替子陣列,60 分鐘兩道題

2026-06-06

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 更重要。

五、備考建議


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 實習真題與陪練

聯絡方式