这次要分享的是 Google 26 Intern OA 的经历,整体过程非常顺利,两道题都一次 AC,结束后还剩不少时间做检查。Google 的 OA 题目算是比较经典的类型,难度不算变态,但实现上需要细心。
最关键的一点是:这种 OA 题虽然在题库里能刷到类似的,但真正实战时,很多同学会因为紧张或者细节处理不到位导致 AC 不全。所以这次能秒过,不光是自己平时积累的算法功底,也得益于我们 Programhelp 的远程无痕联机辅助——在卡点时能快速理清思路,保证测试用例 100% 全过。
下面就把真题分享给大家。
第一题:Longest Harmonious Subsequence
Problem:
Given an integer array, find the length of the longest harmonious subsequence where the maximum value and the minimum value differ exactly by 1.
Example:
Input: [1,3,2,2,5,2,3,7]
Output: 5
Explanation: The subsequence [3,2,2,2,3] is harmonious.
思路解析:
这题的关键在于“最大值和最小值只差 1”,换句话说,整个子序列只能由两个相邻的数字构成,比如 2 和 3。
- 第一步:用哈希表统计每个数字的出现次数。
- 第二步:遍历哈希表,对于每个数
x,检查x+1是否存在,如果存在,就计算count[x] + count[x+1]。 - 第三步:在所有组合中取最大值作为答案。
实现时要注意边界,比如当数组只有相同元素时,结果应该是 0。总体来说这是道哈希统计+遍历的基础题。
第二题:Permutation in String
Problem:
Given two strings s1 and s2, return true if s2 contains the permutation of s1.
Example:
Input: s1 = "ab", s2 = "eidbaooo"
Output: true
Explanation: "ba" is a permutation of "ab".
思路解析:
这是经典的滑动窗口问题:
- 先统计 s1 中各字符的频率。
- 然后在 s2 上维护一个长度等于 s1 的滑动窗口,每次进入一个新字符、移出一个旧字符,同时更新频率表。
- 每次更新后和 s1 的频率表对比,如果一致,就返回 true。
- 如果整个扫描结束都没有匹配,就返回 false。
细节在于窗口更新要写得干净利落,不然很容易出错。这个题在 OA 里基本是送分题,但也最容易因为小 bug 丢分。
实战体验
这场 OA 给的时间挺充裕的。我大概用了 20 分钟写完第一题,25 分钟写完第二题,接着花了 10 分钟补充 test case,又预留了十多分钟检查代码。
Google 的 OA 不会刻意卡你时间,而是看你能不能把基础算法思路实现得完整、bug free。所以在我看来,细节和稳定心态比所谓的“高难度算法”更重要。
Google 26 Intern OA 出题规律总结
结合这次和之前辅导的同学情况,Google OA 有几个明显规律:
- 考查基础算法模板:哈希表、滑动窗口、双指针,是高频出现的。
- 重视代码细节:边界条件、频率统计、窗口更新等地方很容易失误。
- 难度适中但要求稳定:不像 hedge fund 或 quant 面试那样刁钻,但绝对不允许粗心。
所以准备 Google OA 的最佳方式,就是提前熟悉这几类题型,把模板练到写得又快又准。
不慌不乱通过大厂 OA的秘诀
很多同学刷题时思路没问题,但一旦进入 OA 环境,容易出现:
- 思路没完全展开,写到一半发现方向错了;
- 边界情况没考虑全,最后几个 hidden case 没过;
- 时间分配不均,第二题还没 debug 完就超时了。
我们 Programhelp 的远程无痕联机辅助,正好能解决这些痛点:
- 无痕操作:在考试环境中全程隐形辅助,确保安全。
- 100% 测试用例通过:如果没通过,不收费。
- 实时语音提醒:关键节点卡住时,会点拨思路,避免浪费时间。
- 考前演练:针对 Google、Amazon、Meta 等公司常见题型,提前模拟实战,真正考试就能轻松拿下。
这次 Google OA 我能顺利秒过,也是因为有了这套保障,让我在实战中不慌不乱,代码一次成型。但如果你不想孤军奋战,想要一次过关的保障,那么 Programhelp 的 OA 无痕联机辅助 会是你最稳妥的选择。毕竟,机会宝贵,能确保 100% 过关,才是真正的省心。