synchronized 关键字就略微复杂了,也需要你回答不同版本下的实现原理(1.6与1.6 之后)1.6 之前采用重量级锁的方式,实际是利用操作系统的 mutex lock 指令,在对应代码块出入口位置添加monitor enter 和 monitor exit 来进行加锁解锁,而修饰方法时添加 ACC_synchronized 标志表明当前方法为同步方法。然后就说这个重量级锁可能引起的性能上面的问题,频繁的切换用户态和内核态会引起性能下降。所以 1.6 之后做了锁升级的优化。然后再介绍一下说一下锁的四种状态-无锁、偏向锁、轻量级锁、重量级锁,锁升级的流程。这个问题基本你就拿下了。
2 2

相关推荐

01-11 12:43
门头沟学院 Java
一面30min左右自我介绍+项目全流程讲解 5min左右项目提问10min左右(只能回忆一部分)1.在与大模型的交互中,通常采用的是SSE 协议,为什么要在项目中使用IM来进行通讯?2.分布式ID高性能改造,做了那些方面的性能优化?3.消息推送平台中数据存储的设计?八股15min1.分布式锁?分布式锁要解决那些问题?2.数据一致性解决方案中,延迟双删的问题?3.新建一个线程池要指定哪些参数?整个运行过程?4.核心线程数量,还有最大线程数量,还有一个是工作队列。但是工作队列我们一般都会去选择有界的,很少去选择无界的这个队列。基于这三个参数的这个大小,我们应该怎么去评估?5.队列的大小应该怎么去设置?6.HashMap扩容流程7.索引失效有哪些场景?8.类型转换为什么会失效?9.RocketMQ中的事务消息原理?场景题5min左右1在不使用RoctetMQ本身提供的这一套机制的话,我们自身有没有什么其他的方案能够避免这种问题?二面30min左右(已挂)1.gap一年在做什么?2.讲一下项目中的两个点亮,如何设计,碰到的问题,怎么解决的?3.Object中有两个方法,一个是 equals,一个是 hashCode。一般是重写了equals,单身通常是要重写hashCode,为什么?4.写Java代码的时候,打交道最多的,一个是 JDK, 一个是Spring?讲一下在哪个地方见到用到了什么样的设计模式。5.MySQL的索引默认Innodb引擎,为什么?6.数据库的隔离级别7.如果开发的应用程序上线之后,突然出现CPU猛涨的情况,如何去查?8.双栈实现一个队列,口述思路。
查看22道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务