上个月完成了 IBM 的 frontend engineer 面试 loop,岗位是 Carbon Design System 团队的 mid-level。这个方向算是 IBM 前端工作里更具体的一块,但我觉得 loop 结构跨团队都差不多,所以还是分享一下。
流程是:recruiter call,然后在同一周的一次 panel 里做 3 轮 technical。
Round 1:JavaScript 深挖(60 分钟)。没有 React 相关,就是 JavaScript。问了 closures、event loop、promise chaining,以及「你会怎么向只懂 callbacks 的人解释 async/await」。最后这个其实问得挺好。他们想看你的心智模型,不只是语法记忆。现场写一道题:从零实现 debounce。
Round 2:React 和组件设计(60 分钟)。这轮更偏应用。我们 pair-programming 做了一个小的可访问组件。不只是「能不能 render」,还要看「键盘能不能导航、ARIA labels 是否正确、语义上能不能被 screen reader 读懂」。无障碍深度有点超出我预期。IBM 有 Carbon Design System,本来就很重视 accessibility,所以也合理。
Round 3:System design(前端)(45 分钟)。不是后端基础设施。他们问我会怎么设计一个能高性能处理 10k 行的数据表格组件。我们聊了 virtualization、memoization、state 应该放哪、API contract 应该长什么样。挺实用。
没有单独的 behavioral 轮,但 behavioral 问题会插在技术轮里。第二轮问到了「Tell me about a time you pushed back on a design decision」。
有几件事比我想的更重要:accessibility 知识、组件 API 设计思维,以及能讲清 bundle size 和性能取舍。纯 React hook 细节题反而没我准备得那么重要。
offer 回来是 Band 7,remote-eligible,base 大概 $115k。我接了。