Java常见面试题(五)

1、线程池的任务队列有哪四种?

ArrayBlockingQueue:有界阻塞队列

LinkedBlockingQueue:无界阻塞队列

SynchronousQueue:不存储元素的阻塞队列

PriorityBlockingQueue


2、线程中断的原理是什么?

其它线程通过调用该线程的interrupt()对其进行中断


3、线程调度的方式有哪两种?

协同式线程调度、抢占式线程调度


4、线程的暂停/恢复怎么实现?

等待/通知机制

注:不是问“启停”

43volatile的实现原理?

编译器生成字节码时,在指令序列中插入内存屏障,防止指令重排


44volatile有什么特点?

原子性、可见性,但不能保证操作的原子性


5volatile要实现同步怎么做?

volatile===>CAS===>+循环===>原子===>+有序===>锁(同步)

口诀:原子有序即同步


6、如何减少线程的上下文切换?

  1. 无锁并发编程
  2. CAS算法
  3. 使用最少线程和使用协程


7、对象如何延迟初始化?

基于volatile的解决方案、基于类初始化的解决方案


注:不能用双重检查锁定


8、指令重排序的缺点?如何解决?

重排序可能会导致多线程程序出现内存可见性问题。

禁止特定类型的编译器重排序;通过内存屏障指令,禁止特定类型的处理器重排序。如volatile


9Java堆是否规整由什么决定?

由采用的垃圾收集器是否带有压缩整理功能决定。


10、重载是什么?

方法具备不同的特征签名(不包含方法返回值)

#面试题目##Java#
全部评论
volatile保证可见性和有序性,不能保证原子性
点赞 回复 分享
发布于 2021-04-29 16:33
PriorityBlockingQueue:支持优先级排序的无界阻塞队列
点赞 回复 分享
发布于 2021-04-29 16:19

相关推荐

昨天 11:16
湖南大学 Web前端
我看到好多人都在说0offer好焦虑,结果一看是投了百度快手字节啥的。好像大家都是只想通过校招进大厂,对小公司是不考虑的吗😂可是能进大厂的难道不是只有少部分人吗,真心发问
梦想是成为七海千秋:沉默的大多数吧,喜欢晒的都是能引起共鸣的大厂,找小厂的人,别人也不认识你这个小厂,就自己偷偷找了实际上大多数人哪有什么机会能找到大厂
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务