今年早些时候我走完了 GitHub 的 coding 轮,属于 mid-level SWE 的完整 loop。下面是实话实说的拆解。
他们没有那种传统 OA,比如在跟你说话之前先丢一个限时 HackerRank 链接给你做。至少在 experienced hire 这边没有。流程是先 recruiter 电话,然后一次 technical phone screen(共享编辑器现场写代码,他们用自家的工具,显然),然后 onsite 里两轮 coding。
形式和难度:
Phone screen 的 coding 题是中等难度。图遍历,BFS。如果你能边写边讲,45 分钟可控。我一开始话太多差点超时,所以要注意时间。
Onsite 的两轮 coding 也都是中等,可能偏中偏难。一道是字符串处理,比看起来难主要是 Unicode 的边界情况(而且考虑到 repo 内容的国际化,这又确实很 GitHub)。另一道更直接,trees/递归。
我没遇到任何 Leetcode Hard。论坛里有人说抽到过 dynamic programming,但我没有。可能跟团队或 interviewer 有关。
语言选择:可以自己选。我用 Python,没问题。他们更看重代码正确性和清晰度,不太吃算法炫技。
时间管理:两轮都是 45-50 分钟。通常先 5-10 分钟互相介绍,然后做题,最后留时间提问。所以真正能写代码的时间大概只有 30-35 分钟。要按这个节奏规划。
我很喜欢的一点:两位 interviewer 都会明确说他们是想先要一个能跑的解,还是要最优解。这不是每家公司都有,节奏更好掌控。
总体:如果你能比较稳地做 Leetcode medium,不要慌,coding 轮就没问题。行为面和 system design 才是我会在 senior 这条 track 上更值得投入精力准备的。