模拟Java面试(一)

  1. HashMap的扩容机制

默认长度为16,存储到0.75f的时候会自动扩容2倍

  1. 线程的几种状态

创建 就绪 运行 阻塞 死亡

  1. 介绍一下AQS的信号量

和Synchronized的区别在于,信号量指定了一个共享区域允许多个线程共同访问。

  1. 自旋锁是否使用cas算法

  1. volatile的特点

将变量直接写入内存,让线程可以直接访问到

  1. redis分布式如何进行缓存一致性

将读与写串行化在内存中存储

  1. 解释一下orm的原理

对象关系映射。

在springboot中有AutoConfiguration,这样不太好说明,以spring举例:

①xml文件里,我们可以将xml的信息读入内存结合对应的类解析出关键的字段,属性等等
②properties里,我们可以进行连接数据库的配置
③通过解析映射文件,利用反射得到数据库得到映射类的信息,通过构造方法创建对象,再通过set方法注入值。

  1. tcp和udp的区别

tcp面向连接,udp面向无连接
tcp传输可靠,udp传输不可靠
tcp字节流传输,udp用数据报文段
tcp传输慢,udp传输快
tcp传输需要资源多,udp传输需要资源少
tcp应用场景是要求通信数据可靠,udp是要求数据传输快
tcp首部字节长20-60,udp首部字节长8个字节

  1. spring如何解决循环依赖

(1)每当我们创建一个bean的时候,会将其放在一个bean池,然后循环创建的同时会去对比,如果有相同的bean,会抛出BeanCurrentlylnCreationException ,就意味着循环创建bean了
(2)三级缓存:第一级缓存初始化单例对象的cache,第二级缓存如果发现对象没初始化,就曝光单例对象的cache,第三级缓存带他进行实例化。
(3)spring容器不对正在创建的bean池的bean去进行曝光

发布了296 篇原创文章 · 获赞 53 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41936805/article/details/103646522
今日推荐