面试真题

Go · 中等 · CMSTOP

map的底层数据结构与线程安全

中等 Go 🎤 CMSTOP
参考答案
结论:底层为hmap和bmap哈希表,原生非线程安全。核心要点:1.数据结构:hmap含桶数组(2^B个bmap),bmap存tophash、key/value数组及溢出指针; 2.非安全原因:并发写或修改count、桶指针无原子保护,Go运行时检测并发写直接panic; 3.保障安全方式:①外置sync.Mutex/RWMutex保护原生map,简单但读锁竞争; ②分片map+多锁提升并发; ③sync.Map:read/dirty分离,无锁读+锁写,适合读多写少。对比:原生+锁通用;sync.Map特定场景优。
题目整理自公开面经,答案由校招宝自研生成,仅供参考