面试真题

Go · 中等 · 小红书

Map的底层实现

中等 Go 🎤 小红书
参考答案
结论:Go map底层是链式哈希表,由hmap和bmap构成。核心要点:1.hmap结构体含B(桶数=2^B)、buckets数组指针、oldbuckets(扩容旧桶)、count等; 2.每个桶bmap存tophash[8]、连续8个key、8个value、overflow指针; 3.定位:哈希key得64位,低B位选桶,高8位存tophash快速比对,避免全key比较; 4.冲突处理:桶内8槽满则挂溢出桶形成链表; 5.扩容:负载因子超6.5或溢出桶多时,分配新桶(2倍或1倍),渐进搬迁,访问时迁移。示例:m["a"]先hash选桶,比tophash再比key。
题目整理自公开面经,答案由校招宝自研生成,仅供参考