刚走完一轮 Slack frontend engineer 面试。我做 React/TypeScript 4 年经验(mid-level,目标 L4),这是我的完整拆解。偏前端的细节不太好找,希望能帮到大家。
整个流程是 5 轮:
1. Recruiter screen。30 分钟,完全标准。她让我确认能接受 hybrid(base 在 SF),这个我面之前就知道。
2. Technical phone screen。偏 JavaScript/React,不是泛泛的 LC。他们让我在共享编辑器里现场写一个小组件。比如:一个 toggle 组件,带明确的无障碍要求(ARIA labels、键盘导航)。面试官更在意我怎么想边界情况,不只是能不能跑。我还被问了一个关于 closures 和 async 行为的 JS 题。如果你对 JavaScript event loop 生疏了,赶紧补。
3. Coding(onsite)。比 phone screen 更偏算法,LC medium。没有前端特化,就是数据结构。我拿到的是 sliding window。我觉得这轮是为了确认 frontend engineers 也能算法化思考。别因为做前端就完全不刷 Leetcode。
4. Frontend system design。这是最有意思的一轮。题目类似:为 web client 设计一个实时通知系统。我讲了 WebSockets vs. SSE、状态管理方案(Redux vs. Zustand vs. context)、乐观更新、重连策略、以及无障碍。他们会追性能:比如 1 万用户同时收到通知会怎样?你要能聊 debouncing、虚拟滚动、渲染性能。他们也问了测试策略。
5. Behavioral。跟一个 EM。比较标准:跟同事冲突、你什么时候反对过产品决策、你怎么做 code review。我全用 STAR。一个让我意外的问题是:「tell me about a time you prioritized DX (developer experience) over a feature request.(讲一次你把 DX(developer experience)优先级放在功能需求之上的经历。)」。没想到会问,但对 Slack 的工程文化来说也合理。
整体感觉他们是真的懂前端,我挺喜欢。有些公司面 frontend engineers 就像在面「刚好会 React 的 backend engineer」。Slack 的考察确实更贴近岗位。
Offer:onsite 后 12 天给的。还在考虑。