关注
大概说一下HashMap的面试过程吧,以下用A代表面试官,B代表应聘者。 A:您应聘的是Java岗位是吧,使用过Java的集合框架吗? B:使用过,比如ArrayList、HashMap、HashSet……巴拉巴拉…… A:说说您对HashMap的理解? B:HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现。设计目标是尽量实现哈希表O(1)级别的增删改查效果,默认容量是16,扩容因子……底层结构是……巴拉巴拉…… A:说到HashMap的底层结构,您知道Java7与Java8中的HashMap有何区别吗? B:知道,Java7的HashMap底层数据结构是数组+链表实现,而Java8是数组+链表+红黑树实现……巴拉巴拉…… A:为什么要加入红黑树呢? B:因为在某些极端情况下,会导致大量元素都存放在同一个桶(数组索引是链表的表头)的链表中,此时的HashMap 就相当于一个单链表,假设链表中的元素个数为n个,则其操作时间复杂度就变成了O(n),此时就完全失去了哈希表的优势。 A:HashMap与HashTable的有何区别知道吗? B:知道,HashMap与HashTable主要区别为不支持同步和允许null作为key和value…… A:说说HashMap线程不安全的场景? B:1、多线程同时put时可能会丢失值。2、多线程扩容时会出现环状结构,造成死循环……巴拉巴拉…… A:如何解决HashMap的线程不安全? B:使用 Collections 的 synchronizedMap() 对其进行包装,或是直接使用线程安全的ConcurrentHashMap……巴拉巴拉…… A:说说这两种方式的区别? B:使用synchronizedMap包装在同步时会锁住整张表,而ConcurrentHashMap会使用自身的同步机制,比如分段锁或是CAS…… A:说说您对ConcurrentHashMap的理解? B:ConcurrentHashMap 在 JDK1.7 时被加入,是 HashMap 线程安全的版本,其使用方式与 HashMap 一样,底层数据结构在Java7和Java8时都与HashMap相同,只是加入了线程安全的保障……巴拉巴拉…… A:说说Java7和Java8中的ConcurrentHashMap是如何保证线程安全的? B:Java7的ConcurrentHashMap使用的是分段锁机制,巴拉巴拉……,因为XXX原因,Java8抛弃了分段锁,改成使用CAS算法+synchronized关键字来保证线程安全,巴拉巴拉…… A:嗯,说说您对CAS算法的理解。 B:所谓CAS算法即Compare And Swap……巴拉巴拉…… 以上大致就是HashMap的面试过程,知识点非常多,若是时间充足的话,面试官会根据你的回答进行深入和延伸,答得够仔细的话,面试官对你的印象肯定会很好的,但若是有一环节答不上来的话,不知道就说不知道,面试官会跳过该问题往后问其他的,千万不要不懂装懂,或是卡住答得模棱两可的,这个很要命,还有在回答问题的时候,尽量把面试官往你自己会的方向引,充分体现自己的能力。
查看原帖
10 14
相关推荐
01-16 00:53
长春工业大学人文信息学院 软件测试 点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 牛客吐槽大会 #
13984次浏览 205人参与
# 实习,不懂就问 #
158730次浏览 1400人参与
# 程序员能干到多少岁? #
525次浏览 15人参与
# 国企秋招,你投了吗? #
58691次浏览 374人参与
# 论秋招对个人心气的改变 #
450次浏览 13人参与
# 软开人,秋招你打算投哪些公司呢 #
178106次浏览 1351人参与
# 毕业后不工作的日子里我在做什么 #
232848次浏览 1691人参与
# 帆软软件工作体验 #
11256次浏览 55人参与
# 硬件/芯片公司工作体验 #
146776次浏览 960人参与
# 运营人求职交流聚集地 #
208548次浏览 1091人参与
# 硬件人秋招进展 #
269368次浏览 3982人参与
# 第一份工作应该只看薪资吗 #
233859次浏览 1855人参与
# 电信求职进展汇总 #
39748次浏览 197人参与
# 关于春招你都做了哪些准备? #
125833次浏览 717人参与
# 快手工作体验 #
301769次浏览 2904人参与
# AI求职实录 #
19342次浏览 440人参与
# 今年春招是金一银二嘛? #
32968次浏览 311人参与
# 没关系,至少我的__很曼妙 #
14271次浏览 241人参与
# 实习打杂,要跑路吗 #
58275次浏览 340人参与
# 1月小结:你过的开心吗? #
5944次浏览 135人参与
查看10道真题和解析