go 面試題總結


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

2. 什么是channel,為什么它可以做到線程安全?

3. 了解讀寫鎖嗎,原理是什么樣的,為什么可以做到?

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

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

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

7. goroutine 的調度是怎樣的?

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM