过去一年我走了两次 HP 的 coding 流程(一次是 frontend 岗位,一次是另一个团队的 full-stack)。OA 和真人 live coding 的轮次差别挺大,我分开写。
Online Assessment(OA)
我通过 HireVue 收到的 OA 在任何真人沟通之前。限时 90 分钟,3 道题。 题 1:简单热身。数组操作,基本就是看你能不能写干净的代码。我这道是连续子数组和的一个变体。 题 2:中等难度。图或树题。我这道是无权图上的最短路径变体。不算稀奇。 题 3:中等偏难。第二次我拿到的是动态规划(带约束的 grid traversal)。第一次是字符串解析。
可选语言很多:Python、Java、C++、JavaScript。我用的是 JavaScript,因为我投的是 frontend,想保持一致。
OA 里没有 behavioral 问题,这点挺爽。有些公司会混进去。
Live Coding Round(phone screen / virtual onsite)
完整流程里我有两轮 live coding。一轮更协作式(面试官很健谈,会给提示,感觉有点像 pairing);另一轮更正式。两轮难度都是 LeetCode medium。我两次 loop 都没见到任何 LeetCode hard。
两次经历里看到的题目主题:数组、hash map、二分、BFS/DFS、基础 DP。coding 轮没有 system design,没有 bit manipulation,也没有 segment tree。都很经典。
时间和形式
每轮 live 都是 45 到 50 分钟。大概 5 分钟自我介绍,30 到 35 分钟解题,10 分钟我提问。两次都用 CoderPad。
有件事值得知道:面试官引导程度差异很大。有一个我卡住时会主动介入并给了关键提示;另一个会沉默很久。我感觉这更多是分到谁的运气,而不是统一政策。
准备建议:多刷 medium,习惯边写边讲,把时间复杂度和空间复杂度烂熟于心。我感觉他们更筛思路清晰度,而不是你是不是 10 分钟内秒掉。