程序员求职经验分享与学习资料整理平台

网站首页 > 文章精选 正文

java面试基础题(实战后的总结) java面试必考300题

balukai 2024-12-26 11:40:44 文章精选 26 ℃

上周面试了一周,把常问的基础做个总结,搞懂下面的问题,java方面的基础基本上就没啥大的问题了。

1.能说说常用的集合类和继承关系吗?

Collection:Collection 是集合List、Set、Queue 的最基本的接口。

Map:是映射表的基础接口

2.既然你提到了list,那你能说说你常用的list有哪些?

分别是ArrayList、Vector 和LinkedList

3.能说说ArrayList和LinkedList的区别嘛(扩容、数据结构等)?

4.那如果想要使用线程安全的list你会怎么选择,说说你的看法?

vector和Collections.synchronizedList(list)

5.数组和链表各有好处,有没有哪个集合集成了两者的好处呢?

结合数组结构和链表结构的优点,从而实现了查询和修改效率高,插入和删除效率也高的一种数据结构。而我们常见的HashMap就是这样的一种数据结构。

6.说说你对hashmap的理解,1.7和1.8有啥区别,把你知道的都说一下吧。

1.7数组+链表 1.8数组+链表/红黑树

7.在new HashMap时指定数组长度为13,此时数组的长度是13吗?

生成的值是指定容量的值往上找最近的2次幂的数

8.为什么数组的大小必须是2的次幂?

在put操作的源码中可以看到下标是(数组长度 -1) & hash值按位与生成的。

9.那为什么不一开始就用红黑树,反而要经历一个转换的过程呢?

10.为什么链表的长度要大于8才转为红黑树?转换阈值8是怎么来的?

11.链表长度大于8就一定会转红黑树吗?不会,还得数组长度大于64(看源码)

12.HashMap在什么情况下会扩容,怎么扩容?

13.那hashmap是线程安全的吗?如果不安全,想在多线程下使用,有几种方法呢?

第一种方法,使用Hashtable线程安全类;

第二种方法,使用Collections.synchronizedMap方法,对方法进行加同步锁;

第三种方法,使用并发包中的ConcurrentHashMap类;

14.那说说上面三种方法的利弊吧,你怎么选择呢?

ConcurrentHashMap

15.说说你对ConcurrentHashMap的认识和理解,1.7和1.8最大的改变是什么?

1.7分段锁,链表头插(hashmap也是如此),会导致环形链表,你知道为什么吗?

1.8移除分段锁,链表尾插(hashmap也是如此),采用node+cas+synchronized锁,锁的力度降低,效率更高

16.你提到了cas和synchronized,那你了解两者的区别嘛?把你知道的都说出来。

cas会导致ABA问题,怎么解决

synchronized底层是怎么实现的,你知道嘛?可以修饰静态方法,方法,代码块,这三种修饰的锁级别分别是什么?synchronized修饰方法是acc_syncoronized标志,隐士调用Monitor ,synchronized修饰代码块是monitorenter和monitorexit的考察

https://www.cnblogs.com/aobing/p/12906927.html

17.synchronized锁优化后,你了解锁升级的过程嘛?

膨胀锁,不可降级,有些情况下推荐使用lock锁。

18.那你说说synchronized和lock锁有啥区别呢?

19.说说你对多线程的理解?说说常见的多线程实现的方法?

20.既然提到线程池,那你说说常用的线程池有哪些?

这时候会说出常见的四种(主要考源码的理解,主要能说出队列就可以了),Executor下面的四种方法:

newCachedThreadPool SynchronousQueue,

newFixedThreadPool LinkedBlockingQueue,

newScheduledThreadPool LinkedBlockingQueue,

newSingleThreadExecutor DelayedWorkQueue

21.阿里为啥不推荐使用这四种方法呢?他推荐的是哪一种,说说为什么?

推荐使用new ThreadPoolExecutor();

22.说说这个方法里常见的几个参数的意义,你在工作中是怎么设置的呢?

这个比较复杂,不看源码一般回答不上来,看一下我之前总结的文章,看完你就懂了。https://www.toutiao.com/i6934979126730326535/

23.这里你提到了拒绝策略,你知道常见的拒绝策略有哪些呢?你在工作中选择是哪种?

AbortPolicy CallerRunsPolicy  DiscardPolicy  DiscardOldestPolicy

此文章为面试一周后做的一个总结,喜欢的话加个关注,前面有一篇文章也有对集合的总结,可以结合着看,也祝各位能有个好的offer!我这边目前四个offer了,大家加油吧,有问题可以随时沟通交流。

最近发表
标签列表