面试真题

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

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

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

按难度

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

难度:中等468 道 · 点击进入查看参考答案

中等C++
如何使用 gdb 调试不带调试信息的可执行程序?
结论:无调试信息时,gdb只能进行汇编级调试,通过地址断点、反汇编和寄存器/内存查看来分析程序。核心要点:1. 启动gdb加载程序,用file确认无符号;2. 用nm或objdump -t查看ELF导出符号(如main)…
🎤 米哈游
中等Go
协程如何关闭
结论:协程关闭需通过通道通知或上下文取消,不可强制杀死。核心要点:1.Go中goroutine无法外部强制终止,需通过close(channel)发信号或使用context.Context取消;示例:ctx,cancel…
🎤 大华股份 / 深信服
中等Go
多个协程读写map会怎样,什么是线程安全
结论:Go中多个协程并发读写map会触发运行时panic(concurrent map write),线程安全指并发访问下数据逻辑正确且无竞争。核心要点:1. Go原生map非并发安全,内部无锁,并发读写检测失败会崩溃;…
🎤 滴滴
中等Go
切片不断append是如何给它分配内存的,具体扩容规则是怎样的
结论:append在容量不足时触发扩容,向系统申请新内存并拷贝原数据。具体规则:当原切片容量oldCap<1024时,新容量newCap翻倍(oldCap*2);当oldCap>=1024时,newCap按1.25倍增长…
🎤 百度
中等Go
切片的底层原理
结论:切片是引用类型,底层为包含指针、长度、容量的结构体。原理:运行时表示为reflect.SliceHeader,含Data(unsafe.Pointer指向底层数组首地址)、Len(int)、Cap(int)。切片本…
🎤 小红书
中等Go
切片的深拷贝与浅拷贝
结论:切片赋值或截取是浅拷贝(共享底层数组);深拷贝需新建底层数组并复制元素,若元素为引用类型还需递归拷贝指向对象。区别:浅拷贝如s2:=s1或s2:=s1[:],仅复制SliceHeader,Data相同,修改元素互相…
🎤 CMSTOP
中等Go
如果chan 在有缓冲区的情况下缓冲区满了不想要后续的数据了怎么做
使用select配合default实现非阻塞发送丢弃数据,或关闭channel停止接收。核心要点:缓冲满时普通发送会阻塞;用select{ case ch<-data: default: // 丢弃 }可在满时走defa…
🎤 大华股份
中等Go
如何定位goroutine溢出?
使用pprof和runtime接口定位goroutine溢出。核心要点:引入net/http/pprof包,访问/debug/pprof/goroutine查看栈和数量;代码中调用runtime.NumGoroutine…
🎤 金山
中等Go
如何获取goroutine里面的一个函数执行的返回值
结论:获取goroutine内函数返回值,主流方案是用channel传递,或借助共享变量配合sync.WaitGroup/互斥锁。原理:go语句启动并发后,被调函数的返回结果会被丢弃,必须显式传出。方案1:无缓冲/缓冲c…
🎤 深信服
中等Go
如何控制 goroutine 的生命周期,channel 的作用,context 的作用
结论:Go中goroutine生命周期需由自身通过channel或context主动退出,不可强杀。核心要点:1. channel用于goroutine间通信和同步,可定义done chan struct{}发送关闭信号…
🎤 闪送
中等Go
如何在defer中修改方法返回值
结论:defer只能修改命名返回值,不能改匿名返回值。原理:Go函数命名返回(如func f() (r int))时return先赋值r再执行defer,defer修改r即改返回槽;匿名返回时return将局部变量拷贝到…
🎤 深信服
中等Go
生产者、消费者用有缓存channel通信场景,如何让生产者和消费者退出
结论:通过关闭channel或context取消信号协调退出。要点:单生产者时生产完关闭channel,消费者用for v:=range ch读至关闭后退出;多生产者需用WaitGroup等待全部完成再由独立协程关闭;需…
🎤 Momenta
中等Go
使用channel如何避免阻塞主协程
结论:在Go中避免channel阻塞主协程的关键是使用缓冲channel、select多路复用、启动独立goroutine接收以及超时机制。核心要点:1.无缓冲channel的发送和接收必须配对,否则阻塞;使用make(…
🎤 沥泉科技
中等Go
先判断channel是否阻塞,再写入数据
结论:Go中不能直接判断channel是否阻塞,但可通过select语句实现非阻塞写入。核心要点:1. channel写入阻塞条件:无缓冲channel无接收者,或有缓冲channel缓冲区满;2. 非阻塞写入使用sel…
🎤 深信服
中等Go
携程在哪些情况下会被剥离 M?
结论:Go中协程(G)不直接绑M,但G阻塞会导致P与M剥离。情况:1. G执行阻塞系统调用(文件读写、sleep)时M陷内核,P解绑M转去其他M跑新G;2. G通道阻塞或锁等待,G离运行队列,M跑其他G;3. 抢占:G运…
🎤 网易
中等Go
怎么用chann来通信,6个channel通信的典型案例
结论:Go中channel用于goroutine通信,通过make创建,<-收发。6典型:同步等待(无缓冲channel阻塞主协程至子协程发done);数据传递(ch<-data与<-ch);扇出扇入(多worker读同…
🎤 滴滴
中等Go
Channel的底层结构与数据的收发流程
结论:Go channel底层是hchan结构体,收发流程依赖缓冲区和等待队列。核心结构:hchan含buf环形队列(dataqsiz大小)、sendx/recvx索引、recvq/sendq等待队列(sudog链表)、…
🎤 百度
中等Go
channel的用途和使用上要注意的4个点以及底层结构
结论:channel用于goroutine通信与同步;使用注意4点:1.向已关闭channel写会panic;2.从关闭channel读立即返回零值且ok=false;3.nil channel读写永久阻塞,常用于sel…
🎤 百度
中等Go
channel底层结构分析
结论:channel底层是runtime.hchan结构体。关键字段:1.qcount当前元素数;2.dataqsiz缓冲区容量,buf指向环形数组;3.sendx/recvx读写索引;4.recvq/sendq为等待的…
🎤 京东
中等Go
defer的作用与底层原理
结论:defer使函数延迟到当前函数返回前执行,用于资源清理和流程控制;底层由编译器插入runtime调用并维护_defer链表。作用:确保资源释放(如文件、锁)、panic恢复、代码逻辑分离。底层:Go编译器在函数调用…
🎤 字节跳动
题目整理自公开面经,答案由校招宝自研生成,仅供参考