腾讯AI全栈开发实习一面面经

腾讯 · AI全栈开发实习 · 一面 · 2026-04

面试题目

  1. 项目经历:介绍项目,阐述亮点,指出遇到的问题及解决方案。
  2. Java基础:数组与链表的区别,详细对比时间空间复杂度。
  3. 并发编程:乐观锁与悲观锁的差异,ThreadLocal的原理及使用场景。
  4. 计算机网络:HTTPS加密原理;TCP三次握手为何不能是两次。
  5. MySQL:数据库相关基础(面试官未深究)。
  6. Redis:缓存击穿与缓存穿透的定义及解决方案。
  7. Spring与微服务:给出特定应用场景下的技术解决方案。
  8. 算法:无手撕代码。

参考解析

  • 数组与链表:数组在内存中连续,支持随机访问(O(1)),但插入删除需移动元素;链表通过指针连接,插入删除快(O(1)),但空间开销大且不支持随机访问。
  • 乐观锁与悲观锁:悲观锁(如synchronized)假设并发必发生,强制加锁;乐观锁(如CAS)假设冲突少,通过版本号机制重试,性能更高。
  • ThreadLocal:每个线程维护一个本地变量副本,通过ThreadLocalMap存储,实现线程间数据隔离,常用于用户信息传递。
  • TCP三次握手:两次握手无法防止已失效的连接请求突然又传送到服务端,导致资源浪费;三次握手确保双方接收/发送能力正常,同步序列号。
  • 缓存穿透与击穿:穿透是请求不存在的key,需用布隆过滤器或缓存null值;击穿是热点key失效,需设置互斥锁或逻辑过期。