查看完整目录 -->《Go 语言面试题 100 讲》 协程泄露是指,在程序运行过程中,有一些协程由于某些原因,无法正常退出。 协程的运行是需要占用内存和 CPU 时间的,一旦这种协程越来越多,会导致内存无端被浪费...
Golang 面试题
Go 语言面试题 100 讲之 036篇:Go 中哪些动作会触发 runtime 调度?
查看完整目录 -->《Go 语言面试题 100 讲》 goroutine 在遇到哪些情况会触发 runtime 的调度器去调度呢? 第一种:系统调用 SysCall 当你在 goroutine 进行一些 sleep 休眠、读取磁盘或者发送网络请求时,其...
Go 语言面试题 100 讲之 035篇:GMP 偷取 G 为什么不需要加锁?
查看完整目录 -->《Go 语言面试题 100 讲》 在之前的文章中,想必你已经知道了 GMP 模型的工作原理,其中有一个非常重要的问题,这个问题非常的细节,但非常值得拿出来讲一下。 P 从全局队列里取 G 的时候,...
Go 语言面试题 100 讲之 034篇:Go 是值传递,还是引用传递、指针传递?
查看完整目录 -->《Go 语言面试题 100 讲》 Golang中函数的参数为切片时是传引用还是传值? 对于这个问题,可能会有很多认为是传引用,就比如下面这段代码 func foo(s []int) { s[0] = 666 } func mai...
Go 语言面试题 100 讲之 033篇:引用类型与指针,有什么不同?
查看完整目录 -->《Go 语言面试题 100 讲》 切片是一个引用类型,将它作为参数传入函数后,你在函数里对数据作变更是会实时反映到实参切片的。 func foo(s []int) { s[0] = 666 } func main() { sl...
Go 语言面试题 100 讲之 032 篇:数组对比切片有哪些优势?
查看完整目录 -->《Go 语言面试题 100 讲》 1. 编译检查越界 由于数组在声明后,长度就是固定的,因此在编译的时候编译器可以检查在索引取值的时候,是否有越界 func main() { array := [2]int{} ar...
Go 语言面试题 100 讲之 031篇:Go 语言中 hot path 有什么用呢?
查看完整目录 -->《Go 语言面试题 100 讲》 hot path ,热点路径,顾名思义,是你的程序中那些会频繁执行到的代码。 对于这些代码,由于执行次数非常多,意味着只要有一点设计或编码问题,影响就会被不断放大...
Go 语言面试题 100 讲之 030篇:为什么传参使用切片而不使用数组?
查看完整目录 -->《Go 语言面试题 100 讲》 Go里面的数组是值类型,切片是引用类型。 值类型的对象在做为实参传给函数时,形参是实参的另外拷贝的一份数据,对形参的修改不会影响函数外实参的值。 因此在如...
Go 语言面试题 100 讲之 029篇:内存对齐、内存布局是怎么回事?
查看完整目录 -->《Go 语言面试题 100 讲》 字长(word size) 字长(word size),指的是 CPU 一次可以访问数据的最大长度: 对于 32 位的 cpu 来说:word size 为 2^32,即 4 byte 对于 32 位的 cpu 来说...
Go 语言面试题 100 讲之 028篇:有类型常量和无类型常量的区别?
查看完整目录 -->《Go 语言面试题 100 讲》 在 Go 语言中,常量分为有类型常量和无类型常量。 // 有类型常量 const VERSION string = "v1.0.0" // 无类型常量 const RELEASE = 3 那么他们有什么区别呢? ...