刚面完 Block frontend engineer,趁新鲜写个复盘。我是 mid-level 前端,4 YOE,主要做 React。
一共五轮。大概是这样:
coding(两轮) 都是在共享代码编辑器里。第一轮纯 JS:实现 debounce,然后问 async/await 的执行顺序(给我一段代码,让我说会 log 什么、什么时候 log)。很经典,但现场要讲清楚其实挺难。
第二轮是 React 向:从零写一个小组件。我抽到的是「build a paginated list that fetches from a given API」。他们想看 hooks、loading state、error handling,全套都要。主要测你到底会不会想边界情况,还是只会写 happy-path。
CSS/layout 轮 这轮让我挺意外。专门一轮做样式和布局。给我一个支付确认页面的 mockup,让我用 CSS grid 和 flexbox 实现。还问了 specificity、cascade,以及 CSS custom properties(变量)。也有一个简短的无障碍问题:「this button has no label, how would you fix it and why does it matter?(这个按钮没有 label,你会怎么修,为什么重要?)」
如果你只准备算法,不管 CSS,在这儿会很痛苦。block 的确在做大规模的用户界面,他们很在意这个。
system design(前端向) 设计一个实时交易 feed。不是服务端,而是:客户端怎么接收更新(polling、SSE、websockets),新条目进来时怎么高效更新 DOM 列表(virtualization),用户离线了怎么办。整整 45 分钟,聊得很深。
behavioral 三道题。最让我意外的是:「tell me about a time you pushed back on a design decision and how it went.(讲一次你对一个设计决策提出反对意见的经历,以及结果如何。)」。这里要有一个真实故事,别编。
总体:比一般前端 loop 更严格。他们明显在意浏览器侧的深度,不只是「会不会用 React」。进去前花一天补补基础挺值。