以下是一些常见的Golang面试问题和答案,供参考:
什么是 Goroutine?它与线程有什么不同?
- Goroutine 是 Go 语言中轻量级的执行单元,由Go运行时管理。相比于操作系统线程,Goroutine 的创建和销毁开销较小,并且可以高效地利用多核处理器。
Golang 中的垃圾回收机制是如何工作的?
- Golang 使用了标记-清除(mark and sweep)的垃圾回收算法。当一个对象不再被引用时,GC会将其标记为可回收,在适当的时间进行内存清理。
请解释 defer 关键字在 Golang 中的作用。
- defer 关键字用于推迟函数或方法的执行,即使在遇到错误或返回前也会执行。它通常用于资源释放、文件关闭等操作。
Golang 中的接口和结构体有什么区别?
- 结构体(struct)是一种自定义数据类型,用于封装多个字段来表示复杂数据结构。接口(interface)则定义了一组方法签名,没有实现代码。结构体可以实现接口来满足接口约定。
什么是并发与并行,在 Golang 中如何实现并发?
- 并发指同时处理多个任务,并行指同时执行多个任务。Golang 通过 Goroutine 和 Channel 实现并发编程,使用
go关键字创建 Goroutine,通过 Channel 进行 Goroutine 间的通信和同步。
- 并发指同时处理多个任务,并行指同时执行多个任务。Golang 通过 Goroutine 和 Channel 实现并发编程,使用
Golang 中的 Map 是线程安全的吗?
- 不是。Golang 的内置 Map 类型不是线程安全的,如果在并发环境下需要保证线程安全,可以使用 sync 包提供的 Mutex 或 RWMutex 来进行读写操作的同步。
Golang 中 defer 函数调用的执行顺序是怎样的?
- defer 函数调用按照”后进先出”(LIFO)的顺序执行,即最后一个 defer 语句会最先执行。
这只是一部分常见问题和答案,在面试中还可能涉及更多方面,请根据实际需求做更具体准备。
内容由零声教学AI助手提供,问题来源于学员提问




