三个月前我做了 Cigna 的 onsite,面的是他们 data platform 团队的 senior SWE。全程线上(他们叫「virtual onsite」,但其实就是一整天的视频会议)。下面是实际结构。
他们安排成一个 5 小时的 block,中间内置了 30 分钟休息。我有 4 场正式面试,最后还有 30 分钟和 hiring manager 的非正式聊天。
面试 1:Coding(60 分钟)。CoderPad 两道题。Java 或 Python 任选。难度中等。我一题是数组操作,用 hash map 做优化;另一题基本是 BFS 遍历加一些边界情况。都不是那种反转题或坑题。他们更看重你能在压力下写出干净、可跑的代码,而不是偏门知识。
面试 2:System design(60 分钟)。给了一个医疗相关的题(大概是设计一个 care gap alerts 的通知系统)。这里的面试官更 senior。他们追问可扩展性、可靠性(下游 EMR 系统不可用时怎么办),以及拥塞时怎么决定哪些 alert 先发。我提到 Kafka,他们能跟着深入;我提到 circuit breakers,他们也能接住。整体氛围很协作,不是对抗型。
面试 3:Behavioral(45 分钟)。两位面试官,重点是领导力和冲突处理。问题像「describe a time you disagreed with a technical decision made by your team」(描述一次你不同意团队做出的技术决策的经历)和「tell me about a time you had to deliver bad news to stakeholders.」(讲讲一次你不得不向相关方传达坏消息的经历。)。标准 STAR。有一位在记笔记,一位在听。如果你准备过,不算特别难。
面试 4:Cross-functional(45 分钟)。这轮是跟一位 product manager 和 clinical informatics 团队的人。他们问我会怎么和临床相关方合作,因为他们对交付速度的预期和工程师不一样。这轮更像文化/契合度,而不是硬考核,但我后来被告知这一轮对是否录用有实质影响。
HM chat(30 分钟)。纸面上不算 eval,但我当成 eval 来对待。我问了些好问题,展示我研究过他们团队在做什么。HM 问我最期待做什么方向,提前准备好答案。
6 个工作日后给了 offer。从投递到 offer 总共大概 8 周,和我在这里看到的其他反馈差不多。