面试官是美团快驴的技术leader。
1. 自我介绍:专业,论文,获奖,GPA都问了下
2. 聊聊项目:简单介绍了下项目模块。每个模块的逻辑,怎么实现,用到了什么技术。如何去改进现有项目:1.先聊了聊加mq,有什么好处(登录模块解耦,减少等待时间),2.又聊了聊加分布式缓存(对哪些接口加缓存)。3. 接口访问花费时间是多少,是否数据库加了索引(大数据量可以加索引优化)。4. 前后端怎么传值(封装到JWT)。5.聊了聊md5加密算法,以及@JsonIgnore注解。
3. JVM相关:JVM分区,每一部分作用(老八股),所有对象是否都在堆里面分配(未逃逸的对象在栈中分配),逃逸分析(参考之前字节面试)。类加载过程(聊了聊整个类加载过程,又顺带讲了讲java双亲委派机制,以及类回收机制)。
4. Mysql相关:一条sql语句的执行过程(老八股),mysql的隔离级别,默认是哪个(单点系统默认rr,集群中可能设置为串行化),解释一下不可重复读是什么(老八股),rr隔离级别下如何保证可重复读(mvcc机制,临场忘了没答上)。
5. Redis相关:Redis的缓存穿透和缓存击穿是什么(老八股)。如何防止缓存击穿(1. 前后端传值加逻辑筛选, 2. 布隆过滤器, 3. 恶意key设置短的过期时间),如何防止缓存雪崩(1. 对于多个热点key设置不同的过期时间 , 2. 部分热点key设置不过期或者设置很长的过期时间)
6.写题:从中序和后序遍历中重构二叉树:力扣106,先思考加说思路5min,写题10min,牛客面试,白板无任何提示,不允许用IDEA。
7.反问:业务场景,业务量,用户数(均是百万级别)。技术栈:springboot,redis,以及二次开发后的kafka。