JAVA中的HashMap面试题整理

JAVA中的HashMap面试题整理

  1. JDK1.7版本,HashMap的数据结构是什么?
    数组+单向链表
  2. 什么叫做Hash桶
    数组中的单向链表
  3. HashMap的数组长度为什么必须是2的幂?
    计算元素存在数组中下标的算法:hash值 & 数组长度-1
    如果数组长度不是2的幂,减1后二进制的某一位有可能出现0,导致数组某个位置永远存不到数据
  4. HashMap的默认负载因子是多少,作用是什么?
    默认负载因子是0.75
    作用:数组长度*负载因子=阈值(扩容条件)
  5. HashMap的默认负载因子为什么是0.75?
    取得了时间和空间的平衡
    假设负载因子过大,导致数组装满后才扩容,牺牲时间,利用空间
    假设负载因子过小,导致数组装载较少内容就扩容,牺牲空间,利用时间
  6. HashMax数组最大长度是多少?
    1 << 30
  7. HashMap数组最大长度为什么是1 << 30?
    因为数组长度必须是2的幂并且HashMap数组最大长度的变量为int类型,所有1<<30
  8. 什么叫做Hash碰撞/冲突?
    两个对象的hash值一样,导致在数组中的下标一样
  9. HashMap何时扩容?
    元素个数>=阈值,并且存入数据的位置不等于null
  10. HashMap扩容机制是什么?
    原来的2倍
  11. HashMap存入null键的位置?
    hash数组下标为0的位置
  12. 什么叫做Hash回环?
    多线程下会出现Hash回环
    线程1:不断添加数据,导致不断扩容
    线程2:不断遍历
    出现Hash回环,活该,HashMap明确说明该集合不是个线程安全的集合,多线程下应该使用ConcurrentHashMap
  13. JDK1.7版本和JDK1.8版本的HashMap的区别
    JDK1.7:数组+链表,头插法,通过散列算法获取hash值
    JDK1.8:数组+链表+红黑树,尾插法,通过低16位^高16位让hash值更加散列
  14. JDK1.8版本HashMap为什么添加红黑树的数据结构?
    因为链表查询慢,红黑树查询快
  15. JDK1.8版本什么时候由数组+链表变成数组+红黑树
    链表长度>8并且数组长度>64时,从数组+链表变成数组+红黑树
  16. JDK1.8版本为什么链表长度大于8时,变成数组+红黑树
    因为泊松部分(统计概率学),当红黑树里的数据小于6时,又会将数组+红黑树变会数组+链表
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 面试整理是为了帮助准备面试的候选人更好地了解面试的内容和要求。对于Java2021的面试整理,可以从各个方面进行组织和分类,以便更好地帮助面试者准备。下面是我对Java2021面试整理的一些建议。 1.基础知识:面试可以包括Java语言的基本语法、关键字、数据类型、流程控制语句、异常处理等方面的问。这些问可以帮助面试者检验自己对Java语言基础知识的掌握程度。 2.面向对象:面试可以涉及Java面向对象的概念、封装、继承、多态以及接口、抽象类等方面的问。这些问可以帮助面试者了解Java面向对象编程的特点和应用。 3.集合框架:面试可以包括关于Java集合框架的知识,如ArrayList、LinkedList、HashSet、HashMap等的特性、用法和区别。这些问可以帮助面试者检验自己对Java集合框架的理解和应用能力。 4.多线程:面试可以涉及Java多线程编程的基本概念、线程的创建与启动、线程同步与互斥、线程池等方面的问。这些问可以帮助面试者了解多线程编程的原理和实践。 5.IO流:面试可以包括关于Java IO流的知识,如输入输出流的分类、字符流和字节流的区别、文件读写操作等方面的问。这些问可以帮助面试者检验自己对IO流的理解和应用。 6.异常处理:面试可以涉及Java异常处理的机制、try-catch语句的使用、自定义异常等方面的问。这些问可以帮助面试者了解异常处理的原理和常见应用。 7.Java虚拟机:面试可以包括Java虚拟机(JVM)的基本概念、内存模型、垃圾回收算法等方面的问。这些问可以帮助面试者了解JVM的工作原理和性能优化。 8.框架和工具:面试可以涉及Java常用的开发框架和工具,如Spring、Hibernate、MyBatis、Maven等方面的问。这些问可以帮助面试者了解开发框架的应用和工具的使用。 通过对这些方面的面试整理,可以帮助面试者全面了解Java2021面试的内容和要求,并有针对性地准备和复习相关知识。面试者应该注重理论的学习,同时结合实践经验进行练习,以便在面试时能够更好地展示自己的能力和潜力。同时,面试者还应注意自己的沟通能力、问分析能力和解决问的能力,这些都是面试过程重要的评估指标。 ### 回答2: Java2021面试整理主要集在以下几个方面: 1. 基础知识:Java的基本数据类型、变量和常量、运算符、控制语句等内容是面试常见的考点。面试官会通过这些问判断候选人对Java基础知识的熟悉程度和掌握能力。 2. 面向对象编程:Java是一门面向对象的编程语言,所以面试对面向对象的理解和应用也是重要的考点。常见的问包括类和对象、继承和多态、封装和抽象等。 3. 异常处理:Java的异常处理是编程的重要内容,面试会涉及到异常的概念、异常的分类、如何捕获和处理异常、自定义异常等。 4. 集合框架:Java集合框架是Java开发常用的工具,常见的面试会涉及到ArrayList、LinkedList、HashMap等集合的特点和应用场景,以及集合的遍历和使用方法。 5. 多线程:Java是一门支持多线程的语言,所以多线程的知识也是面试的热点考点。常见的问包括线程的生命周期、线程同步与互斥、线程间的通信、线程池等。 6. JVM相关知识:Java虚拟机(JVM)是Java运行的基础,所以对JVM的了解也是面试的重要考点。常见问包括JVM的结构、内存模型、垃圾回收机制等。 此外,面试还可能涉及到数据库、网络编程、设计模式等其他相关知识。因此,面试前需要对Java的相关知识有全面的掌握,并且要能够灵活运用这些知识进行问的解答。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值