📡
首页
🏢
企业
📚
考试
📖
攻略
📰
日报
👤
我的
校招宝-应届生校园招聘情报站
聚合秋招/春招/实习/提前批
面试真题
技术面 + 非技术面高频问题 · 企业真题标题 + 校招宝自研参考答案
面试真题
2508 道
技术岗
641 道
非技术岗
1867 道
当前筛选
82 道
按赛道
技术岗以技术方向细分;非技术岗按「结构化 / 半结构化 / 无领导 / HR / 职能」细分
全部赛道(2508)
技术岗(641)
非技术岗(1867)
按方向/形式
点选即筛,再点「全部」还原
全部(2508)
求职动机(1737)
数据库(114)
C++(85)
Go(82)
Java(69)
网络(65)
操作系统(54)
后端(39)
前端(37)
算法(31)
银行面试(31)
结构化面试(30)
HR面试(27)
运维(22)
其他(17)
行为面试(14)
AI算法(13)
半结构化面试(12)
情景应变(10)
大数据(6)
测试(4)
无领导小组讨论(3)
自我介绍(3)
产品(2)
Python(1)
按难度
简单(26)
中等(55)
困难(1)
按企业
点选查看该公司全部题目
百度(161)
腾讯(139)
通用(87)
阿里巴巴(62)
网易(55)
京东(49)
中国储备粮管理集团有限公司(43)
字节跳动(34)
大华股份(11)
美团(10)
Momenta(8)
小鹏汽车(8)
深信服(8)
Shopee(7)
小米(7)
拼多多(7)
滴滴(7)
虎牙(6)
读书郎(6)
金山(6)
小红书(5)
快手(5)
搜狐(5)
闪送(5)
分类:Go
82 道 · 点击进入查看参考答案
简单
Go
map 基本原理
结论:Go map是基于哈希表的引用类型,提供平均O(1)读写。核心要点:1.底层为哈希表,key经哈希函数映射到桶(bucket);2.冲突解决用桶内8槽+溢出桶链;3.扩容采用渐进式rehash,避免停顿;4.key…
🎤 小米
简单
Go
map、slice未初始化操作会怎样,发生panic应该怎么办
结论:未初始化map为nil,直接赋值panic;未初始化slice为nil,append安全但索引访问panic。要点:1.nil map写入报'assignment to entry in nil map',须用ma…
🎤 闪送
简单
Go
map与切片哪个是线程安全的
结论:Go语言的map和slice均非线程安全,并发读写会导致panic或数据错乱。原理:map底层无锁,并发写触发runtime抛出'concurrent map writes'崩溃;slice底层是结构体含指针/长度…
🎤 百度
简单
Go
String和byte切片的区别
结论:Go中string是不可变字节序列,byte切片是可变字节数组。核心区别:1.可变性:string底层结构含指针和长度,内容只读,修改编译报错;[]byte可修改元素如b[0]='x';2.内存:string赋值或…
🎤 金山
简单
Go
关闭的channel数据的发送与接收
结论:向已关闭channel发送数据会引发panic;从已关闭channel接收,若缓冲区有数据则先读出,随后返回零值且ok=false;重复关闭同样panic。原理:channel关闭后运行时禁止发送,接收通过hcha…
🎤 京东
简单
Go
Mutex是乐观锁还是悲观锁,乐观锁和悲观锁的区别
结论:Mutex 是悲观锁。悲观锁与乐观锁核心区别在冲突假设与处理方式。悲观锁认为并发冲突频繁,操作前先加锁独占资源,如 Mutex、数据库行锁,保证安全但开销大、易阻塞;乐观锁认为冲突少,不加锁,通过版本号或 CAS …
🎤 深信服
中等
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运…
🎤 网易
‹ 上一页
第 2 / 5 页
下一页 ›
题目整理自公开面经,答案由校招宝自研生成,仅供参考
首页
企业
考试
攻略
日报
我的