今年早些时候走完 GitLab 的 frontend 面试流程,目标是 mid-level(intermediate)岗位。总共用了大概 5 周。过程如下。
Recruiter screen 标准 30 分钟。他们会特别问我的 React 经验,以及是否接触过 Vue,因为 GitLab 的主应用是 Vue。我在 side project 里做过 Vue,所以加分,但他们也说有 React 经验就行。
Technical phone screen
和一个 frontend engineer pair 了大概 60 分钟,在共享的 CodeSandbox 里做。两道题: 做一个简单组件:一个列表,支持过滤和排序。他们想看 state 管理、事件处理、代码干净。不要 Redux,不要外部库,就用原生 React hooks。 一道 JavaScript 基础题,关于 closures 和 async 行为。我在 event loop 相关的点上有点绕,他们引导我走出来。他们是协作式的,不是挖坑。
Onsite
4 轮。技术轮包括: Frontend systems design:设计一个实时协作的 markdown editor。不是实现,是设计。聊了 WebSockets、乐观更新、冲突解决(提到了 CRDT,但他们不期待你知道细节)。这是最有意思的一轮。 Live coding:再做两个组件。其中一个偏 accessibility,这点让我意外。他们让我做一个自定义 dropdown,要求支持键盘导航、对 screen reader 友好。我看过 ARIA 基础但没怎么练过。这里要花时间。 Behavioral:标准 STAR。他们问了我怎么处理和设计师的分歧,以及一次我把页面变快的经历。性能优化的故事很适合准备。 Hiring manager chat:不是技术轮,更像互相聊「我们是否想一起共事」。
我希望自己多准备的点
Accessibility。CSS specificity 和 cascade(他们问了一个概念题)。Vue 3 基础,即使你的主力是 React。
2026 年 intermediate 级别的 US remote 薪酬:我的 offer 大概是 base $145-150k。equity 适中,不是爆炸型。
团队会大量使用 GitLab 自己的产品,这点看起来很显然,但其实是个挺好的细节。他们 dogfood 很狠。