刚结束我的 Reddit frontend 面试 loop,mid-senior level(大概 IC4/L5 对标),我想写得具体点,因为泛泛的 SWE 复盘抓不住前端的味道。
简版:JavaScript fundamentals 和 system/component design 的比重比我预期高,leetcode 风格算法的比重比我担心的低。
流程:
Recruiter screen,technical screen(1 小时),然后 4 轮 virtual onsite。
technical screen 是混合题:一道 coding(从零实现 debounce,然后扩展加一个 cancel 方法),再一道浏览器 event loop 的概念题。我觉得都很典型地落在「JS fundamentals」,不偏框架。他们内部用 React,但面试不要求你会 React,他们想看你是否理解底层平台。
Onsite: Frontend coding:两题。第一题是实现一个自定义 hook,用来管理带缓存的分页数据拉取。第二题是不用框架的 DOM 操作题。都很贴近实际工作,像你真的会在公司里写的东西。 Component/UI design:给一个比较模糊的产品 prompt(在 Reddit 的帖子上做 vote counter 组件),让你设计组件 API、状态模型、边界情况、以及无障碍(accessibility)考虑。我没想到无障碍会考这么重,但确实被问得很细。他们会具体问键盘导航和 ARIA。 System design(前端味):从高层设计 Reddit 的无限滚动 feed。包括 virtual DOM windowing(他们点名提到了 React Virtualized/Virtual)、pagination vs cursor 策略、以及当你在滚动中途有新帖子进来时怎么处理实时更新。这不是后端系统设计,全是前端范围。 Behavioral:标准形式。他们重点看工程/设计/产品之间的协作,以及你如何为一个技术决策做 advocate。Reddit 的产品界面对用户非常可见,所以他们想要在意 craftsmanship、也能和设计沟通的 frontend engineer。
我拿到的 offer comp:Bay Area,base $155k,equity $50k/yr。对应 mid-senior band。我从朋友那里听说 senior-senior 档(前端侧的 principal/staff level)会更高,但我没有当前数据。
有一点值得知道:我会加入的团队在做 web client rewrite(从旧 stack 迁出),所以他们对现代 web performance 和 Core Web Vitals 很有热情。如果你面的是 web platform 相关岗位,记得复习 LCP、CLS 这些。