大概三周前刚完成 Pinterest 的 frontend 全套面试。拿到 offer 了,正在纠结要不要接,但趁记忆新鲜先把流程分享出来。
总共五轮:一轮 recruiter screen,一轮 take-home,两轮技术面,一轮 behavioral。
Recruiter screen(30 分钟) 标准的背景、时间线、定级。我的 recruiter 人挺好。她很早就讲清楚 leveling,这点我很喜欢。他们招的级别大概对应 L4/L5,取决于经验。
Take-home 给了大概 3 天。一个 React component 练习。他们想要功能可用、可访问性好,并且明确说「我们更在意你的代码质量,而不是把所有东西都做完」。我用 hooks,把组件逻辑保持干净,写了几条测试。题目有点像 image-grid 相关,感觉很符合 Pinterest 的风格。
技术面第 1 轮:coding 1 小时,LiveCode。一道中等算法题 + 一道 DOM/browser 题。DOM 那题问 event delegation,以及如何处理动态生成列表上的 click 事件。确保你熟 browser API,不要只会 React 的抽象。
技术面第 2 轮:system design(frontend) 这轮是大多数人低估的。他们很看重 frontend system design。我被要求设计一个无限滚动的图片 feed。要聊 virtualization、intersection observer、lazy loading、缓存策略、状态管理。如果你没想过 Pinterest 的 home feed 底层怎么跑,面试前先想一遍。
Behavioral 标准 STAR 格式。他们问了我一次需要 push back 产品决策的经历,一次在速度和质量之间做取舍的经历,以及跨职能协作。没什么怪题。
从第一次 screen 到拿 offer 总共大概 5.5 周。他们推进挺稳的。没有 ghosting,这点很加分。