腾讯后台开发二面面经

腾讯 · 后台开发 · 二面 · 2026-03

面试题目

一、算法题

  1. LRU缓存变种:在LRU基础上增加访问次数阈值k,达到阈值才进入LRU淘汰机制。
  2. LeetCode 56 合并区间:需先排序,考察区间合并逻辑及自定义排序函数。

二、八股文

  1. 消息队列:RabbitMQ/RocketMQ与Kafka选型对比,Kafka丢数据场景分析。
  2. 微服务:对比单体架构的优劣势。
  3. 分布式事务:2PC与3PC的区别。
  4. 数据库与缓存:MySQL、Hive、Redis应用场景对比。
  5. 搜索引擎:ES倒排索引原理。
  6. 数据同步:Hive到MQ同步方案中引入MQ的必要性。
  7. MySQL:Binlog机制、全量与增量同步区别、事务特性(ACID)及实现、Redo/Undo log作用、隔离级别实现(MVCC/间隙锁)、索引结构(B+树/B树/红黑树/Hash)、覆盖索引。
  8. Redis:哨兵模式与集群架构。
  9. 框架原理:Spring Boot加载外部库机制(类加载器)。
  10. 语言对比:Java、Python、C++、PHP的差异。

三、项目经历

  1. 项目中的挑战及深刻记忆。

参考解析

  1. Kafka丢数据场景:通常发生在异步刷盘时机器宕机,或副本同步机制设置不当(如acks=1或0)。建议理解ISR机制及如何通过配置(acks=all, min.insync.replicas)保障一致性。

  2. MySQL事务隔离级别:读未提交、读已提交、可重复读(RR)、串行化。RR级别主要通过MVCC(多版本并发控制)加行锁实现,其中MVCC通过隐藏字段(trx_id, roll_pointer)和ReadView实现快照读。

  3. B+树优势:相比B树,B+树非叶子节点不存数据,磁盘IO更少,叶子节点有序链表结构非常适合范围查询。相比红黑树,B+树高度更低,更适应磁盘存储特性。

  4. 覆盖索引:指索引中包含了所有需要查询的字段,无需回表查询聚簇索引,能显著提升查询效率。判断方法即Explain执行计划中Extra列是否显示“Using index”。

  5. Spring Boot类加载:Spring Boot通过自定义的LaunchedURLClassLoader处理嵌套JAR文件(Fat JAR),利用JarLauncher解析BOOT-INF/lib下的依赖并加载。