go问题
1. 基础篇
1. 如何高效的拼接字符串
var str strings.Builder for i := 0; i < 1000; i++ { str.WriteString("a") } fmt.Println(str.String())
2. Go 支持默认参数或可选参数吗
3. defer 的执行顺序
4. Go 语言 tag 的用处
package main import "fmt" import "encoding/json" type Stu struct { Name string `json:"stu_name"` ID string `json:"stu_id"` Age int `json:"-"` } func main() { buf, _ := json.Marshal(Stu{"Tom", "t001", 18}) fmt.Printf("%s\n", buf) }
5. 如何判断 2 个字符串切片(slice) 是相等的
6. 字符串打印时,%v 和 %+v 的区别
7. Go 语言中如何表示枚举值(enums)
8. 空 struct{} 的用途
9. map多键索引
2. 进阶(实现原理)
1. init() 函数是什么时候执行的
2. Go 语言的局部变量分配在栈上还是堆上(逃逸分析)
3. 2 个 interface 可以比较吗
4. 接口与非接口的比较
5. Go 语言GC(垃圾回收)的工作原理
6. 函数返回局部变量的指针是否安全
7. 非接口的任意类型 T都能够调用 *T 的方法吗?反过来呢?
8. go 在defer中修改return的内容会生效吗
9. append扩容
10. 协程:
11. Go语言逻辑处理器(GPM)
3. 并发
1. 无缓冲的 channel 和 有缓冲的 channel
2. 什么是协程泄露(Goroutine Leak)
3. Go 限制运行时操作系统线程的数量
最后更新于