上个月为一个 mid-level SWE 岗位做了 HackerRank OA。分享一下形式,因为我当时搜了半天,几乎找不到任何新的信息。
形式: 90 分钟,2 道 coding。
第 1 题是数组/字符串。具体是找满足某个条件的最长子串。LeetCode 上算中等难度,大概 5 星里 2 星。如果你在 LeetCode 做过 50 道以上 medium,这题不会是压力源。
第 2 题是图题。带额外约束的最短路径变体,限制哪些边可走。同样中等难度,不难。看你怎么理解约束,用 BFS/Dijkstra 都有可能。我用 Dijkstra,过了所有 test case。
没有 SQL,没有 system design,没有「给你一段代码找 bug」这种题。纯算法。
真正影响结果的点: 时间管理。90 分钟两题听起来够用,但题面很长,有点绕。写代码前一定要花时间仔细读。我差点在 P1 上因为看错约束写了个错误实现。
边界情况。我在一个部分 test case 上被扣分了,原因是输入为空。经典。记得检查。
语言: 我用 Python。没说限制,大多数候选人大概用 Python 或 Java,毕竟他们目标环境是(内部)偏 Java。
如果让我对过去的自己说一句: OA 不是最难的部分。它之后的技术电话面更难,更开放。OA 基本就是筛掉那种 6 个月没碰过数据结构的人。
值得一提:他们似乎会把 OA 结果分享给面试官。我的电话面面试官提到我两题都解出来了,所以这不只是简单的 pass/fail。
祝好运。BNY 的流程很长,但不算残酷。