[Go] Go面试题

时间:2025-02-20 22:14:27

文章目录

  • 一、Go 语言笔试面试题(基础语法)
    • 1. = 和 := 的区别?
    • 2. 指针的作用?
    • 4. Go 有异常类型吗?
    • 5. 什么是协程(Goroutine)
    • 6. 如何高效地拼接字符串
    • 7. 什么是 rune 类型
    • 8. 如何判断 map 中是否包含某个 key ?
    • 9. Go 支持默认参数或可选参数吗?
    • 10. defer 的执行顺序
    • 12. Go 语言 tag 的用处?
    • 13. 如何判断 2 个字符串切片(slice) 是相等的?
    • 14. 字符串打印时,%v 和 %+v 的区别
    • 15. Go 语言中如何表示枚举值(enums)
    • 16. 空 struct{} 的用途
  • 二、Go 语言笔试面试题(实现原理)
    • 1. init() 函数是什么时候执行的?
    • 2. Go 语言的局部变量分配在栈上还是堆上?
    • 3. 2 个 interface 可以比较吗?
    • 4. 两个 nil 可能不相等吗?
    • 5. 简述 Go 语言GC(垃圾回收)的工作原理
    • 6. 函数返回局部变量的指针是否安全?
    • 7. 非接口非接口的任意类型 T() 都能够调用 *T 的方法吗?反过来呢?
  • 三、Go 语言笔试面试题(并发编程)
    • 1. 无缓冲的 channel 和 有缓冲的 channel 的区别?
    • 2. 什么是协程泄露(Goroutine Leak)?
    • 3. Go 可以限制运行时操作系统线程的数量吗?
  • 三、Go 语言笔试面试题(代码输出)
    • 1. 常量与变量
      • 1.1 下列代码的输出是:
      • 1.2 下列代码的输出是:
      • 1.3 下列代码的输出是:
      • 1.4 下列代码的输出是:
    • 2. 作用域
      • 2.1 下列代码的输出是:
    • 3. defer 延迟调用
      • 3.1 下列代码的输出是:
      • 3.2 下列代码的输出是:
      • 3.3 下列代码的输出是:
      • 3.4 下列代码的输出是:

参考链接

一、Go 语言笔试面试题(基础语法)

1. = 和 := 的区别?

答案
:= 声明+赋值
= 仅赋值

var foo int
foo = 10
// 等价于
foo := 10

2. 指针的作用?

答案
指针用来保存变量的地址。
例如

var x =