我正在走 Stryker 的 loop,岗位是 senior SWE(他们叫「Senior Software Engineer」,但内部大概对标 tech lead / IC5 档)。system design 这轮最有区别,所以专门写一下。
我拿到的题目:设计一个平台,用于跨医院系统追踪手术器械的使用情况。比如:哪些器械进了哪个 OR、使用次数用于磨损与更换排期、以及召回时的可追溯性。
这和经典的「design Twitter(设计 Twitter)」或「design a URL shortener(设计一个 URL shortener)」那种题很不一样。有几个在这里很重要、但在典型 SaaS system design 里没那么关键的点:
监管可追溯性。 每个器械都需要完整的审计链路。不只是「记个 log」,而是不可篡改、可防篡改的记录。我讲了 event sourcing 作为一种模式,他们反应很好。
唯一标识符方案。 医疗器械有 UDI(Unique Device Identifier)标准。我面试前并不懂,但听说过这个概念,这点很加分。你不需要是专家,但知道这个概念就很好。
Offline-first 的边界情况。 医院的 OR 环境不能依赖稳定网络。面试官特地追问:边缘设备重新上线时数据怎么同步。
告警延迟 vs. 吞吐量的取舍。 召回通知链路对延迟很敏感;使用分析更适合 batch。我在设计里把两者分开。
面试官不是想用我不可能知道的 medtech 细节来难我。他在看我怎么结构化问题、怎么问澄清问题。我在画任何东西之前,用了 10 分钟做需求收集。
有一点我会改:我太快冲进数据模型了,应该先多花点时间讲 failure modes。面试官后来还是绕回来问 failure modes 了。
对 Stryker senior 的 system design,核心能力是围绕可靠性、可追溯性和约束来设计,而不只是吞吐。CAP theorem 基础要会,event sourcing 要懂,也要熟悉 audit-log 相关模式。