今年春天我参加了 VMware senior frontend engineer 的面试。岗位在他们的 Aria(以前叫 vRealize)UI 平台团队。如果你不了解的话,这是他们云管理产品的 UI 层。我想分享一下是因为 frontend 的 loop 差异很大,而我找到的大部分报告都在讲他们 backend/infra 的流程。
流程:recruiter screen,一轮技术电话面,然后虚拟 onsite 四轮。
电话面: 用 CodePen 现场写代码。他们让我从零做一个组件:可筛选列表,带防抖的搜索输入和 loading 状态。React,没有特定库限制。他们会看我怎么组织 state、是否会在合适的时候用 useCallback、命名方式等。面试官最后点评说他们看重的是「deliberate choices」,不只是「能跑」。我理解就是:你要能解释你每个决策的原因。
Onsite 第 1 轮:更多 coding。 做一个多步表单,带校验和条件字段展示。中等复杂度。中途他们问了无障碍,我聊了 aria attributes 和键盘导航,他们比我预期更在意。如果你面他们的产品 UI 团队,至少掌握无障碍基础。
Onsite 第 2 轮:前端系统设计。 这是最让我意外的一轮。他们让我设计一个复杂 dashboard 的组件架构,带实时数据更新。我们聊了:组件树怎么拆、共享 state 放哪、怎么处理 websocket 更新而不让整棵树都 re-render、DOM 大数据量下怎么做性能管理。更像是对话,不像做题。要懂 React 性能模式(memoization、virtualization),并且对 state management 有自己的观点(我偏 Zustand + React Query,他们让我对比 Redux)。
Onsite 第 3 轮:设计系统与协作。 主要聊我搭建或使用 design systems 的经验:怎么和设计师合作、怎么做设计到开发交接。这轮更偏文化和工作流,不是纯技术。
Onsite 第 4 轮:行为面。 常规。
Onsite 后推进很快。反馈是他们喜欢我对无障碍的意识,以及我在第 2 轮里讲取舍的方式。senior frontend 的薪资跟我在其他 enterprise software 看到的差不多,不是 FAANG 水平但挺稳。
如果你要面他们的 frontend,补一补 React 性能模式,同时至少了解无障碍标准的覆盖范围。设计系统相关的对话也值得提前准备。