1.什么是goroutine,他與process, thread有什么區別?
2. 什么是channel,為什么它可以做到線程安全?
3. 了解讀寫鎖嗎,原理是什么樣的,為什么可以做到?
4. 如何用channel實現一個令牌桶?
5. 如何調試一個go程序?
6. 如何寫單元測試和基准測試?
7. goroutine 的調度是怎樣的?
8. golang 的內存回收是如何做到的?
9. cap和len分別獲取的是什么?
10. netgo,cgo有什么區別?
11. 什么是interface?
- uint不能直接相減,結果是負數會變成一個很大的uint,這點對動態語言出身的會可能坑。
- channel一定記得close。
- goroutine記得return或者中斷,不然容易造成goroutine占用大量CPU。
- 從slice創建slice的時候,注意原slice的操作可能導致底層數組變化。
- 如果你要創建一個很長的slice,盡量創建成一個slice里存引用,這樣可以分批釋放,避免gc在低配機器上stop the world
面試的時候盡量了解協程,線程,進程的區別。
明白channel是通過注冊相關goroutine id實現消息通知的。
slice底層是數組,保存了len,capacity和對數組的引用。
如果了解協程的模型,就知道所謂搶占式goroutine調用是什么意思。
盡量了解互斥鎖,讀寫鎖,死鎖等一些數據競爭的概念,debug的時候可能會有用。
盡量了解golang的內存模型,知道多小才是小對象,為什么小對象多了會造成gc壓力。
https://blog.csdn.net/weiyuefei/article/details/77963810
https://blog.csdn.net/u010824081/article/details/78181518
https://blog.csdn.net/yuanqwe123/article/details/81737180
https://blog.csdn.net/Charliewolf/article/details/82720886
100題:
https://blog.csdn.net/itcastcpp/article/details/80462619
https://blog.csdn.net/qq_36431213/article/details/80686436
https://blog.csdn.net/weiyuefei/article/details/78851624
https://blog.csdn.net/smile_YangYue/article/details/81076993
https://blog.csdn.net/fengxiaozhuzhu/article/details/80920282
https://blog.csdn.net/qq_28163175/article/details/75287877