上个月完成了 Visa 的 onsite。面的是他们 Foster City 的 payments platform 组织里的 senior SWE 岗。趁记忆还新写一下。
Onsite 是线上(他们从 COVID 之后一直保持这样,看起来也没打算改)。整整一天,分成四到五个 session,中间有休息。大概是这样:
两轮 coding。 每轮一个不同的 SWE 面试官。题目中等难度。第一题是 array sliding-window,follow-up 会问 space complexity。第二题是图遍历的变体,本质是带约束求最短路径。两题明显都是预设题,不是现场随意想出来的。
System design。 这是我最紧张的一轮,结果反而最协作。题目大概是「design a payment processing pipeline that can handle high throughput with idempotency guarantees. (设计一个能在高吞吐下处理支付、并保证幂等性的 payment processing pipeline。)」(设计一个能在高吞吐下处理支付、并保证幂等性的 payment processing pipeline。)。考虑到这就是 Visa 的核心业务,不意外。他们希望你掌握:分布式系统基础、基于队列的架构、at-least-once vs exactly-once 交付、故障模式。他们追问了很多我会怎么处理重复交易。这个公司一定要把 idempotency 讲透。
Behavioral。 两个 session,不同面试官。能力模型导向,STAR 格式。我被问到的问题是:「tell me about a time you improved the reliability of a system (讲一次你提升系统可靠性的经历。)」(讲一次你提升系统可靠性的经历。) 以及「describe a situation where you had to align two teams with different priorities. (描述一次你需要让两个优先级不同的团队对齐的情况。)」(描述一次你需要让两个优先级不同的团队对齐的情况。)
Hiring manager chat。 通常在最后。更偏聊天。我的面试官问了我想学什么、三年后想成为什么样、以及对团队有什么问题。这是你展示自己做过功课的机会。
时间线其实挺合理:周二 onsite,下周一 recruiter 就打电话反馈。我在别的公司等过三周。
补充一点:面试官整体都挺认真,如果你卡住一会儿通常会给 hint。别盯着屏幕沉默。把你的思路讲出来就好。