GO面試--【長期更新】

Golang基礎-

1.select是隨機的仍是順序的?golang

答:select會隨機選擇一個可用通道作收發操做

2.Go語言局部變量分配在棧仍是堆?設計模式

答:Go語言**編譯器**會自動決定把一個變量放在棧仍是放在堆,編譯器會作逃逸分析,當發現變量的做用域沒有跑出函數範圍,就能夠在棧上,反之則必須分配在堆。

三、struct能夠比較嗎?數組

答:能夠比較也有不能夠比較的(map func slice)

4.簡述一下golang的協程調度原理?函數

答:M(machine): 表明着真正的執行計算資源,能夠認爲它就是os thread(系統線程)。  
    P(processor): 表示邏輯processor,是線程M的執行的上下文。  
    G(goroutine): 調度系統的最基本單位goroutine,存儲了goroutine的執行stack信息、goroutine狀態以及goroutine的任務函數等。

5.切片和數組有什麼區別?線程

6.new和make有什麼區別?設計

7.GoLang協程的理解?指針

跳躍表在 Redis 的惟一做用, 就是實現有序集數據類型。
跳躍表將指向有序集的 score 值和 member 域的指針做爲元素, 並以 score 值爲索引, 對有序集元素進行排序code

Golang基礎

  1. Golang 中sync包下的內容,使用過哪些內容。
  2. 設計模式中的單例模式,在Golang中有哪些實現的方式
  3. Golang中的鎖,有哪些,基本的API如何使用
  4. 一個鎖,若是沒有調用lock()方法,就直接調用unlock(),會發生什麼。
  5. Golang的協程與傳統的線程,有哪些優點,好處在哪裏,能不能簡述一下。
  6. G P M 的問題,就是協程的調度那塊內容。
相關文章
相關標籤/搜索