今年早些时候做了 Linear 的 coding 轮,岗位是 mid/senior backend。网上信息太少了,所以我讲讲真实发生了什么。
我这边没有自动化 online assessment。没有 HackerRank,没有 Codility。我是直接被邀请参加一个 60 分钟的 live coding,面试官是工程师。
形式。 一道题,在共享编辑器里(他们用的是内部工具,基本就是带 chat 的 Monaco editor)。语言可以自选;我用的是 TypeScript,感觉挺符合他们风格。题目描述在 chat 里发。
难度。 大概介于 LeetCode medium 和 hard 之间,但不是那种典型「图遍历」的难法。更像真实世界的数据处理题。比如:给你一些结构化输入,看起来像项目数据,让你写一个转换逻辑。不是套路题,但 edge case 很关键,而且他们会让我逐步处理。
他们在看什么。 他们看我在写任何代码之前怎么拆题。我大概花了 8-10 分钟讲思路、问澄清问题。面试官会接话,也会问几个「what if the input has X(如果输入里有 X 呢?)」的问题。感觉不是在抓我错,更像真在好奇我怎么想。
优化。 我写出可用方案后,他们问了时间/空间复杂度,然后问能不能优化。这个优化不简单(需要重构数据),但也不是什么奇技淫巧。
总体难度。 说实话,如果你最近写过真实代码,比大厂更容易一些。但也不是那种「刷 200 道 leetcode」的准备方式。你得真的能在轻度压力下现场写出干净的代码。
有个点我会特别提醒:他们注意到了我写得太聪明或不够清晰的地方。面试官有一次让我把一个变量重命名。你可以把这当成他们文化的信号。