上个月刚走完 Dropbox 的 loop,定级 L5。这里是 system design 这一轮实际长什么样。
题目很开放:设计一个文件同步系统。考虑到 Dropbox 在做什么,这不算特别出其不意,但他们要的深度是真的。我大概先花了 10 分钟做需求和范围界定,再开始谈架构,这个节奏感觉刚好。面试官在我还没搞清楚大局就想过度设计 metadata store 的时候会 push back。
他们实际会追问的点: 你怎么处理并发编辑和冲突解决。他们要具体方案,不接受泛泛而谈 CRDT。 Block-level 去重 vs 文件级去重。会问存储成本等取舍。 sync client 怎么判断本地有哪些变化(inotify、FSEvents、轮询兜底)。 面向百万级并发客户端的可扩展性,不是只停留在「理论上能支持几百万个文件」。
我观察到一点:面试官更在意你怎么推理这些取舍,而不是你落到某个特定架构上。我说「我会用 S3 做对象存储」之后,他们立刻问如果 S3 掉了怎么办,以及这个场景下到底一致性还是可用性更重要。
这轮 45-50 分钟。最后 5-10 分钟留给你提问,但如果你还在讨论中,他们也会继续用这段时间。
准备方向:分布式文件存储、metadata 服务、用 vector clocks 或 operational transforms 做冲突解决、客户端同步协议。如果你做过 Kafka 或 change-data-capture 相关的东西也很加分,因为他们内部非常重视 event streaming。
定级方面,L5 他们希望你能带着面试往前走。如果你一直等对方告诉你接下来该聊什么,可能会被看成偏 junior。