高级JAVA程序员面试题

高级JAVA程序员面试一、Java基础

1、JVM:一般从JVM组成开始介绍,然后单独介绍每一块,然后就会慢慢衍生出垃圾回收方式,垃圾回收器,还可以衍生出volatile之类的。

重点:栈帧、堆,垃圾回收方式,垃圾回收器的对比G1—CMS,unsafe类navicat到volatile。

2、集合类:一般会问HashMap或者ArrayList,有的还会让对比ArrayList和LinkList。还有ConcurrentHashMap等。

一般回答初始化过程、组成、底层结构、算法、线程是否安全等,这块一定要回答仔细,要看过源码,或者看些B站的源码讲解很仔细,到每一个方法名字,要是集合类就挂掉了,那就凉凉了。

重点:Hashmap组成,寻找算法、扩容算法、put、get过程,红黑树、二叉树、B+树的区别。

经典问题: 为什么使用红黑树,不使用普通的二叉树?

3、锁:AQS实现,公平锁/非公平锁,synchronized和lock的区别,synchronized锁演化过程。

一般从AQS谈起,这个和HashMap一样一定要通读源码,知道每一个方法的名字和过程,和集合类同样重要。

即使没有问你,你最后页可以对比以下synchronized和lock和lockSupport,显得JUC下面都精通。

还有这三个:

CountDownLatch、CyclicBarrier、Semaphore,一般会问使用场景,要了然于胸

lCAS:通常搭配volatile问,我一般在上面几个回答中就带上了&#x

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值