五厂面经真题集小米面经高频小米真题文档变更检测消息队列速答 · 约 5 分钟更新 2026-09-29

系统怎么感知文档变更?实时性要求高怎么办?

一句话结论

基础方案按文档计算内容 hash,通过轮询或监听数据源变更来比对,识别新增、修改和删除;实时性要求高时,用消息队列驱动变更事件,触发入库并做到秒级生效。

先这样答

系统可以按文档计算内容 hash,再通过轮询或监听数据源变更来触发比对。系统把当前文档的 hash 和已有记录进行比较,就能判断文档是新增、修改还是删除。

基础方案适合对实时性要求不高的场景。轮询实现简单,系统按固定方式检查数据源,再计算并比对 hash。监听数据源变更可以减少不必要的检查,数据源发生变化时再处理。

如果实时性要求高,我会改成消息队列驱动的事件处理。文档发生变更后,数据源产生变更事件,消息队列传递事件,消费方收到事件后触发入库。这样文档变更可以做到秒级生效。面试时我会先说明基础方案,再根据实时性要求选择事件驱动方案。

面试官会怎么追问

  • 「为什么要给每个文档计算内容 hash?」 内容 hash 可以代表当前文档内容。系统拿当前 hash 和已保存的 hash 做比对,就能判断内容是否发生变化。

  • 「新增、修改、删除分别怎么判断?」 系统把数据源中的文档和已有记录进行比对。只在数据源中出现的文档属于新增,hash 发生变化的文档属于修改,已有记录中不再出现的文档属于删除。

  • 「消息队列在这里具体解决什么问题?」 消息队列承接文档变更事件,并把事件传给处理方。处理方收到事件后触发入库,避免只依赖轮询,从而让变更做到秒级生效。

回答的坑

  • 只说轮询而不提实时性要求高时的消息队列方案,无法回答场景变化。
  • 只说监听变更而不说明通过内容 hash 比对,无法清楚判断新增、修改和删除。
—— 本题完 ——