今年早些时候我走了 Asana 的 SWE 面试流程,目标是 mid-level。准备时找不到太多信息,所以把 coding 轮拆一下。
Online assessment (OA):两道 LeetCode 风格题,90 分钟。第一道明显是中等难度,图遍历。第二道更难,感觉像 medium-hard 的 BFS/最短路变体。没有 system design,就是纯算法。平台是 CodeSignal。
通过率感觉挺挑人。我第一题做得还行,第二题只做出部分也进了下一轮,所以我觉得不是那种必须 100% 全对的门槛。
Onsite coding rounds:两场独立的 45 分钟 coding,和工程师面。两道都是算法题,依然是 LeetCode 风格。一道是树相关(不只是遍历,更偏结构操作)。另一道是字符串/数组题,如果想要最优解需要 DP。
关键点:他们非常看重代码质量,不只是能跑。我在做题中途被要求把变量名改干净。面试官明确说:能工作的解,但代码很乱,是过不了的。所以从一开始就写接近生产质量的代码,或者预留时间重构。
他们还会问所有东西的时间和空间复杂度。不是可选项。练习边写边讲 big-O,不要等写完才说。
备到什么 level:我觉得稳定在 LeetCode medium,夹杂少量 hard。题不是 FAANG 那种特别绕的,更像“你能不能在压力下把思路理清楚”。我这几轮里没有坑题,也没有奇怪的 bit manipulation。
从 OA 到 onsite 再到出决定大概 3 周,总体感觉比我面过的其他地方快。
如果有人正在准备,也愿意分享更多细节。