java面试题及答案2020 阿里(八)

java面试题及答案2020

三面-2020/3/30-牛客网

文末持续更新面试题及答案
项目方面

问了自己实现的SpringIOC的整个流程,直接细节到了代码,说了一遍没听清楚,然后又说了一遍。问了LRU缓存的设计,后面就是直接口述LRU缓存的实现(代码)。问了注解用代码是如何写的(我这记不清楚啊),然后就是问注解是如何自己解析的,我说可以通过Class对象,获取到注解信息,从而判断。

基础方面

1、问了Redis的线程模型,单线程模式,怎么实现的,说了IO多路复用,然后就是epoll,然后介绍了IO多路复用模型的其他实现,对比。

2、然后就是问我Redis的epoll实现,我这个好像有点懵。

3、线程的状态(NEW,RUNNABLE,BLOCKED,TIME_WAITING,WAITING)少了一种,然后就是BLOCKED 和 WAIT的区别

4、锁,我讲了synchronize,reentrantlock和锁升级的过程,从无锁状态到偏向锁到轻量级锁到重量级锁(markword,和cas操作替换线程id,然后问我cas是什么,我说比较和替换,Compare and swap,然后我说底层是通过硬件的cmpxchg命令保证的)。然后就是我们的ReentrantLock,将了AQS的底层(双向链表,Node节点(Share,Exclusive,waitStatus),state变量(对不同的实现,所代表的含义不同),然后就是acquire方法和release方法的流程。reentrantlock的公平和非公平(没说),好像是被打断了)

5、LRU算法的实现

6、类加载,class.forname 和 classloader的区别,双亲委派原则。被问到不使用双亲委派原则,如何自定义java.lang.Integer会怎么样(我自定义过 java.lang.Integer,使用直接抛出异常,说包违法)。可能还是不够深入。

7、就是问了自己的缺点和优点,和奖项的项目和做了什么

所有面试题持续更新+答案整理见这里:
java面试题及答案2020

原创文章 27 获赞 38 访问量 10万+

猜你喜欢

转载自blog.csdn.net/bookanddream/article/details/106114475