大概两周前刚结束我的 airbnb frontend engineer 面试全流程。现在正在推进 offer 流程,趁记忆还新鲜赶紧发一帖,因为我准备的时候几乎找不到最近的经验分享。
简单背景:~4 年 YOE,主要做 React,也写过一些 Vue,CSS 很强。投的是大概对应 L4/mid-level 的岗位。
轮次结构: 初轮 recruiter screen(30 分钟,没有技术内容) OA:一道前端 coding 题(下面会细说) Onsite:两天共 4 轮
OA:是一个组件搭建题。做一个带防抖的自动补全搜索输入框。可以用 vanilla JS,也可以用 React,随你选。他们看重的点:边界情况(空查询、快速连续输入、处理他们给的 mock API 的网络错误)、键盘无障碍(方向键、回车选择)、以及代码干净可读。不能用外部库。我用的是 React + hooks。防抖这块很多人应该会翻车,确保你的实现真的会取消上一次还没触发的调用。
Onsite 各轮:
Frontend systems:做一个简化版组件,要求看起来像是可能存在于 airbnb.com 的。我抽到的是 date range picker。面试官一直在加范围:「现在支持多个月」,「现在处理 disabled dates」。典型的需求扩展模式。CSS grid/flexbox 要非常熟,状态管理要干净,而且全程要边做边讲思路。
Performance + browser fundamentals:这轮很多人不会准备,但其实应该准备。问题比如:如果一个 listing 页面有 50+ 张照片,首屏加载很慢,你会怎么排查?paint timeline 大概是什么样?我们聊了 LCP、CLS、图片懒加载、字体加载策略、以及 bundle splitting。如果你从来没真正用过 Chrome Performance tab 去认真排问题,现在就去。
Behavioral:标准的 airbnb core values 模式。
Cross-functional collaboration:偏场景题,关于和设计师合作。他们给了一个很真实的情况:设计稿在技术上很贵,但时间线又很紧。你怎么谈,既不直接说不,又能把事情推向可落地的方案。
整体感受:如果你是纯刷算法那种人,前端面试流程可能会让你有点意外。他们更看重产品 sense 和 web fundamentals,而不是数据结构。