中国旅游集团-Java开发

腾讯 · Java开发工程师 · 北京 · 2026-05

《面试题目》

  1. 中旅旅行——中国旅游集团旗下的旅行服务板块子公司,经营入境游、出境游、国内游、定制游、商旅管理及签证证件等全品类旅行服务业务的大型国有全资旅行服务企业。
  2. 投递的是base北京,显示流程结束了,面试的是base武汉,这也是目前面试的第一家完全不问任何ai相关的公司,可能和公司性质有关。
  3. 腾讯会议-41min
  4. 自我介绍
  5. 详细描述你的实习经历
  6. 异步编程机制是什么样的?和同步的有什么区别?是否和多线程执行任务一样?
  7. 如果两个步骤之间是有前后依赖的?
  8. Java集合框架中List和Set的区别
  9. ArrayList和LinkedList的区别是?应用场景有什么区别?
  10. HashMap底层数据是什么?
  11. Java反射机制的实现原理是什么?实际开发中的应用场景有哪些?
  12. 下列代码执行的结果是什么?

try{ 10. return “a”;

}final{ 11. return “b”; 10. 讲一下JVM的运行时数据区(内存结构),并说明各个区域的主要作用。 11. JVM内置了哪些类加载器? 12. 什么是双亲委派模型?它主要解决了什么问题?在什么场景下需要打破这种委派机制? 13. JVM是如何判断一个对象是否可以被垃圾回收的? 14. 多线程的实现方式有哪些? 15. 线程池有哪些类型?你最常使用哪种方式来创建线程池? 16. 创建自定义线程池时通常需要配置哪几个核心参数?请详细说明每个参数的具体含义与作用。 17. redis常用的数据类型有哪些? 18. redis的String类型的底层数据结构是什么? 19. 消息中间件有接触过哪些? 20. MQ如何保证消息消费的幂等性? 21. 手写SQL语句:查询出每个班级成绩大于70分的人数 22. 手撕算法:合并两个有序链表

反问环节

一共有几轮面试? 23. 公司研发部门的整体规模? 24. > 武汉子公司的后端有30~40人 25. 公司研发的业务范围? 26. > 类似携程旅游app,做旅游业的产品 27. 公司对AI转型的态度? 28. > 有AI业务,但不是核心


《参考解析》

  1. MySQL深度:MySQL InnoDB使用B+树索引,支持ACID事务。关键知识点:聚簇索引(主键索引)叶节点存完整行数据;辅助索引叶节点存主键值(需回表);MVCC通过undo log版本链+ReadView实现多版本并发控制,解决脏读/不可重复读;事务隔离级别从低到高:读未提交→读已提交→可重复读(默认)→串行化。

  2. Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。

  3. JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。

  4. Java并发:Java并发:synchronized关键字(偏向锁→轻量级锁→重量级锁升级);ReentrantLock(可重入、可中断、公平锁);volatile(内存可见性+禁止指令重排,不保证原子性);CAS(Compare-And-Swap,无锁乐观并发);ThreadLocal(线程本地变量,WeakReference,注意内存泄漏)。线程池核心参数:corePoolSize/maximumPoolSize/keepAliveTime/workQueue/handler。