上周刚做完 Vercel 的 coding 轮,趁还新鲜分享一下。这是一个 mid-senior 的 frontend engineer 岗。
形式。 不是通过 HackerRank 或 Codility 的标准 OA。他们发了一个 GitHub repo,让我在 48 小时内完成 take-home。说明写得挺清楚,范围大概是:实际工作量 3-4 小时。
任务是在他们提供的 Next.js 代码库上做一个小功能。具体是跟 routing 和 data fetching 相关的东西。不能分享细节,但明显是在测真实工程能力,不是算法谜题。
难度。 不是 LeetCode 意义上的难。难在「这个代码库里有些决策你未必认同,你要想办法把它干净地扩展下去」这种难。有些东西没文档。我得先读现有代码,理解他们的模式,再写新东西。
没有强制必须用某些库。我加了一个依赖做某件事,并在提交的 README 里解释了原因。后面他们给我的反馈看起来也能接受。
他们在意什么。 跟 engineering manager 的 debrief 主要聊:我怎么处理 spec 里的不确定性、代码对没写过的人是否可读、以及我为什么做某些架构选择。没有一个问题在问时间复杂度。
他们也看了我的 git commits。我是按小的逻辑步骤提交,而不是最后一个大提交,面试官还特别提了这一点是加分项。
建议。 把它当成真实工作,不是考试。commit message 写像样点。如果 prompt 有不清楚的地方,用注释或 README 写明你的假设,不要默默猜。还有,提交前真的把他们给的 tests 跑一遍。听起来很 obvious,但我估计很多人在赶时间时会跳过。