去哪儿旅行 Agent 开发 AI 面试面经
- 轮次
- AI面试
- 时间
- 2026-09
- 来源
- 牛客网
《面试题目》
- G1 相比 CMS 做了哪些优化,可配置停顿目标如何实现?
- 期望停顿时间设置过小时会有什么影响?
- Java 中有哪些无锁并发方式,CAS 的实现逻辑是什么?
- ABA 问题会造成什么业务错误,如何处理?
- 联合索引字段顺序如何影响查询效率?
- 多个字段都是等值条件时,字段区分度如何影响实际扫描量?
- TCP 三次握手流程是什么,为什么不能只握手两次?
- QUIC 在网络切换时为什么能够保持连接?
- 如何设计一秒内返回最低报价的机票查询系统?
- 基础运价和调价规则变化时,缓存如何保持一致?
- 如何设计每秒一万次请求且库存有限的积分抽奖系统?
- 高并发下如何实现奖品加权随机并避免超发?
《参考解析》
- G1 停顿控制:G1 将堆划分为 Region,基于回收收益预测选择回收集合。停顿目标是软目标,设置过小会减少单次回收工作量,可能导致回收追不上分配速度并增加额外开销。
- CAS 与 ABA:CAS 比较内存值与期望值并原子更新;ABA 表示值虽恢复原样但中间状态已变化,可使用带版本号的引用识别。业务层还需判断状态转换是否合法。
- 联合索引:等值匹配覆盖完整联合键时,字段顺序通常不改变精确定位范围;但顺序仍会影响前缀复用、范围条件后的可用列、排序和其他查询,需按查询集合设计。
- 报价系统:预计算稳定规则,实时应用少量动态调整;按航线和日期分区缓存候选报价,并通过版本化事件更新或失效缓存。最终报价需携带规则版本,避免新旧规则混算。
- 抽奖系统:资格校验、概率选择和库存扣减要形成可审计链路。库存预扣必须原子化,中奖记录使用幂等键,异步落库失败进入可重试补偿流程。