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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值