上个月走完了 Snowflake 的 frontend 面试流程,面的是他们核心产品 UI 团队(Snowsight web app)的一个 senior FE 岗。 他们是真正的产品团队,不只是套在 API 上面的 dashboard 层,所以我也很好奇他们会怎么定标。
流程: Recruiter Screen Take-home:做一个小型 data table 组件,支持排序、筛选、虚拟滚动。3 天完成。 Technical screen:review take-home + 现场再做一道新的 live coding Onsite(4 轮):两轮技术,一轮 system design(偏 frontend),一轮 behavioral
take-home:虚拟滚动这块最有意思。他们明确强调了性能。我用了 windowing 的思路,并确保 memoize 做对。他们也很在意无障碍(accessibility),这点让我有点意外,但其实不该。
live coding:technical screen 的新题是 debounce。他们先让我从零实现 debounce,这没问题,然后加了一步:如果某个 prop 发生变化,就要取消已经 debounce 的调用。感觉就是一个真实的 Snowsight 问题。
frontend system design:这轮挺有意思。我需要设计一个复杂 filter builder 的前端架构(类似用 UI 拼一个 SQL WHERE clause)。他们想看:state 管理策略、组件拆分、怎么处理深度嵌套的 filter tree。更偏产品架构,而不是基础设施。
behavioral:能力模型导向。他们问了很多我怎么和 design、data 协作。做一个搭在 data platform 上的产品意味着 FE 工程师要关心 query 性能,不只是渲染性能。
整体:比一般的 frontend loop 难。如果你来自纯 UI/CSS 背景、数据结构不强,system design 那轮会很吃力。take-home 真的是一个 bar-raiser。
offer:senior IC,SF hybrid。base 大概 195k。我接了。