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

奇偶位置元素和比較
題目描述
給定一個整數陣列 numbers,比較偶數位置(0 基索引)上的元素之和與奇數位置上的元素之和:
- 如果偶數位置元素之和更大,返回
"even" - 如果奇數位置元素之和更大,返回
"odd" - 如果兩者相等,返回
"equal"
說明
- 這裡的位置是0 基索引(即陣列第一個元素位置為 0)。
- 示例:
numbers = [1, 2, 3, 4, 5]- 偶數位置(0, 2, 4):
1 + 3 + 5 = 9 - 奇數位置(1, 3):
2 + 4 = 6 - 因為
9 > 6,所以輸出"even"
- 偶數位置(0, 2, 4):
numbers = [-1, 4, 3, -2]- 偶數位置(0, 2):
-1 + 3 = 2 - 奇數位置(1, 3):
4 + (-2) = 2 - 因為
2 = 2,所以輸出"equal"
- 偶數位置(0, 2):
- 時間複雜度不超過 O(n²) 即可透過(n 為陣列長度)。
Unix 命令執行次數統計
題目描述
在 Unix 系統中,執行命令有兩種常見方式:
- 直接輸入命令名,例如
cp、ls、mv; - 輸入
!格式的指令,用於重複執行本次會話開始後第 index 條(1 基索引)命令。
例如,使用者依次輸入以下命令:
ls → cp → mv → mv → mv → !1 → !3 → !6
!1會重複執行第 1 條命令ls!3會重複執行第 3 條命令mv!6會先執行第 6 條命令!1,進而觸發執行ls
給定一個命令序列 commands,其中每個命令只能是 "cp"、"ls"、"mv" 或 "!" 格式。
請計算 cp、ls、mv 三種命令實際被執行的總次數,並返回形如 [cp 次數, ls 次數, mv 次數] 的整數陣列。
注意:時間複雜度不超過 O (n³) 即可透過。
最長連續房屋段統計
題目描述
你正在監控一個住宅區的建築密度。該住宅區可以看作一條數軸,只有當某個位置的至少一個相鄰點未被佔用時,才能在該點建造房屋。初始時,區域內沒有任何房屋。
給定一個整數陣列 queries,按順序表示要建造的新房屋位置。在每棟房屋建成後,你需要找出當前區域內最長的連續房屋段長度。
返回一個整數陣列,其中每個元素對應 queries 中每棟房屋建成後的最長連續段長度。
注意:
- 所有
queries中的房屋位置都是唯一的; - 保證不會在左右相鄰點都已有房屋的位置建造新房屋。
示例
輸入:queries = [2, 1, 3]
輸出:[1, 2, 3]
數字串逆序逐位求和
題目描述
給定兩個數字字串 a 和 b,按以下規則計算各位之和並返回結果字串:
- 從末尾開始,將兩個字串的第
i位數字相加; - 若其中一個字串的第
i位不存在,則直接取另一個字串的第i位作為和; - 將所有位的和按順序拼接成一個新字串返回。
示例
表格
輸入 a |
輸入 b |
輸出 | 說明 |
|---|---|---|---|
"99" |
"99" |
"1818" |
從後往前:9+9=18,9+9=18 → 拼接為 "1818" |
"11" |
"9" |
"110" |
從後往前:1+9=10,1(第二個字串無第二位)→ 拼接為 "110" |
一點真實建議
最後帶這位同學順利推進到VO。很多同學其實不是不會做題,而是 OA 環境很容易卡思路:寫到一半突然發現 bug、邊界條件沒處理好,或者時間一緊就開始慌。這種情況在 70 分鐘四題的 OA 裡特別常見。所以也有不少人會提前找 面試輔助 一起準備,很多時候其實就差一個點撥,比自己卡在那裡想半小時要高效得多。