今年早些时候走了 GitLab 的 engineering 流程。想专门记录一下 coding 部分,因为我找不到更新的信息,能找到的基本都是 2022-2023 的。
结构: 没有 take-home。recruiter 电话之前也没有 HackerRank 或 CoderPad 的 pre-screen。coding 面试发生在最后一轮(他们叫 onsite,虽然全程远程)。
是两个独立的 coding session,都是 live,都是 60 分钟。语言你自己选。我用的是 Python。他们用 CoderPad。
难度: 说实话就是 LeetCode medium。一个面试是图遍历题,大概算 LC medium-hard。另一个更偏数据结构:给你一个事件流,让你高效追踪 X。不是那种必须刷 400 题才行的局。
比纯算法难度更重要的是:你能不能一边写一边沟通?他们全程在问问题:'why did you choose a hashmap here?' 'what's the space complexity?' 'what breaks if input is empty?' 我差点在图那题翻车,因为我有 5 分钟安静在想。很糟。他们想看你哪怕卡住也要把推理过程说出来。
坑点: CoderPad 没有自动补全。最好专门在 CoderPad 里练,不要只在自己的 IDE 里练 最后会让你用一个特定输入跑一下代码。脑子里要准备好 test cases 我那次第二个 coding session 还有一个 follow-up:'now can you make this work with N threads?' 有点并发意识会有用
对我有帮助的准备: Neetcode 150,medium 那档,提前 3 周 Pramp 做 mock(口头表达练习真的很重要) 先读了 GitLab 的 engineering blog,主要是为了准备 coding 过程中有时会穿插的 behavioral 问题用词
dm 我如果你有具体问题。也愿意跟正在面的人快速 mock 一下。