Databricks SDE OA 面經分享|70min 四題,整體中等難度

今天分享這場是來自一位是北美計算機專業碩士在讀的同學,平時 LeetCode 刷題大概 200+ 左右,目標崗位是 Databricks Software Engineer。這場測試 70 分鐘一共 4 道題,整體難度偏中等,前兩題接近 LeetCode easy,基本可以比較快寫完,後面兩題則是 medium 難度,需要稍微多一點思考。下面把這次 OA 的整體結構和題型整理一下,給後面準備 Databricks SDE 的同學做個參考。

Databricks SDE OA 面經分享|70min 四題,整體中等難度

奇偶位置元素和比較

題目描述

給定一個整數陣列 numbers,比較偶數位置(0 基索引)上的元素之和與奇數位置上的元素之和:

  • 如果偶數位置元素之和更大,返回 "even"
  • 如果奇數位置元素之和更大,返回 "odd"
  • 如果兩者相等,返回 "equal"

說明

  • 這裡的位置是0 基索引(即陣列第一個元素位置為 0)。
  • 示例:
    1. numbers = [1, 2, 3, 4, 5]
      • 偶數位置(0, 2, 4):1 + 3 + 5 = 9
      • 奇數位置(1, 3):2 + 4 = 6
      • 因為 9 > 6,所以輸出 "even"
    2. numbers = [-1, 4, 3, -2]
      • 偶數位置(0, 2):-1 + 3 = 2
      • 奇數位置(1, 3):4 + (-2) = 2
      • 因為 2 = 2,所以輸出 "equal"
  • 時間複雜度不超過 O(n²) 即可透過(n 為陣列長度)。

Unix 命令執行次數統計

題目描述

在 Unix 系統中,執行命令有兩種常見方式:

  1. 直接輸入命令名,例如 cplsmv
  2. 輸入 ! 格式的指令,用於重複執行本次會話開始後第 index 條(1 基索引)命令。

例如,使用者依次輸入以下命令:

lscpmvmvmv!1!3!6

  • !1 會重複執行第 1 條命令 ls
  • !3 會重複執行第 3 條命令 mv
  • !6 會先執行第 6 條命令 !1,進而觸發執行 ls

給定一個命令序列 commands,其中每個命令只能是 "cp""ls""mv""!" 格式。

請計算 cplsmv 三種命令實際被執行的總次數,並返回形如 [cp 次數, ls 次數, mv 次數] 的整數陣列。

注意:時間複雜度不超過 O (n³) 即可透過。

最長連續房屋段統計

題目描述

你正在監控一個住宅區的建築密度。該住宅區可以看作一條數軸,只有當某個位置的至少一個相鄰點未被佔用時,才能在該點建造房屋。初始時,區域內沒有任何房屋。

給定一個整數陣列 queries,按順序表示要建造的新房屋位置。在每棟房屋建成後,你需要找出當前區域內最長的連續房屋段長度。

返回一個整數陣列,其中每個元素對應 queries 中每棟房屋建成後的最長連續段長度。

注意

  • 所有 queries 中的房屋位置都是唯一的;
  • 保證不會在左右相鄰點都已有房屋的位置建造新房屋。

示例

輸入:queries = [2, 1, 3]

輸出:[1, 2, 3]

數字串逆序逐位求和

題目描述

給定兩個數字字串 ab,按以下規則計算各位之和並返回結果字串:

  • 從末尾開始,將兩個字串的第 i 位數字相加;
  • 若其中一個字串的第 i 位不存在,則直接取另一個字串的第 i 位作為和;
  • 將所有位的和按順序拼接成一個新字串返回。

示例

表格

輸入 a 輸入 b 輸出 說明
"99" "99" "1818" 從後往前:9+9=189+9=18 → 拼接為 "1818"
"11" "9" "110" 從後往前:1+9=101(第二個字串無第二位)→ 拼接為 "110"

一點真實建議

最後帶這位同學順利推進到VO。很多同學其實不是不會做題,而是 OA 環境很容易卡思路:寫到一半突然發現 bug、邊界條件沒處理好,或者時間一緊就開始慌。這種情況在 70 分鐘四題的 OA 裡特別常見。所以也有不少人會提前找 面試輔助 一起準備,很多時候其實就差一個點撥,比自己卡在那裡想半小時要高效得多。

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