3.12腾讯视频后端一面

腾讯 · 后端开发 · 一面 · 2026-03

面试题目

基础与底层:

  1. 多态在编程中有什么作用?Java 里是怎么实现的?
  2. 并发编程用什么措施?
  3. 讲一下 Java 垃圾回收机制和常见 GC 算法。
  4. 内存溢出、频繁 GC 可能是什么原因?怎么优化?
  5. TCP 和 UDP 的区别?适用场景分别是什么?为什么 UDP 不可靠还要用?
  6. HTTPS 攻击场景下证书伪造的可能性。
  7. B 树与 B+ 树的区别。

数据库与 Redis:

  1. 数据库 ACID 是什么?事务隔离级别及对应问题。
  2. Redis 常用数据结构及适用场景。
  3. Redis 为什么要用 Lua 脚本?其原子性如何保证?在集群模式(跨 slot)下是否保证原子性?

高并发与分布式系统:

  1. 秒杀场景下的库存超卖与防并发下单问题。
  2. 分布式 ID 生成方案。
  3. 分布式锁设计:按用户 ID 加锁的性能瓶颈分析,及 Redis 宕机后的锁释放问题。
  4. 支付场景下如何通过幂等机制处理超时、丢包和重复提交。

综合与算法:

  1. 在校期间如何使用 AI 辅助学习。
  2. 算法题:删除链表倒数第 N 个节点(需分别用双指针法和栈实现)。

参考解析

  1. Java多态实现:通过继承(重写)和接口实现,底层依赖虚函数表(vtable)进行动态绑定,实现“同名不同行”。
  2. B+树优势:相比B树,B+树所有数据存储在叶子节点,非叶子节点只存储索引,层级更浅,磁盘IO更少,且叶子节点通过链表连接,适合范围查询。
  3. 分布式锁宕机问题:设置锁的过期时间(TTL)防止死锁;使用 Redlock 算法或通过 Lua 脚本原子性加锁,解锁时校验唯一标识确保不会误删他人锁。
  4. 幂等设计:通常采用全局唯一请求 ID,通过 Redis 原子性 setnx 记录或数据库唯一索引保证在多次请求中只有一次被处理。
  5. 链表倒数第N个节点
    • 双指针法:快指针先走 N 步,随后快慢指针同速,快指针到末尾时,慢指针指向倒数第 N 个节点的前驱。
    • 栈法:将节点入栈,弹出 N 次找到目标节点的前驱。