Golang?基礎(chǔ)面試題集錦
背景
在之前的文章中分享了 k8s 相關(guān)的面試題,本文我們重點(diǎn)來(lái)討論和 k8s 密切相關(guān)的 Go 語(yǔ)言面試題。
這幾年隨著云原生的興起,大部分后端開(kāi)發(fā)者,特別是 Java 開(kāi)發(fā)者都或多或少的想學(xué)習(xí)一些 Go 相關(guān)的技能,所以今天分享的內(nèi)容比較初級(jí),適合 Go 語(yǔ)言初學(xué)者。

本文內(nèi)容依然來(lái)自于這個(gè)倉(cāng)庫(kù)
https://github.com/bregman-arie/devops-exercises
以下是具體內(nèi)容:
()的內(nèi)容是我的補(bǔ)充部分。
Go 語(yǔ)言有哪些特點(diǎn)
- Go 是一種強(qiáng)類型靜態(tài)語(yǔ)言,變量的類型必須在聲明的時(shí)候指定(但可以使用類型推導(dǎo)),在運(yùn)行時(shí)不能修改變量類型(與
Python這類動(dòng)態(tài)類型語(yǔ)言不同)。 - 足夠的簡(jiǎn)單,通常一個(gè)周末就能學(xué)會(huì)
- 編譯速度夠快
- 內(nèi)置并發(fā)(相對(duì)于 Java 的并發(fā)來(lái)說(shuō)非常簡(jiǎn)單)
- 內(nèi)置垃圾收集
- 多平臺(tái)支持
- 可以打包到一個(gè)二進(jìn)制文件中,所有運(yùn)行時(shí)需要依賴的庫(kù)都會(huì)被打包進(jìn)這個(gè)二進(jìn)制文件中,非常適合于分發(fā)。
Go 是一種編譯型的靜態(tài)類型語(yǔ)言,正確還是錯(cuò)誤
正確?
為什么有些函數(shù)是以大寫字母開(kāi)頭的
這是因?yàn)?Go 語(yǔ)言中首字母大寫的函數(shù)和變量是可以導(dǎo)出的,也就是可以被其他包所引用;類似于 Java 中的 public 和 private 關(guān)鍵字。
變量和數(shù)據(jù)類型
簡(jiǎn)潔和常規(guī)聲明變量方式
package main
import "fmt"
func main() {
x := 2 // 只能在函數(shù)內(nèi)使用,自動(dòng)類型推導(dǎo)
var y int = 2
fmt.Printf("x: %v. y: %v", x, y)
}正確?還是錯(cuò)誤?
- 可以重復(fù)聲明變量?(強(qiáng)類型語(yǔ)言的特性)
- 變量一旦聲明,就必須使用?(避免聲明無(wú)效變量,增強(qiáng)代碼可讀性)
下面這段代碼的結(jié)果是什么?
package main
import "fmt"
func main() {
var userName
userName = "user"
fmt.Println(userName)
}編譯錯(cuò)誤,變量 userName 沒(méi)有聲明類型;修改為這樣是可以的:
func main() {
var userName string
userName = "user"
fmt.Println(userName)
}var x int = 2 and x := 2 這兩種聲明變量的區(qū)別
結(jié)果上來(lái)說(shuō)是相等的,但 x := 2 只能在函數(shù)體類聲明。
下面這段代碼的結(jié)果是聲明?
package main
import "fmt"
x := 2
func main() {
x = 3
fmt.Println(x)
}編譯錯(cuò)誤,x := 2 不能在函數(shù)體外使用, x = 3 沒(méi)有指定類型,除非使用 x := 3 進(jìn)行類型推導(dǎo)。
如何使用變量聲明塊(至少三個(gè)變量)
package main
import "fmt"
var (
x bool = false
y int = 0
z string = "false"
)
func main() {
fmt.Printf("The type of x: %T. The value of x: %v\n", x, x)
fmt.Printf("The type of y: %T. The value of y: %v\n", y, y)
fmt.Printf("The type of z: %T. The value of z: %v\n", y, y)
}變量塊配合 go fmt 格式化之后的代碼對(duì)齊的非常工整,強(qiáng)迫癥的福音。
Go 的基礎(chǔ)面試題也蠻多的,我們先從基礎(chǔ)的開(kāi)始,今后后繼續(xù)更新相關(guān)面試題,難度也會(huì)逐漸提高,感興趣的朋友請(qǐng)持續(xù)關(guān)注。
以上就是Golang 基礎(chǔ)面試題集錦的詳細(xì)內(nèi)容,更多關(guān)于Golang 基礎(chǔ)面試題的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
一文帶大家了解Go語(yǔ)言中的內(nèi)聯(lián)優(yōu)化
內(nèi)聯(lián)優(yōu)化是一種常見(jiàn)的編譯器優(yōu)化策略,通俗來(lái)講,就是把函數(shù)在它被調(diào)用的地方展開(kāi),這樣可以減少函數(shù)調(diào)用所帶來(lái)的開(kāi)銷,本文主要為大家介紹了Go中內(nèi)聯(lián)優(yōu)化的具體使用,需要的可以參考下2023-05-05
go Antlr重構(gòu)腳本解釋器實(shí)現(xiàn)示例
這篇文章主要為大家介紹了go Antlr重構(gòu)腳本解釋器實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08
golang語(yǔ)言中for循環(huán)語(yǔ)句用法實(shí)例
這篇文章主要介紹了golang語(yǔ)言中for循環(huán)語(yǔ)句用法,實(shí)例分析了for循環(huán)遍歷的使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-01-01
使用golang實(shí)現(xiàn)一個(gè)MapReduce的示例代碼
這篇文章主要給大家介紹了關(guān)于如何使用golang實(shí)現(xiàn)一個(gè)MapReduce,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-09-09
Golang Gin框架實(shí)現(xiàn)文件下載功能的示例代碼
本文主要介紹了Golang Gin框架實(shí)現(xiàn)文件下載功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
一文詳解Golang中字符串的常見(jiàn)錯(cuò)誤
這篇文章主要來(lái)和大家深入討論一下Golang?中的字符串,并查看一些不同的場(chǎng)景,以避免常見(jiàn)錯(cuò)誤,對(duì)大家掌握golang有一定的幫助,需要的可以了解下2023-10-10

