腾讯视频后端开发面经

腾讯 · 后端开发 · 2026-04

《面试题目》

一、 项目深挖与常规问答

  • 自我介绍。
  • 挑一个花费时间最多、最重点的项目介绍,并罗列一两个难点。
  • 目前项目的访问量多大?

二、 计算机基础与后端八股

  • 操作系统与网络:Python多进程解决OOM原因;进程与线程区别;FastAPI连接过程(TCP三次握手);WebSocket与轮询对比。
  • JVM:运行时内存区域;堆内存回收机制;引用类型回收逻辑。
  • Redis:布隆过滤器、互斥锁、逻辑过期应用;逻辑与物理过期区别;HyperLogLog、ZSet、Bitmap原理与场景;统计七天活跃用户交集方案。
  • RabbitMQ:消息百分之百入库保证;死信队列处理;消息幂等性。
  • MySQL:签到表索引设计;高并发重复点赞MySQL解决方案;乐观锁与悲观锁对比及悲观锁缺陷。

三、 算法与代码手撕

  • 实现 O(1) 时间复杂度的 LRU 缓存。
  • 合并 K 个升序链表。

四、 AI 与大模型工程

  • RAG 工作流步骤;RAG 知识库生成步骤;向量检索相似度判断;Agent 架构设计。

五、 反问环节

  • 入职工作内容与难点;腾讯内部 AI 辅助编程态度;面试评价与建议。

《参考解析》

  1. Python多进程vs多线程:Python受限于GIL(全局解释器锁),多线程无法利用多核CPU执行计算密集型任务,而多进程拥有独立内存空间,可规避GIL并利用多核,适合处理大内存计算以解决OOM。
  2. TCP连接过程:即经典三次握手(SYN -> SYN/ACK -> ACK)。FastAPI底层基于Starlette和uvicorn,涉及异步I/O事件循环,需理解内核缓冲区与文件描述符操作。
  3. Redis缓存一致性:布隆过滤器解决缓存穿透;互斥锁解决缓存击穿;逻辑过期通过提前设置过期时间字段,由后台线程异步重建,避免缓存失效瞬间压力。
  4. RabbitMQ可靠性:生产端使用Confirm机制确认投递,MQ端通过持久化存储(Queue/Message Durable),消费端通过手动Ack确认处理完成,配合幂等性检查(如Redis存唯一流水号)保证一致性。
  5. MySQL索引与锁:签到表应建立(user_id, sign_date)联合索引;高并发点赞可用MySQL的UNIQUE索引或Atomic update(update … where … and status=0)实现;乐观锁通过CAS版本号机制,减少锁冲突导致的阻塞。