面试题
Google工程师和Go语言布道者Valentin Deleplace会不定期分享一些Go语言的趣味题目。
我选取了最近的几道题目,给大家春节加加餐。
题目1:
// quiz0.go
package main
import "fmt"
func main()
s := []string{"a", "b", "c"}
copy(s[1:], s)
fmt.Println(s)
}
-
A: [a a a]
-
B: [a a b]
-
C: [a a b c]
-
D: [b c c]
-
E: panic
这道题主要考察Go语言里对切片slice使用copy函数的注意事项。
题目2:
// quiz1.go
package main
import "fmt"
func main() {
a := make([]int, 20)
b := a[18:]
b = append(b, 2022)
fmt.Println(len(b), cap(b))
}
-
A: 1 2
-
B: 3 4
-
C: 3 33
-
D: 3 40
这道题主要考察以下Go语言里对切片slice使用冒号:截取操作的底层机制以及slice的扩容原理。
题目3:
// quiz2.go
package main
import "fmt"
func main() {
c := make(chan int, 1)
c <- 1
close(c)
close(c)
fmt.Println("OK")
}
-
A: 死锁
-
B: panic
-
C: 打印"OK"
-
D: 编译报错
这道题主要考察以下Go语言里管道channel的注意事项。
解析
这几道题对于看过我写的Go面试系列文章的同学来说,应该非常简单,可以给本人vx公众号发送消息2022获取答案。
对答案有疑惑的可以看看我之前的2篇Go面试题解析:
春节加餐
开源地址
文章和示例代码开源地址在GitHub: github.com/jincheng9/g…
公众号:coding进阶。关注公众号可以获取最新Go面试题和技术栈。
个人网站:jincheng9.github.io/