1.线程池整个工作流程,原理,参数作用。
https://blog.csdn.net/lzxlfly/article/details/83904032
https://www.cnblogs.com/yanggb/p/10629387.html
2.线程池如果线程超过核心线程数量,线程池会怎么处理
3.Java垃圾回收机制CMS算法
4Kafka的group概念用法等等
5.mysql中主键有什么用,和别的索引有什么区别?
6.mysq如何优化
1.已知查询、更新、删除结果只有一条语句时加limit 1
2.避免select * 查询语句
3.复合索引最左前缀原则
4.like索引失效问题
5.隐式转换可能导致索引失效而进行全表扫描。
6.尽量避免使用!=、not in、<>等否定操作,会导致索引失效而进行全表扫描。
7.索引覆盖、聚集索引、普通索引、回表查询
8.show index from tblname; DORP INDEX IndexName ON tab_name;
9.在join表的时候使用相当类型的列,并将其索引
10.添加外键:FOREIGN KEY (vend_id) REFERENCES Vendors (vend_id) 建表时
ALTER TABLE Products ADD FOREIGN KEY products_vendors_fk_1 (vend_id) REFERENCES Vendors (vend_id); 建表后添加
https://www.cnblogs.com/xwgcxk/p/8855469.html
https://www.cnblogs.com/zhouyusheng/p/8038224.html
7volite底层实现
8.mysql的死锁
9.线程的死锁
10.浅克隆(ShallowClone)和深克隆(DeepClone),实现方式?
克隆可以使复制对象简单;clone是一个native方法,在底层实现的,就是快啊。
浅克隆是指拷贝对象时仅仅拷贝对象本身(包括对象中的基本变量),而不拷贝对象包含的引用指向的对象。
深克隆不仅拷贝对象本身,而且拷贝对象包含的引用指向的所有对象。举例来说更加清楚:
克隆的步骤:
对象的类实现Cloneable接口;
覆盖Object类的clone()方法 (覆盖clone()方法,访问修饰符设为public,默认是protected);
在clone()方法中调用super.clone();
深克隆的两种方式:
①、手动进行深克隆
②、利用serializable实现深复制
浅拷贝只会克隆基本数据属性,而不会克隆引用其他对象的属性,但String对象又不属于基本属性,这又是为什么呢?
这是因为String对象是不可修改的对象,每次修改其实都是新建一个新的对象,而不是在原有的对象上修改,所以当修改String属性时其实是新开辟一个空间存储String对象,并把引用指向该内存,而克隆出来的对象的String属性还是指向原有的内存地址,所以String对象在浅克隆中也表现得与基本属性一样。
11.mybatis的一级缓存二级缓存
12.mysq的间隙锁
13.序列化的作用
14dubbo、mq、rabbitMQ
15.spring的高级特性
16.如何实现线程间通讯
17.hash底层结构,为何使用树
18.乐观锁、悲观锁
https://blog.csdn.net/qq_34337272/article/details/81072874
19.map/set/list使用场景
20.不加锁情况下如何访问数据库,不至于出现数据不一致的问题
21.实现单例模式的两种方式
22.数据库建表查询dengdeng
23.冒泡排序
24.Java锁的情况(sychrosize/lock/volitale)
25.jdk1.8的新特性、函数式接口
26.mysql分库分表
27.mybatis缓存
28.ES存储
29.Java锁的情况(实际上有三个,sychrosize/lock/volitale)
30、Redis分布式锁
31、innodb和myisam区别