JAVA高级面试题汇总及答案

这篇博客汇总了Java面试中的高级题目,涵盖了JVM、并发编程、Spring、数据库、分布式锁、RPC框架等多个方面,包括HashMap原理、synchronized优化、类加载机制、Redis和MQ的使用、线程安全队列设计等核心知识点。
摘要由CSDN通过智能技术生成

JAVA高级面试题汇总及答案

1.hashaMap原理源码
2.synchronize关键字1.6之后的优化,(偏向轻量级锁,重量级锁)

synchronized是Java提供的一个并发控制的关键字,作用于对象上。主要有两种用法,分别是同步方法(访问对象和clss对象)和同步代码块(需要加入对象),保证了代码的原子性和可见性以及有序性,但是不会处理重排序以及代码优化的过程,但是在一个线程中执行肯定是有序的,因此是有序的。
原理:借用对象markword中的标记以及monitor监控器生成monitorEnter以及monitorExit指令以及对应的计数器。
在jdk1.6之前,synchronized是非常重量级的,因为它会无时无刻进行锁住对象,而不考虑到程序实际的竞争情况,大多数程序在都是进行交替执行,也就是说不存在资源的竞争,如果没有竞争,但是加锁,加锁和解锁是非常耗费性能的,(重量级)因为线程之间的切换以及线程从内核态到用户态的时间是耗费性能的。
在jdk1.6之后,sun公司对synchronized进行了大幅度的优化,现在采用偏向锁+(轻量级锁+cas)+重量级,之间通过锁碰撞进行切换。

3.双亲委派是什么

什么是类加载器?
类加载器是jre的一部分,负责动态将类添加到Java虚拟机。
类加载分类
1、启动类加载器 bootstrap classloader :加载jre/lib/rt.jar
2、扩展类加载器 extension classloader :加载jre/lib/ext/*.jar
3、应用程序类加载器 application classloader:加载classpath上指定的类库
双亲委派机制
  双亲委派机制是指当一个类加载器收到一个类加载请求时,该类加载器首先会把请求委派给父类加载器。每个类加载器都是如此,只有在父类加载器在自己的搜索范围内找不到指定类时,子类加载器才会尝试自己去加载。
双亲委派模型工作工程:
  1.当Application ClassLoader 收到一个类加载请求时,他首先不会自己去尝试加载这个类,而是将这个请求委派给父类加载器Extension ClassLoader去完成。
  2.当Extension ClassLoader收到一个类加载请求时,他首先也不会自己去尝试加载这个类,而是将请求委派给父类加载器Bootstrap ClassLoader去完成。
  3.如果Bootstrap ClassLoader加载失败(在<JAVA_HOME>\lib中未找到所需类),就会让Extension ClassLoader尝试加载。
  4.如果Extension ClassLoader也加载失败,就会使用Application ClassLoader加载。
  5.如果Application ClassLoader也加载失败,就会使用自定义加载器去尝试加载。
  6.如果均加载失败,就会抛出ClassNotFoundException异常。

4.类加载过程中可以动态改字节码吗?

是可以的,在动态代理中CGLIB动态代理采用的就是ASM字节码处理框架,动态修改字节码。
问题延伸:
JDK动态代理:
CGLIB动态代理:

5.如何定位线上问题,CPU100%
6.redis线程模型,分布式锁,除了redis还有哪些可以用来分布式锁
7.了解springboot吗?springboot自动装配是如何实现的?
8.RPC框架用过哪些?谈一下内部实现原理。
9.设计一个线程安全的队列,有哪些点需要去考虑
10.spring ioc原理,bean初始化过程,bean的生命周期
11.lock源码,aqs源码
12.服务器如何去内部扩容,内部原理知不知道
13.jsonp原理是什么?
14.ibatis如何防止注入,#$的区别
15.gc roots哪些可以作为root
16.redis槽个数,扩容之后如何迁移,redis事物是怎么实现的,watch命令干吗用的
17.谈谈mysql索引,(从文件结构,数据结构,应用层面去谈)datatime 和timest
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值