几个月前刚完成一次 Zoom frontend engineer 面试流程,是 mid-level 的 SWE,方向是他们的客户端应用(web、基于 electron 的桌面客户端)。分享下整体拆解。
Recruiter screen 还可以:30 分钟,背景聊聊,加上口头 LC 热身(她让我描述会怎么实现 debounce 的思路,不写代码)。然后是一个 take-home。这个让我挺意外的。这个级别的 SWE 很多公司会跳过 take-home,但 Zoom 给了个 3-4 小时的 React 项目:做一个简化的视频会议 UI 组件,包含参会者 tile、音频指示器,以及一些状态管理要求。不需要后端,只做前端。
我用的是 React 18、hooks 和普通的 CSS modules。他们不在意你选哪种样式方案,但会很认真地读代码。我加了一个简短 README 解释我的决策,我觉得这点有帮助。
Virtual onsite 一共 4 轮:
Coding 轮:一道算法题(medium,intervals)加一道偏前端的题,要求用 Intersection Observer 实现一个懒加载图片组件。懒加载那题更有意思,得熟悉浏览器 API。
System design(前端):为 Zoom 设计一个实时协作白板功能。他们重点看:WebSocket 事件处理、乐观 UI 更新、客户端层面的冲突解决、以及如何优雅处理重连。这轮我感受到面试官给的信号最多,追问很多。要专门复习前端系统设计,不要只看后端分布式系统。
Behavioral:经典 STAR。4 个问题,重点在跨职能协作和如何处理模糊需求。有一道题专门问我和 design 合作时的经历,以及我如何反对一个我觉得技术上风险很高的设计决策。
Hiring manager 轮:文化、成长、团队 setup。建议这轮之前先弄清楚 Zoom 真实的产品组织长什么样。我有点被绊住,因为我当时并不知道自己具体是面哪个 team。
总体来说,这个 mid-level 的 bar 感觉合理。他们不是要用算法小技巧刷人,更想看到扎实的 React 基础、浏览器 API 知识,以及清晰沟通的能力。