乐趣区

关于golang:Go-Quiz-Google工程师的Go语言面试题

面试题

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 面试题解析:

  • Go Quiz: 从 Go 面试题看 slice 的底层原理和注意事项
  • Go Quiz: 从 Go 面试题看 channel 的注意事项

春节加餐

  • Go Quiz: 从 Go 面试题看 slice 的底层原理和注意事项
  • Go Quiz: 从 Go 面试题搞懂 slice range 遍历的坑
  • Go Quiz: 从 Go 面试题看 channel 的注意事项
  • Go Quiz: 从 Go 面试题看 channel 在 select 场景下的注意事项
  • Go Quiz: 从 Go 面试题看 defer 语义的底层原理和注意事项
  • Go Quiz: 从 Go 面试题看 defer 的注意事项第 2 篇
  • Go Quiz: 从 Go 面试题看 defer 的注意事项第 3 篇
  • Go Quiz: 从 Go 面试题看分号规定和 switch 的注意事项
  • 官网教程:Go 泛型入门
  • 一文读懂 Go 泛型设计和应用场景

开源地址

文章和示例代码开源地址在 GitHub: https://github.com/jincheng9/…

公众号:coding 进阶。关注公众号能够获取最新 Go 面试题和技术栈。

集体网站:https://jincheng9.github.io/

知乎:https://www.zhihu.com/people/…

References

  • https://twitter.com/val_delep…
退出移动版