Databricks Online Assessment 面經|三道演算法題真實覆盤

113Views

前幾天剛把 Databricks Online Assessment 做完,說實話一開始看到題目我心裡是鬆了一口氣的。
不是那種一上來就把人往死裡卷的 hard 題,而是 非常 Databricks 風格:基礎題 + 思路清晰 + 實現不能亂。

整個 OA 一共三道題,時間是夠用的,但如果你對底層邏輯不熟,真的會在細節上被慢慢磨掉時間。

Databricks Online Assessment 面經|三道演算法題真實覆盤

第一道是 Design Hit Counter

看到這題的時候基本可以確定:這是送分題,但也是最容易被寫“看起來對、其實有坑”的那種。

題目讓你設計一個點選計數器,統計過去 300 秒內的 hit 數。時間戳是單調遞增的,同一秒可以有多次點選。說白了就是一個時間視窗統計。

我當時第一反應不是用佇列,也不是用固定大小陣列,而是直接用一個 list 存所有 timestamp。因為題目已經告訴你時間是遞增的,那這個 list 天然有序。
真正的關鍵在 getHits(timestamp) 這一刻:你不是去一條條數,而是要快速找到 視窗左邊界。

視窗是 [timestamp - 299, timestamp],這個 299 非常容易寫錯,我當時還專門 pause 了一下確認。然後直接用二分,找到第一個 ≥ timestamp - 299 的位置,後面的元素個數就是答案。

這題 Databricks 明顯不是考你空間極限,而是考你能不能 利用已知條件簡化問題。如果面試官後續追問,再提 deque / bucket 最佳化就行,OA 階段寫清楚、穩定最重要。

第二道是 IP to CIDR

這道題的“氣質”一下就變了。從字串直接跳到了 bit 操作,一看就知道是那種:
懂的人寫得飛快
不懂的人會卡到懷疑人生

題目給你一個 IPv4 地址和一個 n,要你用最少的 CIDR blocks 覆蓋接下來連續的 n 個 IP。

這題的核心不是 CIDR 表示法本身,而是一個非常經典的 bit 操作技巧:
lowbit(x & -x)

我當時的做法是先把 IP 轉成一個 32 位整數。只要你不這麼做,後面基本沒法優雅推進。

然後每一輪,站在當前 IP 上,問自己兩個問題:

  1. 這個 IP 在二進位制層面,最多能對齊多大的 block?
  2. 這個 block 會不會超過剩餘的 n?

lowbit 給的是理論最大對齊塊,但如果這個塊比 n 大,就只能不斷右移縮小。等 block size 確定了,就能算 prefix,然後生成 CIDR。

這道題寫的時候一定要穩,不要貪快。Databricks 的 OA 對這種“邏輯一旦亂掉就全錯”的題,容錯率是很低的。

第三道是 First Missing Positive

這是整場 OA 裡最“演算法味”的一題。

看到題目要求 O(n) 時間 + O(1) 額外空間,基本就可以把 set、排序這些方案全部扔掉了。這題如果你以前刷過,就會非常順;如果沒刷過,現場想出來幾乎不可能。

核心思路其實很簡單,但不直觀:
把陣列當成一個雜湊表,用下標來表示數值是否出現。

只處理 [1, n] 範圍內的數,把值為 x 的數放到下標 x - 1 的位置上。交換的時候一定要用 while,不是 if,否則會留下未歸位的元素。

等這一輪“原地整理”結束之後,再從頭掃一遍陣列,第一個 nums[i] != i + 1 的位置,就是答案。

這題 Databricks 明顯是在看你對 in-place 演算法的熟悉程度,而不是純刷題量。

整體做完這三題,我對 Databricks OA 的感覺是:

  • 不靠偏門
  • 不靠題量
  • 非常看你基本功是否紮實
  • 寫出來的程式碼是否乾淨、可維護、邏輯自洽

如果你這三道題只是“看過”,那 OA 會有點吃力;
但如果你是真的理解過背後的思想,Databricks 的 OA 反而是一個很好發揮的場。

如果你後面要準備 Databricks 的 VO,其實可以把這三題當成一個訊號:
他們更在意你能不能把簡單問題做得非常穩,而不是能不能炫技。

這點,跟 Databricks 的工程文化,其實是非常一致的。

基礎題更易踩坑?ProgramHelp 為你的OA保駕護航

Databricks OA 看似基礎,實則暗藏玄機?拒絕在細節上“翻車”!Databricks 的題目雖然不全是 Hard 卷題,但像 Design Hit Counter 這種題目,考察的正是程式碼實現的嚴謹度與邊界條件的精準把控

。想確保 100% 透過率,不因因為一個小 Bug 錯失良機?ProgramHelp 為您提供最專業的 OA 助攻服務。我們擁有經驗豐富的演算法專家,不僅幫您避開“看起來對、其實有坑”的陷阱,更確保程式碼風格符合大廠 Standard。無論是複雜邏輯還是 Corner Case,ProgramHelp 助您穩拿滿分,直通下一輪面試!

author avatar
Jory Wang Amazon資深軟體開發工程師
Amazon 資深工程師,專注 基礎設施核心系統研發,在系統可擴充套件性、可靠性及成本最佳化方面具備豐富實戰經驗。 目前聚焦 FAANG SDE 面試輔導,一年內助力 30+ 位候選人成功斬獲 L5 / L6 Offer。
END