我今年早些时候走了 Mastercard frontend engineer 的面试流程,职位是他们某个 consumer 产品团队的 mid-level。发出来是因为我当时专门搜前端面经,几乎找不到有用的,都是泛泛的 SWE 或后端向。
简单背景:4 年经验,主要 React 和 TypeScript,也写过一些 Vue。申请的是 NYC office。
流程长这样:
OA:我这个经验级别没有 OA。recruiter 说 mid-senior 级候选人会跳过。
Phone screen:45 分钟。技术 recruiter 问一些轻量 JS 题(event loop、closures、「what happens when you type a URL(当你输入一个 URL 时会发生什么)」),然后最后 15 分钟交给一个 senior 工程师问一道 coding。我拿到的基本是实现一个 debounce 函数。很标准的前端 DSA 热身。
Technical panel(线上):两轮连着。 第一轮是 JavaScript/React 深挖。他们给了一个坏掉的 React 组件让我修,再重构。bug 是经典的:useEffect 里 stale closure。修完后他们问性能优化,重点是 useMemo 和 useCallback 的使用。接着问我会怎么考虑支付表单的无障碍(考虑到他们的业务领域,这题大概很相关)。 第二轮更偏通用 coding。Leetcode 味更重,但仍是 medium 难度。我遇到一道数组题和一道简单的 DOM 操作题。
Behavioral:穿插在 panel 里,不是单独一轮。标准 STAR 题:和队友冲突、快速学习新东西的经历、怎么处理代码上的负面反馈。
他们看重什么: 他们会很 push 代码质量和可维护性。有位面试官专门问我如果从零开始做一个组件库,会怎么组织,以及在灵活性和一致性之间怎么取舍。这感觉既是技术题,也是价值观题。
无障碍提了两次,我没想到一家 payments 公司会这么在意。但也合理,他们有全球消费者产品,涉及 ADA/WCAG 要求。
我这个 level 没有 system design 轮。我见过一些贴子说 senior+ 的前端会有 system design,但我没碰到。
结果: 我拿到了 offer。TC 在大 fintech 里算有竞争力,但比纯 FAANG 低一点。有问题我也愿意多分享。
整个 timeline 大概 5 周。