面试题, hash 和 map 的区别??? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
请不要在回答技术问题时复制粘贴 AI 生成的内容
ikw

面试题, hash 和 map 的区别???

  •  
  •   ikw
    zwpaper Sep 28, 2018 via iPhone 5251 views
    This topic created in 2771 days ago, the information mentioned may be changed or developed.

    刷到 v2 在讨论鹅厂的技术水平
    t/492998?p=1

    刚好昨天面试,和鹅厂面试官聊了一下,有个问题耿耿于怀,想来 v2 学习一下

    问题就是标题,hash 和 map 的区别

    我第一反应是这俩不是一个对比范畴的吧,hash 是算法,map 是数据结构?和面试官提了一嘴,貌似不能这么对比吧?

    然后想起来 c++ 中 map 是用红黑树实现的,又问了一下,是讨论 c++ 吗?回答是不是,就是讨论数据结构……

    没办法,强行回答,hash 一般是用数组实现,O(1),map 是用树,O(log n)

    ---
    ### 事后搜索

    map
    > In computer science, an associative array, map, symbol table, or dictionary is an abstract data type composed of a collection of (key, value) pairs, such that each possible key appears at most once in the collection.

    hash 有两个结果
    hash function

    这是我理解的 hash 函数

    > A hash function is any function that can be used to map data of arbitrary size to data of a fixed size.


    hash table

    hash 表,我理解这是不是也是一种 map ?

    > In computing, a hash table (hash map) is a data structure that implements an associative array abstract data type, a structure that can map keys to values. A hash table uses a hash function to compute an index into an array of buckets or slots, from which the desired value can be found.



    ---
    ### 最后

    就算 c++ 里,std 里的 hash 是 c++11 加进去的函数模版
    最常用的 hash 数据结构是 unordered_map ……


    来 v2 学习一下我考虑的不周的地方

    15 replies    2018-09-29 00:45:40 +08:00
    enenaaa
        1
    enenaaa  
       Sep 28, 2018
    人家问的是 hash table 和 map 对比吧。 这不是面试常识?
    0x11901
        2
    0x11901  
       Sep 28, 2018
    其实我觉得楼主答得不错,知识面也挺广的……
    面试官应该就如楼上所说就想问问红黑树实现的 map 和哈希表实现的 hash_map 区别……
    congeec
        3
    congeec  
       Sep 28, 2018 via iPhone
    面试不是把问题答出来就行。多沟通,弄清人家的意图,掌握主动权啊
    leotso
        4
    leotso  
       Sep 28, 2018 via iPhone
    @congeec 嗯,有道理,越来越觉得面试中的沟通很重要
    seeker
        5
    seeker  
       Sep 28, 2018
    根据楼主的描述,是面试官沟通能力欠佳,或者是不愿沟通。
    across
        6
    across  
       Sep 28, 2018 via iPhone
    感觉面试 unordered_map 和 map 成必考题了
    ikw
        7
    ikw  
    OP
       Sep 28, 2018 via iPhone
    @enenaaa 我理解的 hash table 也是 map 的一种吧,毕竟 hash table 也叫 hash map ……
    ikw
        8
    ikw  
    OP
       Sep 28, 2018 via iPhone
    @congeec 有沟通的,没写太细致,聊完 hash table 和树的区别,面试官也认可了,只是我还是觉得不应该把 map 单一地认为就是树
    fireapp
        9
    fireapp  
       Sep 28, 2018 via iPhone
    hash 是算法,map 是数据结构
    wingyiu
        10
    wingyiu  
       Sep 28, 2018   1
    java: Map HashMap TreeMap
    kx5d62Jn1J9MjoXP
        11
    kx5d62Jn1J9MjoXP  
       Sep 28, 2018
    hash 可以实现 map, 但是 map 有其它类型的, 比如 TreeMap
    ikw
        12
    ikw  
    OP
       Sep 28, 2018 via iPhone
    @across 主要我面的是非 c++ 岗,考我 unordered_map 真可能把我考住的…而且面试官强调的是通用的 map,非 c++。

    而且,作为一名 gopher,map 是 hash table 实现的…真差点尴尬了
    ChristopherWu
        13
    ChristopherWu  
       Sep 28, 2018   1
    @zwpaper 除了 C++, python 也是有 OrderedDict 的,也是有序 map。

    怎么说呢,知道 map 有『有序』与『无序』两种不同的实现方式,也是挺重要的。
    d18
        14
    d18  
       Sep 28, 2018
    hash 特指哈希表?
    map 的话,tree 和 hash 是常见的实现方式,但是单从字面理解,只要是实现了 mapping 的功能就行,甚至可以是比如一个数组,然后分别用连续两个元素保存键值对。
    20015jjw
        15
    20015jjw  
       Sep 29, 2018 via Android
    奇怪的题目..
    About     Help     Advertise     Blog     API     FAQ     Solana     2694 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 74ms UTC 14:34 PVG 22:34 LAX 07:34 JFK 10:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86