【问题标题】:hash table - how often is the hash calculated for a given key?哈希表 - 多久计算一次给定键的哈希?
【发布时间】:2013-08-30 17:47:17
【问题描述】:

我在一次采访中被问到这个问题。我的直接答案是每次读写。面试官接着问,“你确定哈希没有缓存在表中的某个地方吗?”

这让我自己又猜到了。最后,我坚持原来的答案,但出于好奇,我想我会在这里提出问题。

另请注意,本次面试是针对 JavaScript 职位的,但问题不一定针对 JavaScript。

那么,一般来说,一个键的哈希是计算一次还是每次读/写? JavaScript 特有的呢?

【问题讨论】:

    标签: javascript data-structures


    【解决方案1】:

    当然这取决于实现,即使您询问 JS 也有几种实现(V8、SpiderMonkey、MSFT 等)。

    它还应该取决于应用程序。如果您的应用程序更频繁地使用放入哈希表的最后一项,那么以某种方式缓存哈希应该是有意义的。在某些情况下,这会更好。

    我猜面试官只是想看看你如何处理事后猜测......

    【讨论】:

      【解决方案2】:

      这取决于哈希表和键类型,以及我们谈论的是用于读/写的键还是表中已经存在的键。前者的哈希值可以而且有时会缓存在对象中(例如:Python 中的字符串)。后者的哈希值可以而且有时会缓存在表中——而不是键、值对,您存储哈希、键、值三元组。

      在这两种情况下,决定取决于键的类型:它们是否大且散列成本高?额外的空间和内存流量值得吗?例如,对于大于几十个字符的字符串,这可能是一个明显的胜利,而对于 2D 点可能无用或有害。另请注意,哈希值可用于避免比较,这可能有用,但似乎并不重要。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-23
        • 2022-07-06
        • 2021-10-19
        • 2015-08-31
        • 2012-06-03
        • 2011-04-17
        • 2016-02-24
        • 2013-03-15
        相关资源
        最近更新 更多