Go經(jīng)典面試題匯總(填空+判斷)
Golang精編100題
能力模型(測試)
初級primary:
熟悉基本語法,能夠看懂代碼的意圖;
在他人指導(dǎo)下能夠完成用戶故事的開發(fā),編寫的代碼符合CleanCode規(guī)范;
中級intermediate:
能夠獨(dú)立完成用戶故事的開發(fā)和測試;
能夠嗅出代碼的壞味道,并知道如何重構(gòu)達(dá)成目標(biāo);
高級senior:
能夠開發(fā)出高質(zhì)量高性能的代碼;
能夠熟練使用高級特性,開發(fā)編程框架或測試框架;
填空題
1. 【初級】聲明一個整型變量i__________
參考答案:var i int
2. 【初級】聲明一個含有10個元素的整型數(shù)組a__________
參考答案:var a [10]int
3. 【初級】聲明一個整型數(shù)組切片s__________
參考答案:var s []int
4. 【初級】聲明一個整型指針變量p__________
參考答案:var p *int
5. 【初級】聲明一個key為字符串型value為整型的map變量m__________
參考答案:var m map[string]int
6. 【初級】聲明一個入?yún)⒑头祷刂稻鶠檎偷暮瘮?shù)變量f__________
參考答案:var f func(a int) int
7. 【初級】聲明一個只用于讀取int數(shù)據(jù)的單向channel變量ch__________
參考答案:var ch <-chan int
8. 【初級】假設(shè)源文件的命名為slice.go,則測試文件的命名為__________
參考答案:slice_test.go
9. 【初級】 go test要求測試函數(shù)的前綴必須命名為__________
參考答案:Test
10. 【初級】啟動一個goroutine的關(guān)鍵字是__________
參考答案:go
判斷題
1. 【初級】數(shù)組是一個值類型()
參考答案:T
2. 【初級】使用map不需要引入任何庫()
參考答案:T
3. 【中級】內(nèi)置函數(shù)delete可以刪除數(shù)組切片內(nèi)的元素()
參考答案:F
4. 【初級】指針是基礎(chǔ)類型()
參考答案:F
5. 【初級】 interface{}是可以指向任意對象的Any類型()
參考答案:T
6. 【中級】下面關(guān)于文件操作的代碼可能觸發(fā)異常()
file, err := os.Open("test.go") defer file.Close() if err != nil { fmt.Println("open file failed:",err) return } ...
參考答案:T
7. 【初級】 Golang不支持自動垃圾回收()
參考答案:F
8. 【初級】 Golang支持反射,反射最常見的使用場景是做對象的序列化()
參考答案:T
9. 【初級】 Golang可以復(fù)用C/C++的模塊,這個功能叫Cgo()
參考答案:F
10. 【初級】下面代碼中兩個斜點(diǎn)之間的代碼,比如json:"x",作用是X字段在從結(jié)構(gòu)體實(shí)例編碼到JSON數(shù)據(jù)格式的時候,使用x作為名字,這可以看作是一種重命名的方式()
type Position struct { X int `json:"x"` Y int `json:"y"` Z int `json:"z"` }
參考答案:T
11. 【初級】通過成員變量或函數(shù)首字母的大小寫來決定其作用域()
參考答案:T
12. 【初級】對于常量定義zero(const zero = 0.0),zero是浮點(diǎn)型常量()
參考答案:F
13. 【初級】對變量x的取反操作是~x()
參考答案:F
14. 【初級】下面的程序的運(yùn)行結(jié)果是xello()
func main() { str := "hello" str[0] = 'x' fmt.Println(str) }
參考答案:F
15. 【初級】 golang支持goto語句()
參考答案:T
16. 【初級】下面代碼中的指針p為野指針,因?yàn)榉祷氐臈?nèi)存在函數(shù)結(jié)束時會被釋放()
type TimesMatcher struct { base int } func NewTimesMatcher(base int) *TimesMatcher{ return &TimesMatcher{base:base} } func main() { p := NewTimesMatcher(3) ... }
參考答案:F
17. 【初級】匿名函數(shù)可以直接賦值給一個變量或者直接執(zhí)行()
參考答案:T
18. 【初級】如果調(diào)用方調(diào)用了一個具有多返回值的方法,但是卻不想關(guān)心其中的某個返回值,可以簡單地用一個下劃線“_”來跳過這個返回值,該下劃線對應(yīng)的變量叫匿名變量()
參考答案:T
19. 【初級】在函數(shù)的多返回值中,如果有error或bool類型,則一般放在最后一個()
參考答案:T
20. 【初級】錯誤是業(yè)務(wù)過程的一部分,而異常不是()
參考答案:T
21. 【初級】函數(shù)執(zhí)行時,如果由于panic導(dǎo)致了異常,則延遲函數(shù)不會執(zhí)行()
參考答案:F
22. 【中級】當(dāng)程序運(yùn)行時,如果遇到引用空指針、下標(biāo)越界或顯式調(diào)用panic函數(shù)等情況,則先觸發(fā)panic函數(shù)的執(zhí)行,然后調(diào)用延遲函數(shù)。
調(diào)用者繼續(xù)傳遞panic,因此該過程一直在調(diào)用棧中重復(fù)發(fā)生:函數(shù)停止執(zhí)行,調(diào)用延遲執(zhí)行函數(shù)。
如果一路在延遲函數(shù)中沒有recover函數(shù)的調(diào)用,則會到達(dá)該攜程的起點(diǎn),該攜程結(jié)束,然后終止其他所有攜程,其他攜程的終止過程也是重復(fù)發(fā)生:
函數(shù)停止執(zhí)行,調(diào)用延遲執(zhí)行函數(shù)()
參考答案:F
23. 【初級】同級文件的包名不允許有多個()
參考答案:T
24. 【中級】可以給任意類型添加相應(yīng)的方法()
參考答案:F
25. 【初級】 golang雖然沒有顯式的提供繼承語法,但是通過匿名組合實(shí)現(xiàn)了繼承()
參考答案:T
26. 【初級】使用for range迭代map時每次迭代的順序可能不一樣,因?yàn)閙ap的迭代是隨機(jī)的()
參考答案:T
27. 【初級】 switch后面可以不跟表達(dá)式()
參考答案:T
28. 【中級】結(jié)構(gòu)體在序列化時非導(dǎo)出變量(以小寫字母開頭的變量名)不會被encode,因此在decode時這些非導(dǎo)出變量的值為其類型的零值()
參考答案:T
29. 【初級】 golang中沒有構(gòu)造函數(shù)的概念,對象的創(chuàng)建通常交由一個全局的創(chuàng)建函數(shù)來完成,以NewXXX來命名()
參考答案:T
30. 【中級】 channel本身必然是同時支持讀寫的,所以不存在單向channel()
參考答案:F
以上就是Go經(jīng)典面試題匯總(填空+判斷)的詳細(xì)內(nèi)容,更多關(guān)于Go經(jīng)典面試題的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Go項(xiàng)目在linux服務(wù)器的部署詳細(xì)步驟
在今天的軟件開發(fā)中,使用Linux作為操作系統(tǒng)的比例越來越高,而Golang語言則因?yàn)槠涓咝А⒑啙嵑筒l(fā)性能等特點(diǎn),也被越來越多的開發(fā)者所青睞,這篇文章主要給大家介紹了關(guān)于Go項(xiàng)目在linux服務(wù)器的部署詳細(xì)步驟,需要的朋友可以參考下2023-09-09Golang仿ps實(shí)現(xiàn)獲取Linux進(jìn)程信息
這篇文章主要為大家學(xué)習(xí)介紹了Golang如何仿ps實(shí)現(xiàn)獲取Linux進(jìn)程信息,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-07-07goframe重寫FastAdmin后端實(shí)現(xiàn)實(shí)例詳解
這篇文章主要為大家介紹了goframe重寫FastAdmin后端實(shí)現(xiàn)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12