首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文带你网罗HashMap面试考点!

小鲁班:666,听说你拿到了阿里的offer,能透露一下面试内容和技巧吗 达摩:嘿嘿嘿,没问题鸭,叫声爸爸我就告诉你 小鲁班:baba(表面笑嘻嘻,心里MMP) 达摩:其实我也不是很记得了(请继续装),...达摩:不是的,面试官一般都会用连环炮的方式提问的。 小鲁班:你说的连环炮是什么意思鸭? 达摩:那我举个例子 就比如问你HashMap是不是有序的? 你回答不是有序的。...HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射 HashMap采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改 HashMap...是非synchronized,所以HashMap很快 HashMap可以接受null键和值,而Hashtable则不能(原因就是equlas()方法需要对象,因为HashMap是后出的API经过处理才可以...简而言之,在迭代的过程中,ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map。

1K30

HashMap?面试?我是谁?我在哪

做积极的人,而不是积极废人!...片刻后~ 小鲁班:666,听说你拿到了阿里的offer,能透露一下面试内容和技巧吗 达摩:嘿嘿嘿,没问题鸭,叫声爸爸我就告诉你 小鲁班:baba(表面笑嘻嘻,心里MMP) 达摩:其实我也不是很记得了(请继续装...达摩:不是的,面试官一般都会用连环炮的方式提问的。 小鲁班:你说的连环炮是什么意思鸭? 达摩:那我举个例子 就比如问你HashMap是不是有序的? 你回答不是有序的。...是非synchronized,所以HashMap很快 HashMap可以接受null键和值,而Hashtable则不能(原因就是equlas()方法需要对象,因为HashMap是后出的API经过处理才可以...简而言之,在迭代的过程中,ConcurrentHashMap仅仅锁定map的某个部分,而Hashtable则会锁定整个map。

58330
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    HashMap?面试?我是谁?我在哪

    达摩:嘿嘿嘿,没问题鸭,叫声爸爸我就告诉你。 小鲁班:耙耙(表面笑嘻嘻,心里MMP) 达摩:其实我也不是很记得了(请继续装),但我还是记得那么一些。...小鲁班捏了一把汗,我去……这是魔鬼吧,那我们来试试呗(因为小鲁班刚刚在自习室才看了这章的知识,想趁机装一波逼,毕竟刚刚叫了声爸爸~~) 于是达摩 and 小鲁班就开始了对决: 1、为什么用HashMap...HashMap 是一个散列桶(数组和链表),它存储的内容是键值对 key-value 映射 HashMap 采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改 HashMap...是后出的 API 经过处理才可以) 2、HashMap 的工作原理是什么?...简而言之,在迭代的过程中,ConcurrentHashMap 仅仅锁定 Map 的某个部分,而 Hashtable 则会锁定整个 Map 13、CocurrentHashMap(JDK 1.7) CocurrentHashMap

    41240

    终结HashMap面试?我是谁?我在哪

    达摩:嘿嘿嘿,没问题鸭,叫声爸爸我就告诉你。 小鲁班:耙耙(表面笑嘻嘻,心里MMP) 达摩:其实我也不是很记得了(请继续装),但我还是记得那么一些。...小鲁班捏了一把汗,我去……这是魔鬼吧,那我们来试试呗(因为小鲁班刚刚在自习室才看了这章的知识,想趁机装一波逼,毕竟刚刚叫了声爸爸~~) 于是达摩 and 小鲁班就开始了对决: 1、为什么用HashMap...HashMap 是一个散列桶(数组和链表),它存储的内容是键值对 key-value 映射 HashMap 采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改 HashMap...是后出的 API 经过处理才可以) 2、HashMap 的工作原理是什么?...简而言之,在迭代的过程中,ConcurrentHashMap 仅仅锁定 Map 的某个部分,而 Hashtable 则会锁定整个 Map 13、CocurrentHashMap(JDK 1.7) CocurrentHashMap

    52810

    HashMap?面试?我是谁?我在哪?

    达摩:嘿嘿嘿,没问题鸭,叫声爸爸我就告诉你。 小鲁班:耙耙(表面笑嘻嘻,心里MMP) 达摩:其实我也不是很记得了(请继续装),但我还是记得那么一些。...小鲁班捏了一把汗,我去……这是魔鬼吧,那我们来试试呗(因为小鲁班刚刚在自习室才看了这章的知识,想趁机装一波逼,毕竟刚刚叫了声爸爸~~) 于是达摩 and 小鲁班就开始了对决: 1、为什么用HashMap...HashMap 是一个散列桶(数组和链表),它存储的内容是键值对 key-value 映射 HashMap 采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改 HashMap...是后出的 API 经过处理才可以) 2、HashMap 的工作原理是什么?...简而言之,在迭代的过程中,ConcurrentHashMap 仅仅锁定 Map 的某个部分,而 Hashtable 则会锁定整个 Map 13、CocurrentHashMap(JDK 1.7) CocurrentHashMap

    76910

    如何写出高性能代码(二)巧用数据特性

    不是只存在于传说中,可能在我们的周围也比比皆是。...十倍体现在程序员的方法面面,而代码性能却是其中最直观的一面。   本文是《如何写出高性能代码》系列的第二篇,本文将告诉你如何利用数据的几个特性以达到提升代码性能的目的。...类似上面这种代码其实很常见,我在我们公司代码库中就遇到了很多次,基本的模式都是先获取了某些数据,但在之后有些过滤或者检查的逻辑导致代码跳出,然后这些数据就完全没有用上。   ...另外像Jdk中很多集合基本也都是延迟初始化的,就拿HashMap为例,你在执行new HashMap()时,只是创建了一个空壳对象,只有第一次调用put()方法时整个map才会初始化。...这个也很符合大家的直觉和习惯,比如大部分人都是看文章而不是写文章,你到如何网站上也都是看的多,改的少,这是一条几乎放之四海而皆准的规律。 那这个特性对我们写代码有什么意义?

    61540

    java中hashcode的用法_javahashcode作用

    2.但是如果两个类有相同的hashcode怎么办那(我们假设上面的类的ID不是唯一的),例如9除以8和17除以8的余数都是1,那么这是不是合法的,回答是:可以这样。那么如何判断呢?...常 见的Hash冲突是不同对象最终产生了相同的索引,而一种非常甚至绝对少见的Hash冲突是,如果一组对象的个数大过了int范围,而HashCode的 长度只能在int范围中,所以肯定要有同一组的元素有相同的...掌握 了这两条原则,你就能够用好HashMap编写自己的程序了。...既然可以根据HashCode直接定位对象在Hashtable中的位置,那么为什么Hashtable要用key来做映射呢(为了一些思维有障碍的人能看到懂我加了一句话:而不是直接放value呢)?...常见的Hash冲突是不同对象最终产生了相同的索引,而一种非常甚至绝对少见的Hash冲突是,如果一组对象的个数大过了int范围,而HashCode的长度只能在int范围中,所以肯定要有同一组的元素有相同的

    95920

    深入理解HashMap(及hash函数的真正巧妙之处)

    如何计算这个位置就是hash算法。...说到这里,我们再回头看一下hashmap中默认的数组大小是多少,查看源代码可以得知是16,为什么是16,而不是15,也不是20呢,看到上面annegu的解释之后我们就清楚了吧,显然是因为16是2的整数次幂的原因...尤其是hash函数的实现,可以说是整个HashMap的精髓所在,只有真正理解了这个hash函数,才可以说对HashMap有了一定的理解。...但是new HashMap(1024)还不是更合适的,因为0.75*1000 1000, 我们必须这样new HashMap(2048)才最合适...尤其是hash函数的实现,可以说是整个HashMap的精髓所在,只有真正理解了这个hash函数,才可以说对HashMap有了一定的理解。

    64510

    HashMap 实现及原理

    HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射 HashMap采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改 HashMap...是非synchronized,所以HashMap很快 HashMap可以接受null键和值,而Hashtable则不能(原因就是equlas()方法需要对象,因为HashMap是后出的API经过处理才可以...不可变性是必要的,因为为了要计算hashCode(),就要防止键值改变,如果键值在放入时和获取时返回不同的hashcode的话,那么就不能从HashMap中找到你想要的对象。...4、HashMap中hash函数怎么是是实现的? 我们可以看到在hashmap中要找到某个元素,需要根据key的hash值来求得对应数组中的位置。如何计算这个位置就是hash算法。...这个值只可能在两个地方,一个是原下标的位置,另一种是在下标为的位置 9、重新调整HashMap大小存在什么问题吗?

    88120

    集合系列开篇:为什么要学集合?

    但当我开始深入去了解 JDK 集合的整个体系时,我发现之前的我了解得确实非常浅显。...例如关于 List 的实现有 ArrayList、LinkedList、Vector、Stack 这四种实现,但我们很多时候只是直接使用 ArrayList,而不是根据场景去选择。...而 TreeMap 是 Map 接口的有序实现,其内部使用了红黑树实现。所以 HashMap 一般用来存储 key、value 的实现,而 TreeMap 常用存储需要排序的元素。...而如果你能将整个 Java 集合体系清晰地说出去,并且举一反三地对比,那么你就比其他人优秀了。 4.学习经典的数据结构。 还记得大学在学习数据结构的时候,我们都是从理论上去记忆。...这些所有的实现都能在 JDK 集合的实现中找到。

    94540

    疯转|最近5年133个Java面试问题列表

    在我初入职场的时候,类似于 Vector 与 Array 的区别、HashMap 与 Hashtable 的区别是最流行的问题,只需要记住它们,就能在面试中获得更好的机会,但这种情形已经不复存在。...该列表包含了入门级 Java 程序员和多年经验的高级开发者的问题。无论你是 1、2、3、4、5、6、7、8、9 还是 10 年经验的开发者,你都能在其中找到一些有趣的问题。...能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。...(答案) JVM 中堆和栈属于不同的内存区域,使用目的也不同。栈常用于保存方法帧和局部变量,而对象总是在堆上分配。栈通常都比堆小,也不会在多个线程之间共享,而堆被整个 JVM 的所有线程共享。...(答案) 这是我在写Java 并发程序的时候遵循的一些最佳实践: a)给线程命名,这样可以帮助调试。 b)最小化同步的范围,而不是将整个方法同步,只对关键部分做同步。

    2.1K50

    磨刀不误砍柴工,面试前看看避免踩到不该踩的坑!

    A:我说我看过一点HashMap的源码, 然后讲了HashMap中的数组和链表结构, 以及HashMap是如何自动扩容的, 以及扩容带来的好处(空间换时间), 然后就是put/get是如何实现的等. 6..., 再就是问了项目的人员组成结构....============================= 2016年9月19 周一 下午  L公司 因为我一开始并不知道这个公司所处的那个位置是不是很远, 所以我一大早就打车过去了, 最后才知道也很近...基本上我记得的就这么多, 只要做过一些准备的话  这些面试题都不是问题, 面试也谈的比较融洽, 最后人事找到我说我开的薪资有点高, 并说了他们能够接受的一个最高值, 然后我就是说我还需要考虑一下, 然后周五给他们答复...所以还是和这个公司表示了感谢, 拒绝了这份offer. 2016年9月20 周二 下午  L公司 我现在不想那么盲目的再去找面试了, 百度了这家公司发现网上骂声比较多, 而且这个公司规模也不是很大,

    28930

    教你使用Python简单暴力爬取大量妹子图片

    因此,爬虫就是模拟浏览器请求初始的一条URL(链接),下载html,再从html文档中找所有URL放进URL队列,然后从URL(链接)队列中取出一条URL(链接)继续模拟浏览器请求该URL(链接),下载...第1行,目的匹配html页面中的图片链接,返回(.*?)括号内的内容,即匹配到的html页面中的图片链接。 第2行,目的匹配html页面中的跳转链接,返回(.*?)...#就继续爬该没访问过的链接 看到上面代码,有个要注意的点,为什么我需要用一个hashmap来存储已经访问过的链接呢。...然后就得到了许许多多的meizi图片了,由于图片少儿不宜,我打上了马赛克,如果你想揭开马赛克的面纱,那就去你的电脑试着跑一下吧。 跑完整个程序需要两天两夜,想想有多少张meizi图吧!嘻嘻 ? ?...就静静地等在那里,等这些耗时的操作完成后才继续往下执行其他代码。

    1.9K30

    HashMap的31连环炮,我倒在第5个上

    写在前面 在面试中,HashMap基本必问,只是问法各有不同而已。曾经我也和很多面试官聊过关于HashMap的话题,使用HashMap就能考察面试者的很多知识点。...但问题是一个 40 亿长度的数组,内存是放不下的。 设想,如果 HashMap 数组的初始大小才 16,用之前需要对数组的长度取模运算,得到的余数才能用来访问数组下标。...保证了对象的 hashCode 的 32 位值只要有一位发生改变,整个 hash() 返回值就会改变。尽可能的减少碰撞。 9、HashMap 的 table 的容量如何确定?...() 方法,将 table 长度变为原来的两倍(注意是 table 长度,而不是 threshold); ④、如果数据很大的情况下,扩展时将会带来性能的损失,在性能要求很高的地方,这种损失很可能很致命。...25、如何规避 HashMap 的线程不安全?

    51120

    Shopee 面试体验拉满!

    考察的知识点,我帮大家罗列一下: mysql:索引、事务、锁、mvcc java:hashmap、集合、jvm 操作系统:进程间通信、缓存回收、堆与栈 网络;键入网址、tcp 三次和四次挥手 数据结构:...字段有唯一性限制的,比如商品编码; 经常用于 WHERE 查询条件的字段,这样能够提高整个表的查询速度,如果查询条件不是一个字段,可以建立联合索引。...意向锁的目的是为了快速判断表里是否有记录被加锁。 行级锁:InnoDB 引擎是支持行级锁的,而 MyISAM 引擎并不支持行级锁。 记录锁,锁住的是一条记录。...「读提交」隔离级别是在「每个select语句执行前」都会重新生成一个 Read View; 「可重复读」隔离级别是执行第一条select时,生成一个 Read View,然后整个事务期间都在用这个 Read...没有锁,hashmap不是并发安全的,hashmap在多线程会存在下面的问题: JDK 1.7 HashMap 采用数组 + 链表的数据结构,多线程背景下,在数组扩容的时候,存在 Entry 链死循环和数据丢失问题

    20910

    老哥,您看我这篇Java集合,还有机会评优吗?

    仅仅了解怎么使用API是远远不够的,如果在调用API时,知道它内部发生了什么事情,就像开了透视外挂一样,洞穿一切,这种感觉才真的爽,而且这样就不是集合提供什么功能给我们使用,而是我们选择使用它的什么功能了...注意图中的Collection应当继承的是Iterable而不是Iterator,后面会解释Iterable和Iterator的区别 整个集合框架分为两个门派(类型):Collection和Map,前者是一个容器...下图是整个 Map 集合体系的主要组成部分,我将会按照日常使用频率从高到低一一讲解。...,这里注意不是HashMap,而 LinkedHashMap 底层又采用 HashMap + 双向链表 实现的,所以本质上 LinkedHashSet 还是使用 HashMap 实现的。...,此文的目的是对整个集合框架有一个较为整体的了解,分析了最常用的集合的相关特性,以及某些特殊集合的应用场景例如TreeSet、TreeMap这种可定制排序的集合。

    56810

    关于面试的二三事.

    A:我说我看过一点HashMap的源码, 然后讲了HashMap中的数组和链表结构, 以及HashMap是如何自动扩容的, 以及扩容带来的好处(空间换时间), 然后就是put/get是如何实现的等.    ..., 再就是问了项目的人员组成结构....============================= 2016年9月19 周一 下午  L公司 因为我一开始并不知道这个公司所处的那个位置是不是很远, 所以我一大早就打车过去了, 最后才知道也很近...基本上我记得的就这么多, 只要做过一些准备的话  这些面试题都不是问题, 面试也谈的比较融洽, 最后人事找到我说我开的薪资有点高, 并说了他们能够接受的一个最高值, 然后我就是说我还需要考虑一下, 然后周五给他们答复...所以还是和这个公司表示了感谢, 拒绝了这份offer. 2016年9月20 周二 下午  L公司 我现在不想那么盲目的再去找面试了, 百度了这家公司发现网上骂声比较多, 而且这个公司规模也不是很大,

    99180
    领券