面试真题

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

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

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

按难度

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

分类:Go82 道 · 点击进入查看参考答案

中等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编译器在函数调用…
🎤 字节跳动
中等Go
for range中赋值的变量是指向临时变量还是真实的地址
结论:Go中for range遍历时,循环变量是复用的临时变量,取其地址得到的是同一地址,指向每次迭代赋值的临时变量,并非每个元素的真实独立地址。核心要点:for i,v := range slice { } 中v是每次…
🎤 深信服
中等Go
gin框架如何使用swagger实现接口文档
结论:在Gin中使用Swagger需借助swaggo工具链,通过代码注释生成OpenAPI文档并暴露UI。核心步骤:1. 安装swag cli及gin-swagger、swagger-files库;2. 在main.go…
🎤 沥泉科技
中等Go
Go 泛型
结论:Go自1.18起支持泛型,通过类型参数实现编译期多态。核心要点:使用[type T Constraint]语法定义类型参数;约束由接口描述,如comparable或自定义接口;泛型函数/结构体可安全操作多种类型,避…
🎤 百度
中等Go
Go 最新特性
结论:近年Go重要特性包括泛型(1.18)、模糊测试(1.18)、工作区(1.18)、loopvar每轮新变量(1.22)、内置clear/min/max(1.21)、结构化日志slog(1.21)等。核心要点:泛型提升…
🎤 百度
中等Go
Go channel
结论:channel是Go并发通信原语,基于CSP模型,用于goroutine间安全传递数据。核心要点:hchan结构体含缓冲队列、互斥锁、等待队列;无缓冲channel要求收发双方就绪(同步),有缓冲则异步直到满/空;…
🎤 百度
中等Go
Go context
结论:context用于跨goroutine传递取消信号、超时和请求域键值,管理生命周期。核心要点:Context接口含Done()<-chan struct{}、Err()、Deadline()、Value(key);…
🎤 百度
中等Go
Go select
结论:select用于监听多个channel的读写,实现多路复用。核心要点:每个case对应一个通信操作;随机选择可运行case;无default且均阻塞时等待;可配合time.After超时。原理:编译器将select…
🎤 百度
中等Go
go的并发编程如何避免死锁?
结论:避免死锁需确保channel操作有配对、加锁顺序一致、select超时、避免协程泄露。核心要点:1)无缓冲channel读写需另一协程接应;2)多锁按固定顺序获取;3)select加default或time.Aft…
🎤 百度
中等Go
go怎样在并发编程下等待多个协程的结束,Add和wait的底层实现是怎样的
结论:用sync.WaitGroup等待多协程结束,Add增计数,Done减一,Wait阻塞至零。核心要点:内部noCopy、state1含counter、waiter、信号量;Add原子增counter;Done调Ad…
🎤 百度
中等Go
go中协程间通信的方法有哪些
结论:Go协程间通信主要两种方法:使用通道(channel)和共享内存加同步原语。核心要点:1.Channel是Go推荐方式,遵循“通过通信共享内存”,分为无缓冲和有缓冲,可传递数据或同步信号;2.共享内存方式需配合sy…
🎤 字节跳动
中等Go
golang 读写锁的基本原理
结论:sync.RWMutex读写锁允许同时多个读操作或单一写操作,提升读多写少性能。核心要点:内部由写互斥锁和读计数器组成;读锁(RLock)当无写者持锁或写者等待时可直接获取,增加读计数;写锁(Lock)需等待所有读…
🎤 腾讯
中等Go
golang 互斥锁的基本原理
结论:sync.Mutex互斥锁保证同一时刻仅一个goroutine进入临界区。核心要点:基于原子CAS、自旋与信号量休眠实现;有正常和饥饿两种模式。原理:Lock()先尝试原子交换获取锁,失败则自旋少量次数后休眠排队;…
🎤 阿里巴巴
中等Go
Golang 内存逃逸现象是什么
结论:内存逃逸指局部变量本应栈分配,因生命周期超出函数而被编译器分配到堆上。核心要点:Go编译器做静态逃逸分析,若变量在函数返回后仍被引用则逃逸;常见情况:返回变量指针、被闭包捕获、赋值给接口、切片/map动态增长导致底…
🎤 字节跳动
中等Go
golang 切片原理
结论:切片是引用类型,底层为数组的抽象,结构体含指针、长度、容量。核心要点:1.切片头包含ptr指向底层数组,len当前元素数,cap从ptr开始数组总长,cap(s[a:b])=cap(s)-a;2.切片操作s[a:b…
🎤 小米
中等Go
golang channel的底层实现
结论:channel底层是hchan结构体,实现为带锁的环形缓冲队列及等待队列。核心要点:1.hchan含buf(环形队列)、dataqsiz、elemsize、sendx/recvx索引、recvq/sendq等待者链…
🎤 腾讯
题目整理自公开面经,答案由校招宝自研生成,仅供参考