刚做完 Google 26NG OA ,趁还记得赶紧写下来。说实话做之前我挺轻视这关的,觉得 OA 嘛,刷过题应该没问题。结果做完才发现没那么简单——题目本身确实不偏,两道都是 Medium 范围,但 Google 的 hidden cases 卡边界卡得很狠,有几个我自己测没问题,提交完心里还是没底。
下面把两道题的思路和我踩过的坑都写出来,大家参考。

题目一:棋盘硬币收集
字符串 board 里有三种字符:'T'(棋子)、'C'(硬币)、'.'(空格)。每次操作可以把任意一个 'T' 向右精确跳 3 格,落点必须是空的(不能落在另一个 'T' 上)。如果落在 'C' 上就收集它,每枚硬币只能收一次。问最多能收集多少枚硬币。
思路
每个棋子只能走 +3 的步长,所以它能收集的硬币必须满足 (硬币位置 - 棋子位置) % 3 == 0 且在右边。N 通常很小,可以用状态搜索:
- 提取所有 T 和 C 的位置
- 递归 + memo,状态是当前各棋子位置(排序 tuple)+ 已收集硬币的位掩码
- 每次尝试每个棋子向右跳 3 步,目标合法就更新状态继续搜索
- 记录最大收集数
我当时第一版没有排序棋子位置就直接做 key,导致同一个状态被重复计算,差点超时。另外跳过去落在 'C' 上之后那个格子要变成 '.',不然后续棋子跳过去会判断错,这个边界我第一遍漏了。
题目二:数字选组
给 N 个两位数,从中选尽量多的数,使得所有选出的数至少共享一个相同数字(0-9 任意一个)。返回最大个数。
思路
任何合法的组,一定都包含同一个数字 d。直接枚举 d 从 0 到 9,统计有多少个数包含 d,取最大值。
int solution(vector<int>& numbers) {
int ans = 0;
for (int d = 0; d <= 9; d++) {
int cnt = 0;
for (int x : numbers) {
if (x / 10 == d || x % 10 == d) cnt++;
}
ans = max(ans, cnt);
}
return ans;
}时间 O(10 × N),N ≤ 100 完全没问题。
这题看起来简单,但很容易想复杂——我一开始想的是什么聚类、什么图,绕了好久才反应过来直接枚举就行。示例验证一下:[52,25,11,52,34,55] → 含 5 的有 4 个,答案是 4,没问题。
关于 Google OA 这关
Google OA 收到邀请不代表所有人都能收到——简历过了初筛才会发,所以能做 OA 本身就算过了第一关。
格式上一般是 1-2 道题,60-90 分钟,支持 Python、Java、C++ 等常见语言。环境是谷歌自己的在线编辑器,没有本地 IDE 那么顺手,调试也比较受限,所以提交之前最好在脑子里多走几遍边界。
评分不是纯粹二元的,代码结构、变量命名、边界处理都会影响结果,不是”跑过了就满分”。这点和 LeetCode 不一样,谷歌更在意你写的代码能不能让别人看懂、逻辑有没有清楚地体现出来。
FAQ:大家最常问的几个问题
Q:OA 难度大概什么水平?
整体偏 Medium,不会考特别冷门的算法。难的不是题目本身,而是题目描述长、约束多、边界情况复杂,容易在细节上栽。
Q:暴力解能过吗?
基本过不了。数据量一般不小,第一题那种状态搜索题如果不做 memo 很容易超时,第二题虽然简单但别用什么复杂方法,最简单的枚举反而是最对的。
Q:时间够用吗?
60-90 分钟做 2 题,理论上够,但如果第一题绕进去了时间就会很紧。建议先快速判断两道题的难度,简单的先搞定,不要在一道题上死磕太久。
Q:提交前要注意什么?
自己多造几组极端用例:空输入、只有棋子没有硬币、所有数字都不共享、N=1 这种。Google 的 hidden cases 对这些边界非常敏感,我身边就有人主要逻辑没问题,就因为没处理空数组直接挂了。
Q:OA 通过之后是什么流程?
通过 OA 之后一般会安排 VO(视频面试),通常是 2 轮,一轮 Coding + BQ,一轮纯 Coding,今年也有加面的情况,具体看 HC 决定。
Q:OA 可以用什么语言?
Python、Java、C++、Go 这些主流语言都支持,用自己最熟悉的就行,别在 OA 上练新语言。
最后想说
做完这次 OA 最大的感受是:谷歌不是要考你能不能秒出最优解,而是看你在有限时间里能不能把问题想清楚、代码写干净。那种一上来就埋头猛写的打法在这里反而容易翻车。最近 Google、Microsoft、TikTok、Amazon 等公司的 OA 和 VO 都在持续。Interview Show 专注北美技术岗位的面试辅助,团队来自一线大厂,提供 OA 辅助、真题题库和 VO mock。我这边也整理了更详细的答题框架和代码实现,有需要的同学随时聊。