大数据面试Java基础题
南京莱斯面试题目(3篇)

第1篇一、Java开发工程师面试题目1. 请简要介绍Java的基本概念和特点。
2. 请解释Java中的面向对象编程(OOP)原则,并举例说明。
3. 解释Java中的继承、封装和多态的概念,并举例说明其在实际项目中的应用。
4. 请描述Java内存模型,包括堆、栈、方法区和本地方法栈的作用。
5. 解释Java中的多线程编程,包括线程、线程池、同步和锁的概念。
6. 请描述Java中的异常处理机制,包括try-catch-finally和throw关键字的使用。
7. 解释Java中的I/O流的概念,并列举几种常见的I/O流类。
8. 请描述Java中的集合框架,包括List、Set和Map接口及其常用实现类。
9. 解释Java中的泛型编程的概念,并举例说明其在实际项目中的应用。
10. 请描述Java中的JDBC编程,包括数据库连接、查询和事务处理。
11. 解释Java中的网络编程,包括Socket和HTTP协议的概念。
12. 请描述Java中的反射机制,并举例说明其在实际项目中的应用。
13. 解释Java中的注解(Annotation)的概念,并举例说明其在实际项目中的应用。
14. 请描述Java中的单元测试框架,如JUnit的使用方法。
15. 请描述Java中的设计模式,如单例模式、工厂模式和观察者模式等。
二、软件测试工程师面试题目1. 请简要介绍软件测试的基本概念和目的。
2. 解释软件测试的生命周期,包括测试计划、测试设计和测试执行等阶段。
3. 请描述黑盒测试和白盒测试的概念,并举例说明。
4. 解释软件测试中的等价类划分和边界值分析的概念。
5. 请描述软件测试中的缺陷报告和缺陷管理流程。
6. 解释自动化测试的概念,并列举几种常见的自动化测试工具。
7. 请描述性能测试的概念,包括性能测试的指标和工具。
8. 解释安全性测试的概念,并列举几种常见的安全性测试方法。
9. 请描述兼容性测试的概念,并举例说明。
10. 请描述软件测试中的回归测试的概念和重要性。
大数据 java 面试题

大数据 java 面试题在当今信息化时代,大数据技术的快速发展使得大数据工程师成为了热门职位之一。
如果你正在寻求一份大数据工程师的工作,那么你可能需要准备一些相关的面试题。
本文将为你提供一些常见的大数据Java 面试题,帮助你更好地应对面试。
一、Java基础问题1. 什么是Java?Java是一种面向对象的编程语言,具有跨平台、可移植和可靠性强的特点。
2. Java的特点是什么?Java具有简单、面向对象、分布式、可移植、多线程、动态、安全和高性能等特点。
3. 解释一下Java的封装、继承和多态。
封装是将数据和代码封装在一个类中,并通过公共方法访问,提高安全性和重用性。
继承是通过子类继承父类的属性和方法,实现代码的重用。
多态是允许不同类的对象对同一消息做出响应。
4. 什么是Java的自动装箱和拆箱?自动装箱是将基本数据类型自动转换为对应的包装类,拆箱则是将包装类自动转换为对应的基本数据类型。
5. Java中的异常处理机制是什么?异常处理机制是Java用于处理程序中出现的异常情况,通过try-catch语句块来捕获和处理异常。
二、大数据基础问题1. 什么是大数据?大数据是指数据量大、处理速度快且多样化的数据集合。
2. 大数据技术的应用领域有哪些?大数据技术广泛应用于互联网、金融、电子商务、医疗健康、物联网、人工智能等领域。
3. 大数据处理中的常见问题有哪些?大数据处理中常见的问题包括数据获取和存储、数据清洗和预处理、数据分析和挖掘、数据可视化等。
4. 什么是Hadoop?Hadoop是一种开源的分布式计算框架,能够快速处理大规模数据集。
5. 请解释一下MapReduce。
MapReduce是一种用于处理大规模数据的编程模型,包括两个阶段,Map阶段和Reduce阶段,可以并行处理大量数据。
三、大数据与Java的结合问题1. Java在大数据处理中的优势是什么?Java具有丰富的类库和强大的面向对象编程能力,是一种适合大数据处理的编程语言。
java面试题库java面试题目及答案(3篇)

第1篇一、基础知识1. Java简介题目:请简述Java的基本特点。
答案:- 简单易学:Java设计之初就考虑了易学性,使用面向对象编程。
- 原生跨平台:Java通过JVM(Java虚拟机)实现跨平台运行。
- 安全性:Java提供了强大的安全机制,如沙箱安全模型。
- 体系结构中立:Java不依赖于特定的硬件或操作系统。
- 高效:Java的运行速度接近C/C++。
- 多线程:Java内置多线程支持,便于实现并发处理。
- 动态性:Java在运行时可以进行扩展和修改。
2. Java虚拟机题目:请解释Java虚拟机(JVM)的作用。
答案:JVM是Java程序的运行环境,其主要作用包括:- 将Java字节码转换为本地机器码。
- 管理内存,包括堆、栈、方法区等。
- 提供垃圾回收机制。
- 管理线程和同步。
3. Java内存模型题目:请简述Java内存模型的组成。
答案:Java内存模型主要由以下部分组成:- 堆(Heap):存储对象实例和数组。
- 栈(Stack):存储局部变量和方法调用。
- 方法区(Method Area):存储类信息、常量、静态变量等。
- 本地方法栈(Native Method Stack):存储本地方法调用的相关数据。
- 程序计数器(Program Counter Register):存储线程的当前指令地址。
4. Java关键字题目:请列举并解释Java中的几个关键字。
答案:- `public`:表示访问权限为公开。
- `private`:表示访问权限为私有。
- `protected`:表示访问权限为受保护。
- `static`:表示属于类本身,而非对象实例。
- `final`:表示常量或方法不能被修改。
- `synchronized`:表示线程同步。
- `transient`:表示数据在序列化时不会被持久化。
二、面向对象编程5. 类和对象题目:请解释类和对象之间的关系。
答案:类是对象的模板,对象是类的实例。
java模拟面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java语言的特点。
2. 什么是Java虚拟机(JVM)?它有什么作用?3. 什么是Java的内存模型?请解释Java内存模型中的几个关键概念:堆、栈、方法区、程序计数器、本地方法栈。
4. 什么是Java中的反射机制?请举例说明反射在Java中的应用。
5. 什么是Java中的泛型?请解释泛型的原理和作用。
6. 请简述Java中的四种访问控制符:public、protected、default、private。
7. 什么是Java中的继承和多态?请举例说明继承和多态在实际开发中的应用。
8. 什么是Java中的封装?请举例说明封装在实际开发中的应用。
9. 什么是Java中的接口和抽象类?它们之间有什么区别?10. 什么是Java中的异常处理?请解释try-catch-finally语句的执行顺序。
二、Java集合框架1. 请列举Java集合框架中的常用集合类及其特点。
2. 请简述ArrayList、LinkedList、HashMap、HashSet的区别。
3. 什么是Java中的泛型集合?请举例说明泛型集合的应用。
4. 什么是Java中的迭代器(Iterator)和枚举器(Enum)?请比较它们的区别。
5. 什么是Java中的List、Set、Map的遍历方法?6. 请解释Java中的ArrayList和LinkedList的内部实现原理。
7. 什么是Java中的HashMap的扩容机制?8. 什么是Java中的HashSet的内部实现原理?9. 请解释Java中的线程安全集合类,如CopyOnWriteArrayList、ConcurrentHashMap。
三、Java多线程与并发1. 什么是Java中的线程?请解释线程的创建、调度和同步。
2. 请简述Java中的线程状态,如新建、就绪、运行、阻塞、等待、超时等待、终止。
3. 什么是Java中的同步机制?请解释synchronized关键字的作用。
java开发应届生面试题

java开发应届生面试题面试题一:Java基础知识1. 什么是Java语言?Java的特点是什么?Java语言是一种面向对象的编程语言,具有跨平台、简单易学、安全可靠、高性能等特点。
它由Sun Microsystems公司于1995年推出,并在后来由Oracle公司继续维护和更新。
2. Java的主要应用领域有哪些?Java在各个领域有着广泛的应用,主要包括:- 企业级应用开发:JavaEE(Java Enterprise Edition)用于开发大规模、分布式的企业应用。
- 移动应用开发:JavaME(Java Micro Edition)用于开发嵌入式和移动设备上运行的应用程序。
- 桌面应用开发:JavaSE(Java Standard Edition)用于开发运行在PC上的桌面应用程序。
- Web应用开发:Java可以通过Servlet、JSP等技术开发Web应用程序。
- 大数据处理:Hadoop等大数据框架都是用Java编写的。
3. Java中的基本数据类型有哪些?Java的基本数据类型有8种,分别为:- byte:字节型,占用1个字节。
- short:短整型,占用2个字节。
- int:整型,占用4个字节。
- long:长整型,占用8个字节。
- float:单精度浮点型,占用4个字节。
- double:双精度浮点型,占用8个字节。
- char:字符型,占用2个字节。
- boolean:布尔型,占用1个字节。
4. Java中的包括哪些访问修饰符?它们的作用是什么?Java中的访问修饰符有4个,分别为:- private:私有的,只能在本类中访问。
- default(默认):不添加任何修饰符,只能在同一包内访问。
- protected:受保护的,可以在同一包内和不同包的子类中访问。
- public:公共的,可在任何地方访问。
这些修饰符用于控制类、变量、方法等的访问范围。
5. Java中的继承和接口有什么区别?Java中的继承和接口都是实现代码重用的机制,但它们有一些区别:- 继承(extends)用于表示类与类之间的关系,一个类只能继承一个父类,继承是一种"is-a"关系。
java跳槽面试题目(3篇)

第1篇一、Java基础知识1. 请简述Java的基本特点。
解析:Java具有“一次编写,到处运行”的特点,具有跨平台性;具有简单易学、面向对象、分布式、解释型、健壮性、安全性、体系结构中立、多线程、动态性等特点。
2. 什么是JVM?请简述JVM的作用。
解析:JVM(Java虚拟机)是运行所有Java应用程序的虚拟机。
它的作用是执行Java字节码,为Java程序提供运行环境,保证Java程序跨平台运行。
3. 请简述Java中的四种访问控制符及其作用。
解析:- public:表示公开的访问控制符,可以在任何地方访问。
- private:表示私有的访问控制符,只能在类内部访问。
- protected:表示受保护的访问控制符,可以在类内部和子类中访问。
- default(无修饰符):表示默认的访问控制符,只能在本包内访问。
4. 什么是封装?请举例说明。
解析:封装是将类的属性和行为封装在一起,对外只提供有限的接口。
例如,一个学生类,包含姓名、年龄、性别等属性,以及学习、休息等方法。
5. 什么是继承?请举例说明。
解析:继承是子类继承父类的方法和属性。
例如,一个动物类,包含行走、吃食等方法,一个猫类继承自动物类,则猫类具有行走、吃食等方法。
6. 什么是多态?请举例说明。
解析:多态是指同一个方法在不同对象上有不同的行为。
例如,一个形状类,包含计算面积的方法,一个圆形和正方形类继承自形状类,计算面积的方法在圆形和正方形类中有不同的实现。
7. 什么是接口?请举例说明。
解析:接口是一种规范,定义了类应该具有的方法,但不提供具体实现。
例如,一个Comparable接口,定义了compareTo方法,用于比较两个对象的大小。
8. 什么是泛型?请举例说明。
解析:泛型是一种类型参数化技术,可以在编译时进行类型检查,提高代码的安全性。
例如,一个List<T>泛型集合,可以存储任意类型的元素。
二、Java集合框架1. 请简述Java集合框架中的常用类及其特点。
大数据专员面试题目(3篇)
第1篇一、基础知识与概念理解1. 题目:请简述大数据的基本概念及其与普通数据的主要区别。
解析:考察应聘者对大数据基本概念的理解。
应聘者应能够解释大数据的规模(大量、多样、快速)、价值密度低、处理和分析的技术和方法等特点,并说明大数据与普通数据在数据量、处理方式、分析目标等方面的区别。
2. 题目:大数据的五个V指的是什么?解析:考察应聘者对大数据特征的理解。
大数据的五个V分别是Volume(数据量)、Velocity(数据速度)、Variety(数据多样性)、Veracity(数据真实性)和Value(数据价值)。
应聘者应能够解释每个V的具体含义。
3. 题目:请简述Hadoop生态系统中的主要组件及其功能。
解析:考察应聘者对Hadoop生态系统的了解。
应聘者应能够列举Hadoop生态系统中的主要组件,如Hadoop分布式文件系统(HDFS)、Hadoop YARN、Hadoop MapReduce、Hive、Pig、HBase等,并解释每个组件的基本功能和作用。
4. 题目:请简述数据仓库和数据湖的区别。
解析:考察应聘者对数据仓库和数据湖的理解。
应聘者应能够解释数据仓库和数据湖在数据存储、处理、查询等方面的差异,以及它们在数据分析中的应用场景。
二、数据处理与分析5. 题目:请简述ETL(提取、转换、加载)过程在数据处理中的作用。
解析:考察应聘者对ETL过程的了解。
应聘者应能够解释ETL在数据预处理、数据清洗、数据转换等方面的作用,以及ETL工具在数据处理中的应用。
6. 题目:请描述数据切分、增量同步和全量同步的方法。
解析:考察应聘者对数据同步的理解。
应聘者应能够解释数据切分、增量同步和全量同步的概念,并举例说明在实际应用中的具体操作方法。
7. 题目:请简述数据挖掘中的分类、聚类和预测方法。
解析:考察应聘者对数据挖掘方法的了解。
应聘者应能够列举数据挖掘中的分类、聚类和预测方法,如决策树、K-means、支持向量机、神经网络等,并解释每种方法的基本原理和应用场景。
大数据工程师面试题及答案
大数据工程师面试题及答案在大数据领域,对工程师的要求越来越高。
以下是一些常见的大数据工程师面试题及答案,希望能为您的面试准备提供一些帮助。
一、基础知识1、请简要介绍一下 Hadoop 生态系统中的主要组件。
答案:Hadoop 生态系统主要包括 HDFS(分布式文件系统)用于存储大规模数据;YARN(资源管理框架)负责资源的分配和调度;MapReduce(分布式计算框架)用于处理大规模数据的计算任务。
此外,还有 Hive(数据仓库工具)、HBase(分布式数据库)、Sqoop(数据导入导出工具)等组件。
2、什么是数据仓库?与数据库有什么区别?答案:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
数据库主要用于事务处理,强调实时性和一致性;而数据仓库侧重于数据分析和决策支持,数据量大、结构复杂,存储历史数据。
二、数据处理和分析1、如何处理数据倾斜问题?答案:数据倾斜通常是指某些键值的分布不均匀,导致某些任务处理的数据量远大于其他任务。
可以通过对倾斜的键进行加盐处理,或者使用 Combiner 函数在 Map 端进行局部聚合来缓解。
还可以对数据进行重新分区,或者调整并行度等方式来解决。
2、请介绍一下 Spark 的核心概念,如 RDD、DataFrame 和 Dataset。
答案:RDD(弹性分布式数据集)是 Spark 的基础数据结构,具有不可变、可分区、可并行操作等特点。
DataFrame 类似于关系型数据库中的表,具有列名和数据类型。
Dataset 是 DataFrame 的扩展,提供了类型安全和面向对象的编程接口。
三、数据存储1、介绍一下 HBase 的架构和工作原理。
答案:HBase 基于 Hadoop 的 HDFS 存储数据,采用主从架构。
HMaster 负责管理表的元数据,HRegionServer 负责存储和管理实际的数据。
数据按照行键进行排序和存储,通过 Region 进行划分和管理。
大数据开发工程师招聘面试题与参考回答(某大型集团公司)
招聘大数据开发工程师面试题与参考回答(某大型集团公司)(答案在后面)面试问答题(总共10个问题)第一题题目:请简述大数据技术在现代企业中的应用及其对企业竞争力的影响。
第二题问题:您在过往的工作中,是否遇到过数据量极大,导致数据处理和分析效率低下的问题?如果是,您是如何解决这个问题的?第三题题目:请描述一下您在以往项目中使用大数据技术解决过的一个具体问题。
详细说明问题背景、您采用的大数据技术、实施过程以及最终取得的成果。
第四题题目:请解释什么是MapReduce,并描述一个场景,在这个场景中使用MapReduce可以极大地提高数据处理效率。
请同时指出在这个场景中Map和Reduce两个阶段是如何工作的,并说明这样做的优势。
第五题题目:请描述一下您在以往项目中遇到的大数据开发过程中最复杂的技术挑战,以及您是如何解决这个问题的。
第六题题目:请解释什么是MapReduce,并描述一个实际场景,在该场景中使用MapReduce可以有效地处理大数据集。
请同时指出MapReduce模型中的主要步骤,并简要说明每个步骤的作用。
第七题题目:请描述一次您在项目中遇到的大数据处理挑战,包括挑战的具体内容、您是如何分析问题的、以及您最终采取的解决方案和效果。
第八题题目:请解释什么是MapReduce,并且举例说明在一个大数据处理场景中如何使用MapReduce来解决实际问题。
在您的解释中,请务必涵盖MapReduce的主要组成部分及其工作流程。
1.Map(映射)阶段:在这个阶段,原始的大数据集被分成若干个小块分发到不同的节点上。
每个节点上的程序对分配给自己的数据进行处理,产生中间键值对。
这些键值对随后会被排序并且传递到下个阶段。
2.Reduce(规约)阶段:在这个阶段,来自Map阶段的数据被重新组织,使得相同键的所有值都被组合在一起。
接下来,reduce函数会处理这些键对应的多个值,并将它们转化为最终的结果输出。
1.Map阶段:首先,系统将整个购买记录数据集分割成多个片段,并将这些片段发送到不同的Map任务中。
大数据方向_面试题目(3篇)
第1篇一、基础知识与理论1. 请简述大数据的概念及其与传统数据处理的区别。
2. 请解释什么是Hadoop,并简要说明其组成部分。
3. 请简述MapReduce的核心思想及其在Hadoop中的应用。
4. 请描述HDFS(Hadoop分布式文件系统)的工作原理及其优势。
5. 请说明YARN(Yet Another Resource Negotiator)的作用及其在Hadoop中的地位。
6. 请解释什么是Spark,以及它与传统的大数据处理技术相比有哪些优势。
7. 请描述Spark的架构及其核心组件。
8. 请说明什么是Hive,并简要介绍其作用。
9. 请解释什么是HBase,以及它在大数据中的应用场景。
10. 请说明什么是NoSQL,并列举几种常见的NoSQL数据库及其特点。
二、Hadoop生态系统1. 请介绍Hadoop生态系统中常用的数据处理工具,如Hive、Pig、Spark等。
2. 请说明Hadoop生态系统中常用的数据分析工具,如Elasticsearch、Kafka、Flume等。
3. 请解释Hadoop生态系统中数据存储解决方案,如HDFS、HBase、Cassandra等。
4. 请描述Hadoop生态系统中常用的数据仓库解决方案,如Apache Hudi、Delta Lake等。
5. 请说明Hadoop生态系统中常用的数据可视化工具,如Tableau、Power BI、D3.js等。
三、大数据技术1. 请简述大数据技术中的数据清洗、数据集成、数据存储、数据挖掘等基本概念。
2. 请介绍大数据技术中的数据挖掘算法,如聚类、分类、关联规则等。
3. 请说明大数据技术中的数据可视化方法及其在数据分析中的应用。
4. 请描述大数据技术中的实时数据处理技术,如流处理、事件驱动等。
5. 请介绍大数据技术中的机器学习算法及其在数据分析中的应用。
四、大数据应用案例1. 请列举大数据技术在金融、医疗、电商、物联网等领域的应用案例。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Java 基础
1.Java的HashMap是如何工作的?
HashMap是一个针对数据结构的键值,每个键都会有相应的值,关键是识别这样的值。
HashMap 基于hashing原理,我们通过put ()和get ()方法储存和获取对象。
当我们将键值对传递给put ()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket 位置来储存值对象。
当获取对象时,通过键对象的equals ()方法找到正确的键值对,然后返回值对象。
HashMap 使用LinkedList 来解决碰撞问题,当发生碰撞了,对象将会储存在LinkedList 的下一个节点中。
HashMap 在每个LinkedList 节点中储存键值对对象。
2.什么是快速失败的故障安全迭代器?
快速失败的Java迭代器可能会引发ConcurrentModifcationException在底层集合迭代过程中被修改。
故障安全作为发生在实例中的一个副本迭代是不会抛出任何异常的。
快速失败的故障安全范例定义了当遭遇故障时系统是如何反应的。
例如,用于失败的快速迭代器ArrayList和用于故障安全的迭代器ConcurrentHashMap。
3..Java BlockingQueue是什么?
Java BlockingQueue是一个并发集合util包的一部分。
BlockingQueue队列是一种支持操作,它等待元素变得可用时来检索,同样等待空间可用时来存储元素。
4.什么时候使用ConcurrentHashMap?
在问题2中我们看到ConcurrentHashMap被作为故障安全迭代器的一个实例,它允许完整的并发检索和更新。
当有大量的并发更新时,ConcurrentHashMap此时可以被使用。
这非常类似于Hashtable,但ConcurrentHashMap不锁定整个表来提
供并发,所以从这点上ConcurrentHashMap的性能似乎更好一些。
所以当有大量更新时ConcurrentHashMap应该被使用。
5.哪一个List实现了最快插入?
LinkedList和ArrayList是另个不同变量列表的实现。
ArrayList的优势在于动态的增长数组,非常适合初始时总长度未知的情况下使用。
LinkedList的优势在于在中间位置插入和删除操作,速度是最快的。
LinkedList实现了List接口,允许null元素。
此外LinkedList提供额外的get,remove,insert方法在LinkedList的首部或尾部。
这些操作使LinkedList可被用作堆栈(stack),队列(queue)或双向队列(deque)。
ArrayList实现了可变大小的数组。
它允许所有元素,包括null。
每个ArrayList 实例都有一个容量(Capacity),即用于存储元素的数组的大小。
这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。
当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
6.Iterator和ListIterator的区别
●ListIterator有add()方法,可以向List中添加对象,而Iterator不能。
●ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是
ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。
Iterator就不可以。
●ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。
Iterator没有此功能。
●都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。
Iierator仅能遍历,不能修改。
7.什么是CopyOnWriteArrayList,它与ArrayList有何不同?
CopyOnWriteArrayList是ArrayList的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。
相比较于ArrayList 它的写操作要慢一些,因为它需要实例的快照。
CopyOnWriteArrayList中写操作需要大面积复制数组,所以性能肯定很差,但是读操作因为操作的对象和写操作不是同一个对象,读之间也不需要加锁,读和写之间的同步处理只是在写完后通过一个简单的"="将引用指向新的数组对象上来,这个几乎不需要时间,这样读操作就很快很安全,适合在多线程里使用,绝对不会发生ConcurrentModificationException,因此CopyOnWriteArrayList适合使用在读操作远远大于写操作的场景里,比如缓存。
8.迭代器和枚举之间的区别
如果面试官问这个问题,那么他的意图一定是让你区分Iterator不同于Enumeration 的两个方面:
●Iterator允许移除从底层集合的元素。
●Iterator的方法名是标准化的。
9.Hashmap如何同步?
当我们需要一个同步的HashMap时,有两种选择:
●使用Collections.synchronizedMap(..)来同步HashMap。
●使用ConcurrentHashMap的
这两个选项之间的首选是使用ConcurrentHashMap,这是因为我们不需要锁定整个对象,以及通过ConcurrentHashMap分区地图来获得锁
10.IdentityHashMap和HashMap的区别
IdentityHashMap是Map接口的实现。
不同于HashMap的,这里采用参考平等。
●在HashMap中如果两个元素是相等的,则key1.equals(key2)
●在IdentityHashMap中如果两个元素是相等的,则key1 == key2。