上个月我走完了 Twilio frontend engineer 的面试全流程,中级岗位(L3,大概 3-6 YOE)。分享一下,因为我面之前很难找到偏前端的信息。
四轮,全程视频,用 CoderPad 或共享屏幕。
第 1 轮:JavaScript 基础 + DOM。比我预期更偏概念。聊了 event delegation、event loop 和 microtask queue、closure 怎么工作,然后一道小 coding:从零写一个 debounce function。完全不 React-specific。如果你最近一直活在框架里,很久没碰 vanilla JS,建议花一天复习一下。
第 2 轮:React 组件设计。现场写一个可复用组件。我拿到的类似:做一个 multi-step form 组件,在步骤间保存 state,并且在前进前做校验。他们特别问了 controlled vs uncontrolled inputs,以及我会怎么处理错误。接着问性能:什么时候用 useMemo,为什么不该到处都用。整体很合理。
第 3 轮:System design(frontend)。我挺惊讶还有前端向的系统设计。题目:设计一个实时 dashboard,展示成千上万条消息的 SMS 投递状态。考虑到 Twilio 的产品,这很合理。我们聊了 websockets vs polling、规模化的状态管理、用 virtualized list 做性能优化、以及怎么处理重连。要面这里的话,实时相关的基本功要扎实。
第 4 轮:Behavioral。标准。三道题,STAR 格式。一道关于跟优先级不同的 backend 团队合作,一道关于在截止日期压力下处理 technical debt。
总用时:从 first screen 到 offer 大概 3 周。L3 在 San Francisco 的 offer 大概是 $165k base,RSUs 另算。不是市场最高,但我加入的团队看起来确实很有意思。
我想说的一点是:那个实时 dashboard 题目非常贴合他们实际做的东西,不像随便 copy-paste 的通用面试题。这点还挺清爽的。