最近我们这边刚带一位学员走完 Uber OA 。和之前很多场次一样,今年不少 Uber OA 已经从 CodeSignal 转到了 HackerRank 平台。
这场考试的结构其实很典型:3 道 coding 题 + 限时完成。这次我们是远程实时辅助的方式带着学员一起做完整场 OA,整体节奏控制得比较稳,大概 30 分钟左右三道题全部完成并通过测试。下面把这场 Uber OA 的题型和核心思路复盘一下。

第一题:Python: Lambda Map
题意
题目给一个二维数组,需要对每个子数组进行处理:先筛选出所有正整数,再对这些正整数进行平方,最后返回新的二维数组。
解题思路
外层用 map 遍历每一个子数组,在子数组内部先用 filter 过滤出正整数,然后再用 map 对这些数字进行平方运算,最后把结果转换成列表返回。
这道题的核心不是算法复杂度,而是对 Python lambda、map、filter 这些函数式写法是否熟悉。如果平时习惯用这种写法,基本可以用一行表达式完成整个逻辑。
第二题:Node Disconnection
题意
题目给一个字符串,每次操作可以删除一段连续相同的字符,需要计算最少多少次操作可以把整个字符串删掉。
解题思路
关键点在于理解操作规则。一段连续相同字符在一次操作中就可以全部删除,所以问题本质就是统计字符串中有多少个连续字符段。
实现时只需要从左到右扫描字符串。如果当前字符和前一个字符不同,就说明进入了新的连续段,计数加一即可。整道题就是一个线性遍历,时间复杂度是 O(n)。
这一题很多人第一反应会去模拟删除过程,其实完全没必要,只要抓住“连续段数量”这个核心就能很快写出来。
第三题:Purchase Optimization
题意
比较典型的贪心题。题目给出商品价格数组 prices,一个起始位置 pos,以及总预算 amount。
规则是从 pos 开始往后购买商品,只要当前预算可以买得起,就继续购买,累计花费不能超过 amount。当剩余金额不够买下一个商品时停止,最后返回一共买了多少件商品。
解题思路
解法就是顺序遍历。从 pos 开始检查每个价格,如果 amount 大于等于当前商品价格,就进行购买,同时更新剩余预算并增加计数;如果预算不够,就直接结束循环。
整个过程就是一个简单的顺序贪心策略,复杂度也是 O(n)。
OA 不熟悉?不用慌
如果你也即将参加 Uber OA,但对这种在线笔试平台不太熟悉,或者对时间节奏、题型把握没有太大信心,其实完全可以提前找有经验的人一起准备。我们这边长期在带同学做各类公司 OA,比如在 HackerRank、CodeSignal 这类平台上的 coding assessment。觉得自己一个人把握不太稳,欢迎 联系我们 。