面试真题

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

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

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

按难度

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

技术岗 · 难度:中等357 道 · 点击进入查看参考答案

中等Go
GPM 调度器?
结论:GPM是Go语言运行时的调度模型,通过G(协程)、P(逻辑处理器)、M(内核线程)实现高效并发调度。核心要点:G代表goroutine,轻量级用户态线程;P管理G队列并提供执行上下文,数量由GOMAXPROCS决定…
🎤 网易
中等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 尝试置位…
🎤 英伟达
中等Java
@Transactional` 注解的原理?
结论:@Transactional基于Spring AOP和代理机制实现声明式事务。要点:1.原理:Spring容器扫描该注解,为Bean创建代理(JDK动态代理或CGLIB),在方法调用前通过TransactionIn…
🎤 百度
中等Java
常见的内存泄露场景?
结论:内存泄露指已分配内存因引用未释放而无法回收,常见场景多样。核心要点:C++中new/delete不匹配、忘记释放指针或析构函数未清理;Java中静态集合(static Map)长期持有对象、未关闭数据库/IO流、T…
🎤 京东
中等Java
常见设计模式,你用过哪些?
结论:设计模式分创建型、结构型、行为型三类,项目中常用单例、工厂、策略、观察者等。核心要点:单例确保全局唯一(双重检查锁注意volatile);工厂解耦对象创建;策略封装可互换算法(如支付路由);观察者实现事件通知(如S…
🎤 阿里巴巴
中等Java
分布式锁、Redisson 的实现
结论:分布式锁常用Redis,Redisson是Java客户端封装。核心原理:1. 加锁用Lua脚本向Redis Hash结构写入锁名、线程UUID+重入计数,同时设置过期时间,保证原子性;2. 看门狗机制:未指定lea…
🎤 京东
题目整理自公开面经,答案由校招宝自研生成,仅供参考