今年春天走完了 GitHub 的 frontend engineer 面试流程,趁还记得清楚写下来。投的是 mid-level FE 岗,remote,通过他们 careers 页面投的。
timeline:从 recruiter screen 到 offer 大概 5.5 周。比我预期快,毕竟现在有些公司要拖 8-10 周。
rounds:
recruiter screen(25 分钟):标准背景、YOE、当前岗位、availability。recruiter 其实很不错,不是那种纯打勾流程。问了我为什么被 GitHub 吸引,而不是其他 developer tooling 公司。
technical screen(60 分钟):一小时,和一个工程师。大概 60/40:一个 JavaScript 题加聊天。JS 题中等难度,让我从零实现一个简化版 debounce,然后再加一个 cancel 方法。经典题,但很能测基础。聊天部分聊到我怎么思考 React app 的性能。
virtual onsite(4 轮): coding:两道题。一个数组操作题,LC 中等,另一个和树相关的题我真的卡了,但面试官是协作型的,不是对抗型。 system design / frontend architecture:设计一个协作式 code editor,有点像 github.dev 里的那种。他们很在意多光标状态管理、冲突解决、websocket 处理。这轮最有意思。 cross-functional:和 PM 一轮,更像聊我怎么和设计师、PM 合作,怎么处理 scope creep,设计不清晰时我怎么做。 behavioral:经典 STAR 轮。问题类似「tell me about a time you pushed back on a product decision(讲一次你如何对产品决策提出异议)」和「how have you made something significantly more accessible(你是如何让某个东西显著提升可访问性的)」。
最重要的点:我感觉 system design 才是真正的区分点。要懂 websockets,概念层面知道协作编辑器里 operational transforms 或 CRDTs 的基本思路(不需要实现,只要知道它们解决什么问题)。性能和可访问性也不止一次被提到。
got an offer。comp negotiation 另说,但 2026 mid-level remote 的范围挺有竞争力的。可以回答问题。