https://developer.aliyun.com/article/741265?utm_content=g_1000097588
1.select是随机的还是顺序的?
select会随机选择一个可用通道做收发操作
2.Go语言局部变量分配在栈还是堆?
Go语言编译器会自动决定把一个变量放在栈还是放在堆,编译器会做逃逸分析,当发现变量的作用域没有跑出函数范围,就可以在栈上,反之则必须分配在堆。
3.简述一下你对Go垃圾回收机制的理解?
v1.1 STW
v1.3 Mark STW, Sweep 并行
v1.5 三色标记法
v1.8 hybrid write barrier(混合写屏障:优化STW)
4.简述一下golang的协程调度原理?
M(machine): 代表着真正的执行计算资源,可以认为它就是os thread(系统线程)。
P(processor): 表示逻辑processor,是线程M的执行的上下文。
G(goroutine): 调度系统的最基本单位goroutine,存储了goroutine的执行stack信息、goroutine状态以及goroutine的任务函数等。
请发表评论