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

