当前位置: 首页 > news >正文

每日面试实录·携程·社招·JAVA

📍面试公司:携程
👜面试岗位:后端开发工程师(社招)
🕐面试时长:约 50 分钟
🔄面试轮次:第 1 轮技术面


✨面试整体节奏:

这场携程的社招 Java 一面整体偏“系统设计 + 高并发 + 中间件 + Java 基础 + 算法”方向,涵盖了项目实战、分布式系统细节、Redis、MySQL 底层原理等。整体节奏紧凑,问题细致且深入原理,算法题也考察了复杂排序规则和编码能力。


✅ 面试题目逐题整理与解析:


1. 项目介绍 + 商品库为什么要 BC 分开维护

考察点:系统设计能力、业务理解能力
面试公司:携程
答案
B 端和 C 端面向的用户群体不同,商品属性、库存策略、定价方式可能存在较大差异。为了满足不同的业务模型和运营需求,BC 分开维护更灵活,方便分别做业务优化和权限控制。


2. BC 数据如何同步?是否存在不一致?

考察点:数据一致性、分布式同步策略
面试公司:携程
答案
同步方式可采用双写、事件总线(如 Kafka)、定时任务等。确实存在不一致可能,比如异步消息延迟、网络异常。通常通过幂等设计、补偿机制、状态校验等手段保障最终一致性。


3. 秒杀场景如何做减库存?

考察点:高并发控制、Redis 原子性操作
面试公司:携程
答案
常见方案:

  • 使用 Redis 预减库存,减成功再异步落库;
  • 使用 Lua 脚本确保 Redis 中的库存扣减原子性;
  • 利用消息队列异步处理订单,削峰填谷;
  • 数据库层做最终校验。

4. 异步操作如何与前端交互?

考察点:系统异步设计、用户体验优化
面试公司:携程
答案
一般通过轮询、WebSocket、长轮询、通知接口等方式。前端发起操作后立即返回操作状态或任务 ID,然后定期轮询后端接口或通过事件推送获取进度和结果。


5. Redis 是单机版还是 cluster 模式?

考察点:缓存架构设计
面试公司:携程
答案
生产环境一般推荐使用 cluster 模式,具备分片和高可用特性。单机版适合开发测试或小规模项目,不支持自动分片和容灾。


6. Redis 的主从同步原理

考察点:缓存高可用机制
面试公司:携程
答案
主从同步包括全量同步(初次连接)和增量同步(复制 backlog)。当从节点第一次连接主节点时,会触发 RDB 快照并发送数据,之后通过命令传播保持同步。


7. Redis 的 RDB 与 AOF 有何区别?

考察点:数据持久化机制
面试公司:携程
答案

对比项RDBAOF
保存方式定期快照每次写操作追加日志
启动恢复速度
数据完整性有数据丢失风险更安全
适用场景大批量恢复高可靠性需求

实际生产环境常组合使用。


8. Redis Cluster 分片策略 & 新节点加入机制

考察点:分布式缓存扩容机制
面试公司:携程
答案

  • Redis Cluster 使用 哈希槽(hash slot)机制,总共 16384 个槽。
  • 加入新节点后会触发 槽重分配(resharding),部分槽会从旧节点迁移到新节点,迁移时需考虑数据复制和一致性。

9. 缓存击穿怎么解决?

考察点:缓存异常处理
面试公司:携程
答案

  • 加互斥锁(如基于 Redis setnx)防止并发回源;
  • 设置热点 key 的 预热机制
  • 限流保护;
  • 使用本地缓存 + Redis 双层结构。

10. NIO 与 BIO 的区别?

考察点:Java 网络编程模型
面试公司:携程
答案

模型BIONIO
编程模型阻塞非阻塞
线程模型一个请求一个线程单线程处理多个请求
性能并发差并发强,适合高并发场景

11. HashMap 原理及线程安全问题

考察点:Java 容器原理
面试公司:携程
答案

  • HashMap 采用数组 + 链表 + 红黑树结构;
  • 使用 hash(key) 计算索引;
  • 非线程安全,可能引发死循环;
  • 线程安全推荐使用 ConcurrentHashMap。

12. ConcurrentHashMap 是如何实现线程安全的?

考察点:并发编程
面试公司:携程
答案

  • JDK 1.7 使用分段锁(Segment),每段加锁;
  • JDK 1.8 使用 CAS + synchronized + 链表/红黑树
  • 提高并发度同时保证数据一致性。

13. CMS 与 G1 垃圾回收器对比

考察点:JVM 性能调优
面试公司:携程
答案

特性CMSG1
回收策略标记-清除分区 + 并行回收
停顿时间更可控
吞吐量一般
碎片问题
推荐使用已废弃推荐使用 G1 及 ZGC 等新一代 GC

14. MySQL 的索引、锁机制

考察点:数据库底层原理
面试公司:携程
答案

  • 索引底层为 B+ 树;
  • 叶子节点存储的是完整记录的主键 ID(辅助索引需要回表);
  • 索引匹配原则:最左前缀、联合索引顺序、范围查询终止匹配;
  • 锁机制:行锁、间隙锁、意向锁等,InnoDB 默认支持行级锁。

15. 算法题:斗地主牌排序

考察点:集合使用、排序规则抽象、编码能力
面试公司:携程
题目描述
给定一手斗地主牌(17 张),按照斗地主的排序规则从大到小依次排序牌面。从大到小依次为:大王、小王、2、A、K、Q、J、10、…、3。相同牌面时按花色排序:黑桃 > 红心 > 方块 > 梅花。

答案示例(Java 代码略,思路如下):

  1. 自定义牌面权重 map;
  2. 自定义花色权重;
  3. 构建牌对象(包含牌面+花色);
  4. 使用自定义 Comparator 排序。

💡总结 & 面试复盘:

这场携程社招 Java 一面从多个层面进行了考察:

  • 系统设计:BC 商品维护分离、异步交互、缓存穿透等;
  • 中间件理解:Redis 的持久化、分布式集群原理、消息队列处理;
  • 并发编程:线程安全、ConcurrentHashMap 底层原理;
  • JVM 与数据库原理:GC 算法、MySQL 索引机制;
  • 算法题:考察代码抽象能力与逻辑思维。

✊写在最后:

这场携程的技术面,非常重视实战经验和原理理解,建议在准备时不要只停留在“用”,而要深入“为什么这么设计”。掌握中间件和高并发问题的应对方式,是面试成功的关键。

准备 Java 面试时,建议构建自己的知识体系:项目 → 原理 → 应用场景 → 性能优化,逐层递进,稳扎稳打,终会如愿拿下 offer!


如果你也在准备 Java 后端面试,可以留言交流或私信我,后续我也会持续整理高频 Java 面试题合集,助你顺利上岸!

相关文章:

  • 牛客 | OJ在线编程常见输入输出练习
  • Java中订阅消费模式(发布-订阅模式)和观察者模式的区别
  • 2025年渗透测试面试题总结-拷打题库08(题目+回答)
  • Java8-遍历list取出两个字段重新组成list集合
  • FreeSWITCH 简单图形化界面41 - 批量SIP视频呼叫测试
  • SQL注入之information_schema表
  • 浅聊docker的联合文件系统
  • 【AI 加持下的 Python 编程实战 2_07】第七章:基于 Copilot 完整演示问题分解能力在实际问题中的落地应用
  • 从事计算机视觉需要掌握哪些知识
  • 面试题:循环引用两个节点相互引用,如何判断哪个用 shared_ptr?哪个用 weak_ptr?
  • Pytorch实战
  • 软件架构师的“天、人、术、势“:构建未来系统的哲学框架
  • Linux 下依赖库的问题
  • OV-Watch(一)(IAP_F411学习)
  • 【Part 2安卓原生360°VR播放器开发实战】第一节|通过传感器实现VR的3DOF效果
  • Milvus(1):什么是 Milvus
  • 21. git apply
  • 大模型技术解析与应用 | 大语言模型:从理论到实践(第2版)| 复旦大学 | 533页
  • 深度学习方向急出成果,是先广泛调研还是边做实验边优化?
  • springboot自动装配的原理
  • 消息人士称哈马斯愿与以色列达成长期停火
  • 南方将迎三轮降雨,两广旱区的“解渴雨”也要来了
  • 人民日报:当阅读成为“刚需”
  • 独家专访|苏童:《好天气》是一部献给中国郊区的作品
  • 白兰花香飘京城,上海文化体验项目点亮中华民族共同体之美
  • 亚洲大厦和一个被音乐剧改变的街区