腾讯 后端开发日常实习面经
《面试题目》
- 用户登录的验证码是哪来的
- token存在哪儿
- 商户更新了自己的信息,会发生什么
- 如何保证更新数据库,删除缓存这套流程的数据一致性?
- 讲一下垃圾回收
- 标记清除算法导致内存碎片化了,最终我要分配一个很大的内存该怎么办?
- redis的数据结构
- 跳表怎么实现zset
- 讲讲Java、Python、Go三者区别
- 讲讲解释型语言和编译型语言的区别
- GMP模型
《参考解析》
-
Redis核心:Redis常用数据结构:String/Hash/List/Set/ZSet。持久化:RDB(定期快照,恢复快,数据可能丢失)和AOF(追加日志,数据安全,文件大)。缓存穿透用布隆过滤器;缓存雪崩加随机过期时间+多级缓存;缓存击穿用互斥锁或逻辑过期。分布式锁用SET key value NX PX + Lua脚本保证原子释放。
-
JVM与GC:JVM内存模型:堆(对象分配,GC管理)、方法区(类信息、常量池)、虚拟机栈(栈帧/局部变量/操作数栈)、本地方法栈、程序计数器。GC算法:标记-清除(内存碎片)、标记-整理(无碎片,但移动对象)、复制(新生代)。G1按Region划分堆,预测停顿时间。
-
算法题解析:常用算法思路:动态规划(状态转移方程,自底向上);BFS/DFS(图遍历,BFS找最短路,DFS回溯);双指针(有序数组去重/两数之和);滑动窗口(子串/子数组问题);二分查找(有序或单调性)。时间复杂度分析:关注最坏情况和平均情况。