面试问题:什么是hashmap?

时间:2010-10-07 21:57:07

标签: hashmap

我在接受采访时被问到这个问题:“告诉我关于哈希图的所有信息。”

我继续这样做:它是一个带键值对的数据结构;哈希函数用于定位元素;如何解决哈希冲突等等。

在我完成之后,他们问:“好的,现在解释你刚才对一个5岁的孩子所说的一切。你不能使用技术术语,特别是散列和映射。” < / p>

我不得不说这让我感到意外,我没有给出一个好的答案。你会怎么回答?

5 个答案:

答案 0 :(得分:48)

规则。孩子们知道规则。孩子们知道某些物品属于某些地方。 HashMap就像一套规则,假设有一个项目(你的鞋子,你最喜欢的书或你的衣服),它们应该有一个特定的地方(鞋架,书架或壁橱)。

所以,如果你想知道在哪里寻找你的鞋子,你就要知道要在鞋架里看看。

但是等一下:如果鞋架已满,会发生什么?有几种选择。

1)对于每个项目,都有一个可以尝试的地方列表。试着把它们放在门旁边。但是等等,已经有了一些东西:我们还能在哪里放置它们?试试壁橱。如果我们需要找到我们的鞋子,我们会按照相同的清单找到它们。 (探测序列)

2)买一个更大的房子,有一个更大的鞋架。 (动态调整大小)

3)将鞋子堆放在架子的顶部,忽略了这样一个事实,即找到合适的鞋子是一件非常痛苦的事情,因为我们必须穿过堆中的所有鞋子才能找到它们。 (链接)。

答案 1 :(得分:41)

让我们拿大字书,或字典,并尝试找到斑马这个词。我们可以很容易地猜到斑马将接近书的末尾,就像字母“Z”字母一样。现在我们可以说,我们总能找到斑马在大字书中的位置。这是我们可以快速找到斑马,大象或我们在大字书中可以想到的任何其他类型的东西的方式。有时两个单词会出现在苹果和蚂蚁的同一页面上。我们确定要查看哪个页面,但是在我们到达页面之前,我们不确定苹果和蚂蚁彼此之间的距离。有时苹果和蚂蚁可能在同一页面上,有时它们可​​能不在,有些大字书有更大的单词。

我就是这样做的。

答案 2 :(得分:6)

作为家长,如果我必须向5岁的孩子解释一个哈希图,我会在巧克力蛋糕周围挥手时说出你所说的话。

说真的,像这样的问题应该意味着“你能用简单的英语解释这个概念吗”,这是一个很好的启发式方法,可以帮助你理解它的内在程度。既然听起来像你那样,这个问题似乎有些愚蠢。

答案 3 :(得分:5)

地图所包含的数据可以通过一些相关信息查找,就像在书的索引中可以通过它们上面的单词查找页面一样。

使用HashMap的关键优势在于,就像书中的索引一样,在索引中查找单词所在页面的速度要快于开始逐页搜索该单词的速度。

(我正在给你一个认真的答案,因为面试官可能一直试图看你能如何向项目经理和客户等非技术人员解释技术概念。也许是一个直接的hashmap这非常有用,但它可能与任何翻译技巧一样公平。)

答案 4 :(得分:3)

你有一本空白但有编号的页面的书和一个特殊的解码器环,当一个东西进入它时会生成一个页码。

分配值:

您获得了ID(密钥)和消息(值)。

您将ID放入特殊的解码器响铃中,并将页码吐出。

将您的图书打开到该页面。如果该ID在页面上,请删除ID /消息。

现在在页面上写下ID和消息。如果已经存在一个或多个带有消息的其他ID,则只需在其下面写下新消息。

要检索值:

您只获得一个ID(密钥)。

您将ID放入特殊的解码器响铃中,并将页码吐出。

将您的图书打开到该页面。如果ID在页面上,请阅读其后面的消息(值)。

相关问题