我面的是 SpaceX,岗位是他们航电软件组的 senior SWE。system design 这一轮跟我在其他公司面过的感觉很不一样。具体分享一下,因为常见的 "design Twitter(设计 Twitter。)" 建议在这里不完全适用。
设置:60 分钟,一个 senior 工程师加一个 principal。一开始就给题目。我这题大概在这个范围:给一组会产生高频传感器数据的设备集群,设计一个遥测数据接入和告警系统。我刻意没去背原句,但这个领域确实是他们的真实工作。
他们强调的点:
先讲可靠性和故障模式。 我还没画完组件图,他们就问:消息队列积压时会怎样?然后又问:如果同一个告警触发两次怎么办?关注点不在「你能不能说出对的服务」,而在「你是不是真的知道分布式系统在生产环境怎么挂」。
看取舍,不只看标准答案。 我在接入层提了 Kafka。他们反问:为什么是 Kafka,不是 Kinesis,或者更简单的轮询模型?我从延迟要求、运维复杂度、回放语义讲了一遍。他们似乎更喜欢我有理由,而不是只是在套 buzzword。
深度优先于广度。 我展开的宽度大概只有我平常的 60%,但在我选的关键点上深挖了 2 倍。现在回头看这更对。他们会细问存储层和 compaction 的行为,而不是看你有没有提到 CDN。
在 senior 这个级别,我估计这轮就是决胜轮。coding 轮更多是 pass/fail。system design 才是你能不能到 L4、L5 以及更高的展示。
还有一点:他们没有问任何 ML design。这是一套纯后端/infra 的流程。不同 org 可能不一样。