网站首页 > 文章精选 正文
上周面试了一周,把常问的基础做个总结,搞懂下面的问题,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了,大家加油吧,有问题可以随时沟通交流。
猜你喜欢
- 2024-12-26 Java高级:条件队列与同步器Synchronizer的原理+AQS的应用
- 2024-12-26 浅谈Java多线程与并发原理 java多线程并发调用接口
- 2024-12-26 Java 基础(四)集合源码解析 List java集合linkedlist
- 2024-12-26 synchronized和lock的区别 54.synchronized 和 lock 有什么区别?
- 2024-12-26 异步 vs 同步:程序员必备的核心知识,理解这两者差异,你就是高手
- 2024-12-26 ArrayList 、 LinkedList、Vector的区别
- 2024-12-26 synchronized底层细究(硬核) synchronized底层原理是什么
- 2024-12-26 为什么 95% 的 Java 程序员,都是用不好 Synchronized?
- 2024-12-26 100+道高频Java面试题 java面试高频知识点
- 2024-12-26 如何看到 synchronized 背后的“monitor 锁”?
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)