高级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问,

你可能感兴趣的:(面试,Java,编程,java,jvm,面试)