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的任務函數等。
