1.equals 方法本质就是 ==。引用对象不重写equals方法就是比较地址值
2.String 不是基础类型
3.java 中的 Math.round():正数网上取整,负数舍弃
4.字符串反转:StringBuilder /StringBuffre的reverse()方法
5.字节流和字符流的区别是:字节流按 8 位传输以字节为单位输入输出数据,字符流按 16 位传输以字符为单位输入输出数据。
6.Integer的值在-128—127之间,直接到常量池获取不用创建新对象
7.创建对象时构造器的调用顺序是:先初始化静态成员,然后调用父类构造器,再初始化非静态成员,最后调用自身构造器。
8.Object.wait()方法使用在同步锁当中
9.synchronized 和java.util.concurrent.locks.Lock的异同:
1.Lock 能完成synchronized所实现的所有功能
2.synchronized会自动释放锁,lock需要开发人员收到释放
并且最好在finally 块中释放
3.synchronized底层是利用了原生的c/c++实现,不可控。lock是纯java实现的锁机制
AQS(AbstractQueuedSynchronizer)
底层:三大核心->自旋、LockSupport、CAS
AQS具备特征:
·阻塞等待队列
·共享/独占
·公平/非公平
·可重入
·允许中断
CLH队列:没有拿到锁的线程由自旋变成阻塞
FIFO:先进先出
参考:https://zhuanlan.zhihu.com/p/60884042
10.所谓设计模式,就是一套被反复使用的代码设计经验的总结
11.单例饿汉式可以避免并发出现多个实例问题,线程安全
12.springcloud的五大常用组件:zuul网关,Eureka 注册中心,Ribbon 客户端负载均衡,Hystrix熔断机制,springcloud Config分布式配置
13.mysql的Explain使用了解参数含义
查询优化:
http://1.in 和 exist用法场景区分:数据集大的in数据集小的,反之用exist
2.order by字段 尽量使用索引,mysql排序使用index和filesort两种方式
锁机制:
分类:按操作分为 读锁(共享锁) 写锁(排他锁)
按操作颗粒度分为:
表锁 偏向MyISAM存储引擎,开销小,加速块;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行锁 ·偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定力度最小,发生锁冲突的概率最低,并发度也最高。
·表中没有索引就升级为表锁
间隙锁(GAP):(不建议使用)当我们用范围