50K Gopher 的面試題是什麼樣的?

早上羣友們瘋傳一份 Go 面試題,分享給大家。

  1. 項目中用到的鎖

  2. 介紹一下線程安全的共享內存方式

  3. 介紹一下 goroutine

4.goroutine 的自旋佔用資源如何解決, gmp

  1. 介紹 Linux 系統信號

6.goroutine 搶佔時機, gc 棧掃描

7.Gc 觸發時機

  1. 是否瞭解其他 gc 機制

  2. 內存管理方式

10.Channel 分配在堆上還是在棧上?哪些對象分配在堆上?哪些對象分配在棧上?

  1. 代碼效率分析,考慮局部性原理

  2. 多核 CPU 下,cache 如何保持一致,不衝突

13.uint 類型溢出

  1. 聊聊 rune 類型

  2. 介紹一下 channel,有緩衝和無緩衝的區別

16.channel 是否線程安全

  1. 介紹一下 Mutex 的實現, 是悲觀鎖還是樂觀鎖

18.Mutex 幾種模式?

19.Muxtez 可以做自旋鎖?

  1. 介紹一下 RWMutex

  2. 介紹一下大對象和小對象,爲什麼小對象多了會造成 gc 壓力?

  3. 介紹項目中遇到的 oop 情況

  4. 介紹項目中遇到的坑

  5. 如果指定指令執行的順序

  6. 什麼是寫屏障、混合寫屏障,如何實現?

26.gc 的 stw 是怎麼回事

  1. 協程之間是怎麼調度的

  2. 簡單聊聊內存逃逸

  3. 爲 sync.WaitGroup 中 Wait 函數支持 WaitTimeout 功能.

  4. 字符串轉成 byte 數組,會發生內存拷貝嗎?

31.http 包的內存泄漏

32.Goroutine 調度策略

  1. 對已經關閉的的 chan 進行讀寫,會怎麼樣?爲什麼?

  2. 實現阻塞讀的併發安全 Map

  3. 什麼是 goroutine leak?

36.data race 問題怎麼解決?能不能不加鎖解決這個問題?

37.epoll 原理

38.etcd 怎麼實現分佈式鎖?

  1. 滑動窗口的概念以及應用?

40.grpc 內部原理是什麼?

41.http2 的特點是什麼, 與 http1.1 的對比。

42.time.Now 有幾次系統調用?如何優化

  1. 空 struct{} 是否使用過?會在什麼情況下使用,舉例說明一下。

  2. 聊聊 runtime

  3. 介紹下你平時都是怎麼調試 bug 以及性能問題的?

  4. 通過通信來共享內存,而不是通過共享內存而通信,怎麼理解這句話,如何處理共享變量?

47.chan 比 mutex 更輕麼?還有更輕量的方法麼?

  1. 什麼時候用 chan 不如 mutex 效率高?

最後,你覺得值 50K 嘛,歡迎留言討論。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/BXazVYFpDWKKQj9taRNc_g