腾讯PCG后台开发一面凉经

腾讯 · 软件开发工程师 · 一面 · 重庆 · 2026-06

《面试题目》

  1. String str = “abc” 和 String str = new String(“abc”)的区别;
  2. Java的垃圾回收算法有哪些?
  3. Java 的 intern 的作用
  4. 如果在线上业务的GC突然增多,你会如何排查?
  5. TCP 和 UDP 的区别?
  6. 基于UDP的网络视频场景下,如果用户因为网不好导致视频质量不好,如何优化?
  7. 什么是慢查询?
  8. 如果要将数据库的上百万条数据一起取出,你会如何优化查询?
  9. Redis有慢查询吗?
  10. Redis的大key,如果是在线上的,如何保证用户体验的同时安全地将其删除?

《参考解析》

  1. 计算机网络:TCP(传输控制协议)是面向连接、可靠的传输协议,提供流量控制和拥塞控制;UDP(用户数据报协议)是无连接、不可靠但速度更快的协议。TCP通过三次握手建立连接(SYN→SYN+ACK→ACK),四次挥手断开(FIN→ACK→FIN→ACK)。

  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. 算法题解析:常用算法思路:动态规划(状态转移方程,自底向上);BFS/DFS(图遍历,BFS找最短路,DFS回溯);双指针(有序数组去重/两数之和);滑动窗口(子串/子数组问题);二分查找(有序或单调性)。时间复杂度分析:关注最坏情况和平均情况。