首页 > 编程语言 >【校招VIP】java语言考点之Map1.7和1.8

【校招VIP】java语言考点之Map1.7和1.8

时间:2023-08-14 15:11:41浏览次数:46  
标签:java HashMap ...... 1.8 数组 链表 VIP 线程 key

考点介绍:

HashMap是大中小厂面试的高频考点,主要从底层结构,和线程安全等角度来进行考察,考察点比较集中,但是有一定难度
分为初级和高级两种:初级一般集中在中小公司的map的key-value的可重复和可空问题;高级集中在1.7和1.8的变化,要理解变化的原因,以及并发安全性问题

 一、考点题目

1、HashMap的底层数据结构是什么?

解答:在JDK1.7 和JDK1.8 中有所差别:
在JDK1.7 中,由“数组+链表”组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在的。在JDK1.8 中......

2、为什么HashMap在解决 hash 冲突的时候,不直接用红黑树?而选择先用链表,再转红黑树?

解答:因为红黑树需要进行左旋,右旋,变色这些操作来保持平衡,而单链表不需要。当元素小于 8 个的时候,此时做查询操作,链表结构已经......

3、HashMap默认加载因子是多少?为什么是 0.75,不是 0.6 或者 0.8 ?

解答:Node[] table的初始化长度length(默认值是16),Load factor为负载因子(默认值是0.75),threshold是HashMap所能容纳键值对的最大值。threshold = length * Load factor。也就是说......

4、说一下HashMap 的put方法流程?

解答:首先根据 key 的值计算 hash 值,找到该元素在数组中存储的下标;如果数组是空的,则调用......

5、为什么HashMap是线程不安全的?

解答:JDK1.7 中,由于多线程对HashMap进行扩容,调用了HashMap#transfer(),具体原因:某个线程执行过程中,被挂起,其他线程已经完成......

6、说一下HashMap 1.7和1.8的区别

解答:1 结构区别:HashMap1.8的底层数据结构是数组+链表+红黑树。HashMap 1.7的底层数据结构是数组加链表。2 扩容的区别......

7、HashMap、HashTable的key和value是否可为null?

解答:HashMap对象的key、value值均可为null。HahTable对象的key、value值均不可为null。且两者的的key值均不能......

二、考点文章

1、【校招VIP】java基础 HashMap1.7与1.8

老生常谈java常面 HashMap:首先都知道HashMap是线程不安全的那么聊一聊HashMap:默认初始化大小 16,负载因子 0.75 ,即当存放数据数量达到当前预计数量的 0.75时会发生扩容,扩容倍数 2 即发......

2、【校招VIP】JDK1.7和JDK1.8中HashMap为什么是线程不安全

只要是对于集合有一定了解的一定都知道HashMap是线程不安全的,我们应该使用ConcurrentHashMap。但是为什么HashMap......

3、HashMap、HashTable的key和value是否可为null

结论:HashMap对象的key、value值均可为null。HahTable对象的key、value值均不可为null。且两者的的key值......

4、【校招VIP】关于HashMap扩容机制

HashMap的底层有数组 + 链表(红黑树)组成,数组的大小可以在构造方法时设置,默认大小为16,数组中每一个元素就是一......

5、【校招VIP】HashMap精选面试题

HashMap的底层数据结构是什么?在JDK1.7 和JDK1.8 中有所差别:在JDK1.7 中,由“数组+链表”组成,数组是 HashMap 的主体,链表则是主要为了解决哈希冲突而存在......

三、考点视频

多线程执行下列代码后的值

本题是一道笔试题,属于偏复杂、对时间要求高的题型。主要是具化多线程,把临界点和对应的多线程起始位置画出来,需要细心和时间。建议笔试时,先把大题做完,再回来做这道题。这个题目也可以放到面试里,会引申出线程并发和安全的问题......

 

标签:java,HashMap,......,1.8,数组,链表,VIP,线程,key
From: https://www.cnblogs.com/rdaxue/p/17628699.html

相关文章

  • 《java面试宝典》之SQL常见面试题
    一、SQL分类:DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)二、基本语法1、创建数据库createdatabasedatabase-name2、删除数据库dropdatabasedbname3、创建新表createtabletabname......
  • 电信L1研发工程师 --- java题库 长期更新
    注意事项:题目分为单选,多选、判断和编程,60分过编程题目1,严格按照题目提示编程。比如定义一个公共类Main和静态方法mainpublicclassMain{ publicstaticvoidmain(String[]args){ //这里开始写程序 }}2.不要带有包名3.严格按照提示的输入和输出定义函数的输入输出,千万不要......
  • Java字符串转日期,当前日期后几天,前几天
    首先代码实现//设置当前日期的后七天Calendarcalendar=Calendar.getInstance();calendar.setTime(newDate());//设置当前日期calendar.add(Calendar.DATE,7);//增加7天,更改这里的数量就行DatenewDate=calendar.getTime();//获取新日期SimpleDateFormatdf1......
  • 问题解答:关于 SAP UI5 控制器(Controller) JavaScript 编码里单引号和双引号的用法澄
    笔者这篇教程文末,有朋友提问:SAPUI5应用开发教程之十-什么是SAPUI5应用的描述符文件manifest.json问题1:在index.html文件中body标签添加了代码:<divdata-sap-ui-componentdata-name="sap.ui5.walkthrough"data-id="container"data-settings='{"id":"wa......
  • Java入门学习——其他数据形式的存储原理
    一、字符(文本)在计算机中是如何存储的呢?ASCII编码表:即美国信息交换标准编码,规定现代英语、数字字符、和其他西欧字符对应的数字编码。为了验证字符是通过ASCII编码表编号的二进制形式进行存储的,我们在IDEA里新建一个Module(day02-basic-app),然后在src下面新建package(it.com.variab......
  • Java入门学习——变量里的数据在计算机中的存储原理
    变量里的数据在计算机中的存储原理一、二进制只有0、1,按照逢2进1的方式表示数据:十进制转二进制的算法除二取余法。  结果:6的二进制是110  结果:13的二进制是1101二、计算机中表示数据的最小单元计算机中表示数据的最小单位:一个字节(byte,简称B,是使用8个二进......
  • 《Java编程思想第四版》学习笔记12
    对于一个复杂的对象,构建器的调用遵照下面的顺序:(1)调用基础类构建器。这个步骤会不断重复下去,首先得到构建的是分级结构的根部,然后是下一个衍生类,等等。直到抵达最深一层的衍生类。(2)按声明顺序调用成员初始化模块。(3)调用衍生构建器的主体。          ......
  • Java 自动装箱与拆箱实战
    什么是自动装箱拆箱?很简单,下面两句代码就可以看到装箱和拆箱过程//自动装箱Integertotal=99;//自动拆箱inttotalprim=total;简单一点说,装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。下面我们来看看需要装箱拆箱的类型有哪些:这......
  • Go/C++/Java中的数组对比
    数组是大多数编程语言中的基本数据结构。然而,不同的编程语言对数组的实现和语义有所不同。以下是Go、C++和Java中数组的主要区别:1.基本性质Go:数组是值类型。赋值或将数组传递给函数时,内容会被复制。数组的大小是其类型的一部分。因此,具有不同大小的数组被认为是不同......
  • Java基础之代码块
    1、代码块 2、好处 代码块可以提高代码的重用性比如: 3、注意使用 ......