**Sreenath Ravva**, one of reader on *HowToDoInJava*, has appeared on a interview for position in above product i.e. oracle enterprise manager. Below listed questions were shared with me by him so that I can share with all of you, in hope that it will benefit few of us on any fine day.
<iframeallow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"allowfullscreen=""frameborder="0"height="375"src="https://www.youtube.com/embed/CumOvDWnUDY?feature=oembed"title="Tell Me About Yourself - Best Answer to this Interview Question - YouTube Top Pick"width="500"></iframe>
As “Ievgen” mentioned in comments, JDK 7 onwards you can use [try-with-resources](//howtodoinjava.com/java-7/automatic-resource-management-with-try-with-resources-in-java-7/"try-with-resource") with “optional” catch or finally block.
在“ [**中,HashMap 如何在 Java**](//howtodoinjava.com/java/collections/how-hashmap-works-in-java/"How hashmap works in java") 中工作”,我解释了`HashMap`或`ConcurrentHashMap`类的内部结构以及它们如何适合整个概念。 但是,当面试官向您询问有关`HashMap`相关概念时,他不仅会停留在核心概念上。 讨论通常会朝多个方向进行,以了解您是否真正了解该概念。
关于“[**`HashMap`如何在 Java 中工作**](//howtodoinjava.com/java/collections/how-hashmap-works-in-java/"How hashmap works in java")”,我解释了`HashMap`或`ConcurrentHashMap`类的内部结构以及它们如何适合整个概念。 但是,当面试官向您询问有关`HashMap`相关概念时,他不仅会停留在核心概念上。 讨论通常会朝多个方向进行,以了解您是否真正了解该概念。
设计一个好的键的最基本的需求是“我们应该能够从映射中检索到值对象而不会失败”,对吗? 否则,无论您如何构建精美的数据结构,它都将毫无用处。 要确定我们已经创建了一个好的键,我们必须知道“[**HashMap 如何工作?**](https://howtodoinjava.com/java/collections/how-hashmap-works-in-java/"How hashmap works in java")。 我将介绍哈希表的工作原理,让您从链接的文章中阅读内容,但总而言之,它是基于哈希原理的。
设计一个好的键的最基本的需求是“我们应该能够从映射中检索到值对象而不会失败”,对吗? 否则,无论您如何构建精美的数据结构,它都将毫无用处。 要确定我们已经创建了一个好的键,我们必须知道“[**`HashMap`如何工作?**](https://howtodoinjava.com/java/collections/how-hashmap-works-in-java/"How hashmap works in java")。 我将介绍哈希表的工作原理,让您从链接的文章中阅读内容,但总而言之,它是基于哈希原理的。
键的哈希码主要与 equals()方法结合使用,用于将键放入映射,然后从映射中搜索回来。 因此,如果在将键值对放入映射后,键对象的哈希码发生变化,则几乎不可能从映射取回值对象。 这是内存泄漏的情况。 为了避免这种情况,映射**键应该是不可变的**。 这些是 [**创建类**](https://howtodoinjava.com/java/basics/how-to-make-a-java-class-immutable/"How to make a java class immutable")不变的东西。
键的哈希码主要与`equals()`方法结合使用,用于将键放入映射,然后从映射中搜索回来。 因此,如果在将键值对放入映射后,键对象的哈希码发生变化,则几乎不可能从映射取回值对象。 这是内存泄漏的情况。 为了避免这种情况,映射**键应该是不可变的**。 这些是[**创建类**](https://howtodoinjava.com/java/basics/how-to-make-a-java-class-immutable/"How to make a java class immutable")不变的东西。
但是请记住,建议**不可变,而不是强制性**。 如果要将可变对象作为`HashMap`中的键,则必须确保键对象的**状态更改不会更改对象**的哈希码。 这可以通过重写 hashCode()方法来完成。 同样,键类必须遵守 [**hashCode()和 equals()方法协定**](https://howtodoinjava.com/java/basics/java-hashcode-equals-methods/"Working with hashCode and equals methods in java") ,以避免在运行时出现不良行为。 在链接的文章中阅读有关此合同的更多信息。
但是请记住,建议**不可变,而不是强制性**。 如果要将可变对象作为`HashMap`中的键,则必须确保键对象的**状态更改不会更改对象**的哈希码。 这可以通过重写`hashCode()`方法来完成。 同样,键类必须遵守[**`hashCode()`和`equals()`方法协定**](https://howtodoinjava.com/java/basics/java-hashcode-equals-methods/"Working with hashCode and equals methods in java"),以避免在运行时出现不良行为。 在链接的文章中阅读有关此约定的更多信息。
更详细的信息可在[**在此处**](https://howtodoinjava.com/java/collections/design-good-key-for-hashmap/"How to design a good key for HashMap") 中找到。
更详细的信息可在[**在此处**](https://howtodoinjava.com/java/collections/design-good-key-for-hashmap/"How to design a good key for HashMap")找到。
这是[初始版本](https://web.archive.org/web/20080205101616/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml),最初称为 **Oak** 。 它具有非常不稳定的 API 和一个名为**WebRunner**的 Java Web 浏览器。
这是[初始版本](https://web.archive.org/web/20080205101616/http://www.sun.com/smi/Press/sunflash/1996-01/sunflash.960123.10561.xml),最初称为 **Oak** 。 它具有非常不稳定的 API 和一个名为`WebRunner`的 Java Web 浏览器。