今年早些时候我走完了 Oracle frontend engineer 的面试 loop,岗位是在他们某个 cloud dashboard 产品线。想分享一下,因为大企业的 frontend 往往和 startup 的 frontend 很不一样,准备方式也不一样。
完整 loop 是 4 轮技术面加 1 轮行为 panel。
Round 1:JavaScript 基础。 我以为会问 React 组件,结果是核心 JS 深挖。闭包、event loop 怎么工作、== 和 === 的区别、原型继承、箭头函数 vs 普通函数里的 this 绑定。感觉更像是用系统程序员的方式在考 JS,而不是典型的 frontend 面试官。我建议真的要懂引擎怎么跑,而不只是 React pattern。
Round 2:DOM 操作和浏览器 API。 不用任何框架,只用原生 JS 做一个小的交互 UI,需要从零实现 infinite scroll。这轮最让我意外。如果你过去 4 年只做 React,可能会在这里吃力。补一下 IntersectionObserver、requestAnimationFrame、localStorage vs sessionStorage。
Round 3:React 专项。 你以为大部分都在这里,但它只是 4 轮技术中的 1 轮。主要是 hooks:useEffect 清理、stale closure 问题、什么时候用 useCallback vs useMemo。还问了渲染性能,如何避免不必要的 re-render,什么会触发 reconciliation。有一道题是不用 Redux 你怎么做全局状态,所以要知道 Context API 的取舍。
Round 4:系统设计(偏前端)。 设计一个企业级设计系统的组件库。聊了组件 API contract 怎么设计、可访问性(WCAG 基础)、用 CSS variables vs styled-components 做主题、怎么做版本管理和 breaking changes。我挺喜欢这轮,感觉很贴近实际。
Behavioral panel。 标准的 Oracle 行为面,和其他人汇报的 STAR 格式一致。他们特别问了和后端团队一起定义 API contract 的经历,和岗位很相关。
Comp:我在 Seattle,中级大概 L3 对标,offer 大概是 $145k base。加上股票第一年总包大概 $185k。
真实感受:Oracle 的 frontend 门槛在基础功上比我想的更高。他们没那么在意你会不会最新最潮的框架,他们想知道你是不是真的理解 web platform。我觉得这对工程文化来说其实是个好信号。