50K Gopher 的面試題是什麼樣的?
早上羣友們瘋傳一份 Go 面試題,分享給大家。
-
項目中用到的鎖
-
介紹一下線程安全的共享內存方式
-
介紹一下 goroutine
4.goroutine 的自旋佔用資源如何解決, gmp
- 介紹 Linux 系統信號
6.goroutine 搶佔時機, gc 棧掃描
7.Gc 觸發時機
-
是否瞭解其他 gc 機制
-
內存管理方式
10.Channel 分配在堆上還是在棧上?哪些對象分配在堆上?哪些對象分配在棧上?
-
代碼效率分析,考慮局部性原理
-
多核 CPU 下,cache 如何保持一致,不衝突
13.uint 類型溢出
-
聊聊 rune 類型
-
介紹一下 channel,有緩衝和無緩衝的區別
16.channel 是否線程安全
- 介紹一下 Mutex 的實現, 是悲觀鎖還是樂觀鎖
18.Mutex 幾種模式?
19.Muxtez 可以做自旋鎖?
-
介紹一下 RWMutex
-
介紹一下大對象和小對象,爲什麼小對象多了會造成 gc 壓力?
-
介紹項目中遇到的 oop 情況
-
介紹項目中遇到的坑
-
如果指定指令執行的順序
-
什麼是寫屏障、混合寫屏障,如何實現?
26.gc 的 stw 是怎麼回事
-
協程之間是怎麼調度的
-
簡單聊聊內存逃逸
-
爲 sync.WaitGroup 中 Wait 函數支持 WaitTimeout 功能.
-
字符串轉成 byte 數組,會發生內存拷貝嗎?
31.http 包的內存泄漏
32.Goroutine 調度策略
-
對已經關閉的的 chan 進行讀寫,會怎麼樣?爲什麼?
-
實現阻塞讀的併發安全 Map
-
什麼是 goroutine leak?
36.data race 問題怎麼解決?能不能不加鎖解決這個問題?
37.epoll 原理
38.etcd 怎麼實現分佈式鎖?
- 滑動窗口的概念以及應用?
40.grpc 內部原理是什麼?
41.http2 的特點是什麼, 與 http1.1 的對比。
42.time.Now 有幾次系統調用?如何優化
-
空 struct{} 是否使用過?會在什麼情況下使用,舉例說明一下。
-
聊聊 runtime
-
介紹下你平時都是怎麼調試 bug 以及性能問題的?
-
通過通信來共享內存,而不是通過共享內存而通信,怎麼理解這句話,如何處理共享變量?
47.chan 比 mutex 更輕麼?還有更輕量的方法麼?
- 什麼時候用 chan 不如 mutex 效率高?
最後,你覺得值 50K 嘛,歡迎留言討論。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/BXazVYFpDWKKQj9taRNc_g