go 面試題總結

1.什麼是goroutine,他與process, thread有什麼區別?golang

2. 什麼是channel,爲何它能夠作到線程安全?面試

3. 瞭解讀寫鎖嗎,原理是什麼樣的,爲何能夠作到?數組

4. 如何用channel實現一個令牌桶?安全

5. 如何調試一個go程序?tcp

6. 如何寫單元測試和基準測試?單元測試

7. goroutine 的調度是怎樣的?測試

8. golang 的內存回收是如何作到的?ui

9. cap和len分別獲取的是什麼?.net

10. netgo,cgo有什麼區別?線程

11. 什麼是interface?

  1. uint不能直接相減,結果是負數會變成一個很大的uint,這點對動態語言出身的會可能坑。
  2. channel必定記得close。
  3. goroutine記得return或者中斷,否則容易形成goroutine佔用大量CPU。
  4. 從slice建立slice的時候,注意原slice的操做可能致使底層數組變化。
  5. 若是你要建立一個很長的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

相關文章
相關標籤/搜索