面试题答案
一键面试- 使用对象池(sync.Pool):
- 原理:sync.Pool 是Go语言标准库提供的对象池。它可以缓存暂时不用的对象,避免频繁的内存分配与释放。当需要新对象时,优先从对象池中获取;使用完毕后,将对象放回对象池,供后续使用。这样减少了垃圾回收的压力,提高了内存使用效率。例如在高并发场景下频繁创建与销毁临时对象,使用对象池可以复用这些对象,减少内存分配开销。
- 预先分配切片容量:
- 原理:Go语言中切片在容量不足时会自动扩容,扩容过程涉及内存的重新分配和数据拷贝。通过预先使用
make
函数指定切片的容量,可以避免在元素追加过程中频繁扩容,减少内存分配次数。例如s := make([]int, 0, 100)
,预先分配了可容纳100个int
类型元素的空间,后续追加元素时只要不超过这个容量,就不会触发内存重新分配。
- 原理:Go语言中切片在容量不足时会自动扩容,扩容过程涉及内存的重新分配和数据拷贝。通过预先使用