一面
1 介绍做过的项目,通过这个项目学到了什么,对项目做了怎样的改造和贡献,项目难点在哪,复杂度在哪,怎样保证稳定性?
2 redis 的分布式原理,数据一致性怎样保证,数据持久化,怎样选择持久化的策略,分布式缓存,击穿怎样处理?
redis 的分布式原理
数据一致性怎样保证
数据持久化
怎样选择持久化的策略
击穿怎样处理
3 在类创建对象和在方法里创建对象的区别,弱引用和强引用
4 ConcurrentHashMap 1.7 和 1.8 的区别,ConcurrentHashMap 的 size 方法
5 mysql 怎样设置乐观锁和悲观锁
6 jvm 参数的配置,设置 GC 回收器
7 线程池的链表队列可以设置大小吗
8 mysql 事务隔离级别
脏读:数据在修改
幻读:数据在增加
9 Spring 动态代理,JDK 动态代理和 CGlib 动态代理的区别。代理类没有实现接口,但是 spring 设置了采用 JDK 动态代理,会有什么样的影响。
jdk 内部通过反射去实力话对象, CGlib呢?给 CGlib 传一个接口呢?回答的时候要答出增强的作用。
10 Spring AOP 的例子
11 CAS 的实现方式
12 锁升级-偏向锁-轻量级锁-重量级锁
13 synchronized 和 lock 的区别,分别在什么场景下使用
14 支付回调失败怎样处理
15 canal 和 dubbo 各自的使用场景
16 分布式锁
17 限流怎样实现
18 会压测接口吗,每个接口的最大 QPS
面试官的建议:
1 要把项目完整描述清楚
2 基础不够扎实,不够深入
3 准备充分再去面试会更好
4 没有亮点
5 要做好业务也要学习基础知识,关注细节
6 不会就答不会,不用去猜
腾讯二面
1 Mybatis 执行 sql 的整个流程,加入缓存后的执行流程
2 dubbo 服务的异步调用怎样实现的,NIO
3 volatile 的底层原理
编辑
4 redis 哈希的底层实现,一开始就是数组和链表的结构吗
5 在页面下载导出 500 万的数据,你会怎样设计
6 假设索引的某个叶子节点存放了 100 条 记录(id,name,age)怎样快速找出 id 为 60 的记录
7 kafka消费慢,后面来了一批需要紧急处理的数据,这时候你会怎样做
8 ConcurrentHashMap 怎样扩容的,看过源码吗
9 CMS 和 G1 的区别
面试官的建议:
(1)1-3 年,打好基础,jvm,jdk源码,cpu,计算机网络,socket通信,操作系统,追求点而不是面
(2)3-5 定方向,框架和业务都要定好方向,做电商,还是做金融,还是做社交
(3)5-8 定向,深耕