面试真题

技术面 + 非技术面高频问题 · 企业真题标题 + 校招宝自研参考答案
面试真题
2508 道
技术岗
641 道
非技术岗
1867 道
当前筛选
55 道

按赛道技术岗以技术方向细分;非技术岗按「结构化 / 半结构化 / 无领导 / HR / 职能」细分

按方向/形式点选即筛,再点「全部」还原

按难度

按企业点选查看该公司全部题目

分类:Go · 难度:中等55 道 · 点击进入查看参考答案

中等Go
golang中哪些数据类型是线程安全的?
结论:Go原生数据类型大多非线程安全,仅channel及借助同步原语包装的类型并发安全。核心要点:1) channel本身线程安全,收发操作原子且同步;2) sync.Mutex等同步类型用于保护资源;3) atomic…
🎤 Momenta
中等Go
goroutine怎么做同步控制
结论:goroutine同步控制可用channel、sync原语、context。核心方式:1) sync.WaitGroup:Add/Done/Wait等待一批任务完成;2) channel:通过无缓冲channel阻…
🎤 子虔科技
中等Go
Map并发安全吗,如果是sync.map,它是如何保证并发安全?
结论:原生map非并发安全,并发读写会panic;sync.Map通过读写分离+原子操作保证安全。核心要点:1.原生map检测并发写冲突直接fatal error; 2.sync.Map结构含read(atomic.Va…
🎤 百度
中等Go
Map的底层实现
结论:Go map底层是链式哈希表,由hmap和bmap构成。核心要点:1.hmap结构体含B(桶数=2^B)、buckets数组指针、oldbuckets(扩容旧桶)、count等; 2.每个桶bmap存tophash…
🎤 小红书
中等Go
map的底层数据结构与线程安全
结论:底层为hmap和bmap哈希表,原生非线程安全。核心要点:1.数据结构:hmap含桶数组(2^B个bmap),bmap存tophash、key/value数组及溢出指针; 2.非安全原因:并发写或修改count、桶…
🎤 CMSTOP
中等Go
map手动加锁与Sync.Map的区别
结论:手动加锁(map+Mutex)通用但读写均需锁;Sync.Map专为读多写少优化,读无锁。核心差异:1.锁粒度:手动锁全局互斥,Sync.Map用原子读+脏锁;2.适用场景:手动锁适合写频繁或需复合操作,Sync.…
🎤 百度
中等Go
map在什么时候触发扩容
结论:Go map在负载因子超过6.5或溢出桶数量过多时触发扩容。核心要点:1.负载因子=元素数/桶数,插入后count > 6.5*桶数则翻倍扩容;2.溢出桶过多(如溢出桶数>=桶数且达阈值)触发等量扩容(整理碎片);…
🎤 百度
中等Go
panic与匿名函数的异常捕获和处理
结论:Go中panic触发运行时错误导致程序终止,可通过在defer中调用recover结合匿名函数捕获处理。原理:panic会中断当前函数执行,沿调用栈向上抛出,执行延迟调用(defer);若在defer函数(常写为匿…
🎤 字节跳动
中等Go
recover 怎么使用的,defer 相比普通的在函数最后执行操作,其优势是什么?
结论:recover()用于捕获panic,必须在defer函数中直接调用才有效;defer优势在于无论函数正常返回还是发生panic,都能保证延迟函数执行,适合资源清理。核心要点:1. recover仅在defer f…
🎤 闪送
中等Go
select两个channel性能稳定,三个channel时性能会发生抖动,为什么?
结论:Go中select在2个channel时性能稳定,3个及以上出现抖动,原因是编译器对少量case有特殊优化,多case走通用runtime.selectgo引入锁和调度开销。核心要点:1)case数为0/1/2时,…
🎤 Shopee
中等Go
sync.WaitGroup底层原理
结论:WaitGroup通过计数器、信号量和原子操作实现协程等待。核心要点:1.内部state1包含counter、waiter计数和信号量;2.Add(delta)原子增加counter,Done()即Add(-1);…
🎤 大华股份
中等Go
什么情况下会导致goroutine泄露?
结论:Goroutine泄露指协程因阻塞无法退出,持续占用内存。常见情况:1. 向无接收者的channel发送或从无发送者接收,永久阻塞;2. range遍历未关闭的channel永不结束;3. select无defau…
🎤 金山
中等Go
用Golang的channel实现并发控制,两个goroutine交替打印奇偶数
结论:用两个channel实现信号同步,使两goroutine交替打印。核心:创建ch1,ch2,goroutine A收ch1打印奇数后向ch2发信号,B收ch2打印偶数后向ch1发信号,主协程先触发ch1。示例:ch…
🎤 百度
中等Go
有缓存的channel的数据接收和发送流程
结论:有缓存channel基于环形缓冲,发送接收在缓冲不满/不空时不阻塞。流程:发送时,若缓冲有空位则拷贝数据入队并返回;若满则当前goroutine入发送等待队列并阻塞,待接收方取走数据后唤醒;接收时,若缓冲非空则取数…
🎤 京东
中等Go
mutex底层原理是什么?
结论:Mutex 底层依赖原子操作和等待队列实现互斥。以 Go sync.Mutex 为例:内部 state 字段(原子整型)记录锁状态,包含 locked、woken、starving 标志。加锁时先 CAS 尝试置位…
🎤 英伟达
‹ 上一页第 3 / 3 页
题目整理自公开面经,答案由校招宝自研生成,仅供参考