Golang面试题合集

Golang3周前更新 Gang
95 00
Golang面试题合集

 

一、语法基础

  1. main 函数的底层执行流程是什么?

  2. nil 值可以赋值给哪些类型?

  3.  rune 类型是什么??与 byte 的区别?

  4. bool 类型底层表示是什么?

  5. break 和 continue 如何在嵌套循环中使用?

  6. 数组如何传递?值传递会带来什么问题?

  7. if 语句支持初始化语句吗?作用域如何?

  8. 零值是什么?

  9. var、:= 和 const 的使用区别是什么?

  10. 指针类型如何工作?与 C 的指针有何不同?

  11. type 关键字如何定义类型?类型别名和类型定义的区别?

  12. recover 函数只能在 defer 中生效的原因是什么?

  13. interface 赋值时会发生什么?零值接口的行为是什么?

  14. slice append 操作如何触发扩容?扩容的内存分配策略是什么?

  15. defer 在循环中的执行顺序如何?可能导致的陷阱问题?

  16. 标签(label)和 goto 语句底层如何实现?

  17. switch 语句与 if-else 的底层区别?fallthrough 的作用是什么?

  18. range 循环中如何避免值拷贝的开销?

  19. const 常量如何定义?

  20. map 是如何初始化的?为什么未初始化的 map 是 nil?

  21. 方法接收者(receiver)是指针还是值类型?如何选择?

  22. struct 嵌入(embedding)如何实现方法继承?

  23. chan 关闭后会发生什么?如何检测 channel 已关闭?

  24. error 接口如何实现?如何自定义错误类型?

  25. 切片和数组底层有何区别?切片的 header 结构是什么?

  26. make 和 new 函数底层有何区别?如何选择使用?

  27. unsafe 包如何绕过类型安全?常见使用场景是什么?

  28. 类型断言和类型开关(type switch)底层如何实现?

  29. goroutine 栈是如何动态增长和收缩的?

  30. for-range 循环如何处理切片和 map?可能导致的性能问题是什么?

  31. iota 机制如何工作?底层如何实现常量递增?

  32. panic 和 recover 底层实现是什么?如何正确使用?

  33. string 类型底层结构是什么?与 []byte 的转换成本有多高?

  34. runtime 调度器如何处理系统调用阻塞?

  35. 闭包(closure)如何捕获变量?可能导致的内存泄漏问题是什么?

  36. runtime.Gosched() 函数作用是什么?如何影响调度?

  37. atomic 包如何实现无锁操作?与 Mutex 相比的优缺点?

  38. select 语句如何选择 channel 操作?底层实现是什么?

  39. context 包底层如何实现取消机制?

  40. sync.Mutex 和 sync.RWMutex 底层实现有何区别?

  41. interface 底层数据结构是什么?空接口和非空接口的区别?

  42. defer 底层实现原理是什么?如何处理多个 defer 的执行顺序?

  43. map 底层实现是什么?如何处理哈希冲突?

  44. 切片(slice)扩容机制是什么?如何优化切片性能?

  45. runtime 包如何实现 goroutine 的创建和销毁?

  46. 内存模型中的 happens-before 关系,如何保证并发安全?

  47. channel 底层实现原理是什么?如何实现无缓冲和有缓冲 channel?

  48. 如何分析 Go 程序的内存分配和逃逸分析?逃逸分析对性能的影响是什么?

  49. Go 的垃圾回收器是如何工作的?三色标记算法的核心原理是什么?

  50. 解释 Go 的 GMP 调度模型,goroutine 如何被调度到线程上?

© 版权声明

相关文章

没有相关内容!

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...