今年早些时候我走完了 citadel 的 frontend engineer 面试流程,面的是 chicago 一个 trading UI team 的岗位。写出来是因为我完全找不到前端相关的具体流程细节。
电话初筛是 recruiter,挺标准的:问背景、薪资预期、时间线。完全没有技术问题。大概一周后安排了 technical screen。
technical screen(1 小时,视频) 两个面试官。前 40 分钟是 coding:用原生 JS 或 react 做一个小的交互组件,二选一。我选了 react。题目是做一个有状态 UI,并且有一些明确的事件处理约束。他们很看重正确性和边界情况,不太在意你用 hooks 还是 class components。还追问了一些浏览器渲染和 virtual dom 的工作原理。
最后 20 分钟更偏聊天:最近项目、我怎么处理跨团队依赖、我做过的一个很自豪的东西。
onsite(4 轮,远程一整天) 第 1 轮:又一题 coding,这次更偏算法。不是典型 leetcode hard,更像 medium 加一点 UI 相关的变化。比如带约束的排序加渲染动态列表。
第 2 轮:web 应用的 system design。他们让我设计一个实时数据 dashboard,说实话很符合 citadel。延迟、websocket vs polling、规模化的状态管理、处理陈旧数据。这轮会问得很深。
第 3 轮:behavioral。经典 STAR:和 stakeholder 的冲突、你怎么在不完美的情况下交付、你如何处理不确定性。
第 4 轮:深挖我过往的一个项目。要你讲细节:我做了哪些决策、我会怎么改、我怎么衡量成功。
看起来重要的点: 了解浏览器内部机制,能推理性能(paint、layout、reflow),以及在 behavioral 里给出具体例子。很虚的回答会明显不行。
总体来说流程很扎实但不残酷。没有陷阱题,也没有 leetcode hard 的刷题折磨。面试官很投入,follow-up 问得也聪明。onsite 后大概一周给结果。