Booking 系统设计面试复盘:一场关于并发统计的攻防战 – system design – 一亩三分地

“假设你要设计一个后端系统,支持在酒店预订页面右上角显示‘当前有多少人在同时浏览这家酒店’,你会怎么做?”

这是 Booking 面试官抛出的第一个问题。这个问题看似简单,其实很有陷阱:既要考虑功能实现,又要兼顾高并发、实时性、扩展性、数据一致性,还要在短时间内表达清晰。

如果是一个人单独面对,很容易慌乱,想到哪说到哪。但这次不一样,我们在背后提供了 csoahelp 实时辅助


第一阶段:澄清需求

我在后台提醒候选人:先别急着讲架构,先确认面试官的真正需求。

候选人开口说:
“我理解的核心功能是这样的:

  • 用户进入酒店页面时,并发人数 +1;
  • 用户离开或超时无操作时,并发人数 -1;
  • 系统需要提供 API 给前端查询当前酒店的并发人数。”

面试官点点头,然后补充:“对,还要考虑高并发访问的情况,以及这个数据不一定要绝对精准,但需要接近实时。”

这句话,其实就是一个信号:精准度可以适当放松,实时性和扩展性更重要

于是候选人顺势接着说:“好的,那我会把非功能性需求也列出来,比如:高并发支撑能力、实时更新、可横向扩展,以及系统要能避免长时间未释放的连接占用资源。”

到这里,他已经成功把第一步“需求澄清”做得非常稳。


第二阶段:功能 API 设计

候选人在我们的提示下,先抛出了最直观的 API:

  • POST /visit :进入页面,并发数 +1;
  • POST /leave :离开页面,并发数 -1;
  • GET /count?hotel_id=123 :返回当前酒店的并发人数。

面试官追问:“如果用户直接关闭浏览器,没有调用 leave 怎么办?”

这时候,候选人稍微卡了一下,我立刻在后台提示:“心跳机制”。

于是他接着回答:“可以让前端定时发心跳,比如每隔 1 分钟刷新一次。如果超过 3 分钟没心跳,就自动把人数减掉。”

这个回答让面试官露出了满意的神情。


第三阶段:高层架构

候选人开始描述大致的系统设计,并画出了一个简化架构图(截图里也有):

  1. 用户请求进入 API Gateway
  2. 请求被发送到 并发统计服务
  3. 服务会将并发数据存入 Redis 这样的高性能内存数据库;
  4. 前端查询接口直接读 Redis,获取实时人数。

面试官继续追问:“如果流量特别大,比如一秒钟几万次请求呢?”

这时候,我们给出的提示是“队列 + 批量写入”。

候选人马上回答:“可以在 API Gateway 后面接一个消息队列(比如 Kafka),然后由后台的 Consumer 批量更新 Redis。这样可以削峰填谷,避免 Redis 被压垮。”

同时他还补充:“Redis 可以采用分片或集群,支持水平扩展。”


第四阶段:深入细节与权衡

面试官明显想进一步挖掘,于是问:“假设有用户长时间挂着页面但不操作,你的系统会不会出现虚高?”

候选人回答:“这就是为什么需要心跳。如果心跳超时,就移除记录。这样即便用户没有点击离开按钮,数据也会自动纠正。”

接着,面试官换了个角度:“那如果 Redis 崩了怎么办?”

候选人想了一下,说:“在这种场景下,数据的目标是营造紧迫感,而不是严格统计,所以即便 Redis 挂掉,我们可以先用缓存返回一个最近值,再快速恢复。整体目标是保证用户体验不中断,而不是牺牲稳定性去追求绝对精确。”

这句话抓住了题目的本质。我们在后台看到,面试官直接点头认可。


第五阶段:候选人的表现

随着面试的推进,候选人从一开始的紧张,到后面越说越顺。他能条理清晰地描述系统设计,还能在面试官追问时给出合理的取舍。

这背后,其实就是 csoahelp 实时辅助的价值

  • 在他慌乱时,我们帮他稳住节奏,先澄清需求;
  • 在他遗漏心跳机制时,我们及时补充;
  • 在面试官加码压力时,我们帮他找到答题重点。

面试结束后,候选人长舒了一口气,说:“如果没有你们,我肯定讲不到这个层次。”


结语

这场 Booking 系统设计面试,表面上是一个“实时并发统计”的技术问题,本质上考察的却是候选人如何面对压力、如何在有限时间里组织思路并做出合理取舍。

csoahelp 的存在,就是让候选人在这种高压场景下,不会慌、不掉链子,能够把心里知道的内容顺畅地表达出来。

对于准备大厂面试的人来说,这不仅仅是技术上的提升,更是信心上的保障。

📩 如果你马上有一场面试,不想冒险 —— 来找我们。
不管你面对 Booking、Amazon、Meta 还是 TikTok,我们都能在面试过程中实时支持,确保你顺利答完题、讲清楚、留下好印象。

一场面试可能决定你能不能留下。我们会帮你,写好每一行代码,稳住每一个环节。

Leave a Reply

Your email address will not be published. Required fields are marked *