答案自行百度,本文只记录我不会的问题:
1.mybatis 一级缓存与二级缓存区别
答:一级缓存是sqlsession级别,每个不一样,保存sql语句 默认开启,二级缓存是mapper级别,多个sqlsession可共用一个mapper(二级缓存),保存查询结果 默认不开启 当sql语句查询时,先去一级缓存查是否有相同的sql语句查询过。
2.mybatis #{}与${}区别
答:前者把传入值当成一个字符串就是在外面再加“”,后者是直接拼入sql语句,前者防止sql注入.
3.mysql查询原理
答:当mysql收到查询语句时,先调用mysql的api进入一级缓存查询是否有相同的语句已执行,如果没有,进行语句的解析,排列,验证,执行。并把结果放到二级缓存
4.hashmap的原理,list和likelist 的区别 肯定会问
5.线程创建的方法
6.notify与notifyAll()区别
答:故名思意 all就是唤醒所有的,但是前者不能指定唤醒哪一个,只唤醒当前线程,就是放到哪个线程,就唤醒哪个线程.
7.spring mvc 原理
8.spring加载类的原理
9.aop和ioc原理
答:动态代理和反射
10.静态代理和动态代理的区别
答:前者在程序运行之前就把类或方法进行代理完毕,而后者是在程序运行时,进行代理。
11.静态变量和实例变量的区别。
12.sleep()方法和yield()方法和wait()方法之间的区别
答:sleep()释放资源不释放锁 抛出异常
wait()放锁放资源 抛出异常
yield()都不释放 不抛出异常 只是暂停一下本线程执行
13.ArrayList 初始大小 为10 扩容底层是新建一次 HashMap 初始大小是16
14.三次握手协议
第一次
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。
第二次
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。
15.TCP与UDP区别
16.HashMap是 线程安全的吗 为什么 String是吗 为什么
17.类的加载过程 从查找说起
18.spring是线程安全的吗
19.ACID MVCC
20.你在浏览器上输入一个地址进行访问,中间都发生了什么
21.Synchronized和lock的区别 高级一点的就是Synchronized和ReentrantLock的区别
22.介绍一下java虚拟机内存模型,然后继续讨论volatile
22.微服务的优缺点
23.分布式事物 二段提交 本地消息表 消息中间件
24. 分布式锁 主要redis
25.dubbo 的服务降级 拒绝策略 集群容错性
26.索引分类 聚簇索引与非聚簇索引 B树 B+树