欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

java 面试问题 HashMap

最编程 2024-04-08 14:52:42
...

又是栓Q的一天

目录

前言

一、HashMap的实现原理

二、常见面试题HashMap和HashTable的区别

1.父类不同

2.线程安全

3.方法的不同

4.键值约束

5.冲突存储

三、HashMap扩容机制的原理

四、基本面试题

1.什么是java?

2.java的特点有哪些?

3.JVM、JDK、JRE是什么关系?

4.java如何实现跨平台?

5.什么是字节码文件,采用字节码文件的好处?

总结


前言

   HashMap的基本结构和HashMap的常见的面试题


一、HashMap的实现原理

  HashMap是一个储存键值对的双列数组,每一个键值对存放在Entry中,所有Entry存放在一个数组中,我们称之为桶,这个桶是HashMap的主干,注意的是HashMap并不能保证映射的顺序,并且插入后的数据的顺序也不能保证一直不变(扩容rehash),在jdk1.8前是使用数组+链表,jdk1.8及以后优化为了数组+红黑树

二、常见面试题HashMap和HashTable的区别

1.父类不同

     HashMap集成自AbstractMap,HashTable继承自Dictionnary

2.线程安全

     HashMap是线程不安全的,而HashTable的方法大多使用了Synchronize是线程安全的,但是现在大多也不用了,经常使用的是currentHashMap

3.方法的不同

     HashMap不包含contains方法,而是containsKey和containsValue方法,而HashTable都包含

4.键值约束

     HashMap允许key和value的值为null,HashTable都不能为空

5.冲突存储

     jdk1.8以前HashMap使用的是数组+链表的方式进行解决和HashTable一样,但是jdk1.8及以后他在冲突长度大于8的时候会转换为数组+红黑树的方式

三、HashMap扩容机制的原理

capacity变量容量默认为16

loadFactor加载因子,默认是0.75阈值

阈值=容量*加载因子,当元素的数量超过阈值就会触发扩容,每次扩容的容量是之前的二倍,扩展后的Node对象可能在原位置,也可能移动到原偏离量两倍的位置

四、基本面试题

1.什么是java?

  java是面向对象的编程语言,抛弃了C++中的指针和多继承,吸收了许多其他的优点,功能强大,简单易用。

2.java的特点有哪些?

  封装、继承、多态、跨平台、多线程

3.JVM、JDK、JRE是什么关系?

JDK=JRE+编译工具、JRE=JVM+运行环境、JVM虚拟机

4.java如何实现跨平台?

java文件编译成字节码文件,通过不同的java虚拟机可以在不同的平台上运行

5.什么是字节码文件,采用字节码文件的好处?

字节码是java编译后产生的class文件,好处:可以被不同的虚拟机进行解释执行,实现跨平台的运行

    


总结

  今天真的是太累了太累了,博主下午为了面对即将到来的实习,花了很大的精力准备了微服务的分布式项目,因为环境配置,弄那些个docker什么的弄了一个晚上,真的是没有精力了,还有TreeMap、LinkedHashMap、跟currentHashMap等等,真的是栓Q,剩下的明天在更新。