过去两年我在 State Street 走了三次 loop(不同岗位,拿到一个 offer,被拒两次)。这里是我总结的他们 coding 面试到底怎么进行。
Online assessment
HackerRank 平台,两道题,90 分钟。难度一直在我认为的「舒服的 medium」到「需要想一会儿的 medium」之间。我见过: Hash map / two-pointer 字符串处理,带多个 edge case 一道图题(BFS,比较标准)
他们不太考 DP 的花活。他们想看干净、正确的代码,而且会跑隐藏测试,所以 edge case 很重要。我听说有人 OA 满分还是没过,因为隐藏测试里有 null 输入,他没处理。
语言:按他们技术栈,Java 和 Python 最顺手,但我用 Java 做过,也见过别人用 Go。选你最熟最快的。
Live coding(phone screen 和 onsite)
这些一般限时 30-45 分钟,一位面试官,协作式。面试官通常会提前说希望你先写代码还是先讲思路。如果他们没说,我也会主动问。
到了 onsite,live coding 的难度可能会突然拉高。我最难的一题是 interval merging,但套了点金融语境(类似「某个时间窗口里的 positions」那种表述)。题本身是 medium,但表述带噪音。先把领域语言剥掉会很有帮助。
几件我希望早点知道的事: 他们会让你自己测试代码。不只是「这看起来对吗」,而是「walk me through a test case.(带我走一遍一个测试用例)」。如果你不习惯把测试过程说出来,提前练。 behavioral 问题也会穿插在 coding 里问,不是只在单独的一轮。做完题后可能马上来一句「tell me about a time you had to optimize something under a deadline(讲讲一次你在 deadline 压力下必须做优化的经历)」。 他们很多团队偏 Java。如果你是 Python 党、又是泛泛准备,最好把 Python 写得更可读,顺便加上 type hints。有个面试官还主动夸了我的类型标注。
整体难度对比其他 fintech:跟 Fidelity 差不多,比 Two Sigma 或 Citadel 简单。门槛确实在,但用扎实的 medium 水平准备是够得着的。