前段時間收到了 Google 的 OA 邀請,時間限制是 90 分鐘,三道題。 說實話,OA 不算是難到天花板的那種,但題目覆蓋面挺廣,既要考慮演算法,也要注意實現細節。 如果你沒有提前做過類似題型,時間壓力會很大。
這篇文章來還原比較真實的體驗,也分享一些我個人的解題策略和遇到的坑點。

OA 概覽
- 公司:Google
- 時長:90 分鐘
- 題量:3 道 Coding 题
- 難度感受:中等偏上,數據結構與字串處理題為主
- 平臺:HackerRank
- 程式設計語言:Python(支持多语言)
- 加分點:寫出乾淨、可讀性高的代碼,別忘了邊界測試
Coding 真題
1. Word Pattern Matcher
Given a pattern string consisting of lowercase letters and a sentence of words, determine if the sentence follows the same pattern. Each letter in thepattern corresponds to a unique word, and each word maps to exactly one letter.
Example:
Input: pattern = "abba", s = "dog cat cat dog"
Output: True
Input: pattern = "abba", s = "dog cat cat fish"
Output: False
Constraints:
1 <= pattern.length <= 3001 <= s.length <= 3000
2. Top K Frequent Listings
Given an array of Google Search query IDs, return the top k most frequent IDs. If two IDs have the same frequency, return the smaller ID first.
Example:
Input: ids = [1,1,2,2,2,3], k = 2
Output: [2, 1]
Constraints:
1 <= ids.length <= 10^51 <= id <= 10^9
3. Merge Booking Intervals
Given a list of meeting time intervals where intervals[i] = [start, end], merge all overlapping intervals and return the result in sorted order.
Example:
Input: [[1,3],[2,6],[8,10],[15,18]]
Output: [[1,6],[8,10],[15,18]]
Constraints:
1 <= intervals.length <= 10^40 <= start < end <= 10^9
我的解題策略
- 先做最穩的題:我先做了第一題,因為哈希映射模式匹配是常見套路,很快能寫出來。
- 第二題用庫函數節省時間:Python 的
collections.Counter+heapq很快搞定,時間複雜度也穩在 O(n log k)。 - 第三題排序合併:先按 start 排序,再線性掃描合併,注意邊界條件。
常見坑點
- 忘記處理空輸入(尤其是字串分割時)。
- 第二題的 tie-break(相同頻率時按 ID 升序)容易漏掉。
- 合併區間題,intervals 沒有先排序會出錯。
- HackerRank 的 Python 預設是 Python3,注意
input().split()读取。
FAQ
Q: 如果中途卡住怎麼辦?
A: 先跳到下一題,不要硬耗時間,留最後 5 分鐘再回來嘗試補。
Q: 需要寫很複雜的優化嗎?
A: Google OA 更看重正確性和可讀性,除非題目明確要求,否則 O(n log n) 的解法已經足夠。
Q: 邊界條件重要嗎?
A: 非常重要,我最後檢查時發現第二題在 k > distinct_ids 時沒 return 全部 ID,幸好及時修正。
從容應戰,贏下下一場 OA
這次 Google OA,我不僅提前 10 分鐘完成了全部題目,還用剩餘時間做了更多測試,確保邊界情況都覆蓋到。Programhelp 的協助,不是簡單代寫,而是幫你用最快的方式鎖定高分,讓你在考試中保持自信和穩定節奏。 與其獨自硬撐,不如讓經驗豐富的夥伴在背後為你保駕護航。