Golang面试题整理

以下Golang面试题整理自网络,可能会有重复题目。部分题目笔者面试时有遇到过,这里先给出题目,对应答案可自行搜索。

题目

  1. go的 GPM 调度原理以及过程描述
  2. go struct 能不能比较
  3. go defer 原理及注意事项
  4. select 用于什么
  5. context 包的用途
  6. client 如何实现长连接
  7. 主协程如何等其余协程完再操作
  8. slice、len、cap、共享、扩容
  9. map 如何顺序读取
  10. 实现 set 集合数据结构
  11. 实现消息队列(多生产者/多消费者)
  12. 大文件排序
  13. 基本排序,哪些是稳定的
  14. http get 跟 head 头字段信息
  15. http 401、403 code是什么
  16. http keep-alive字段解释
  17. http 能不能一次连接多次请求,不等后端返回
  18. tcp与udp区别,udp优点,适用场景
  19. time-wait的作用
  20. 数据库如何建索引
  21. 孤儿进程,僵尸进程
  22. 死锁条件,如何避免
  23. linux命令/查看端口占用/cpu负载/内存占用,如何发送信号给一个进程
  24. git文件版本,使用顺序,merge跟rebase
  25. Slice与数组区别,Slice底层结构
  26. 在支付完回调通知时,收到两次通知,怎么防止重复消费
  27. 项目里的消息推送怎么做的
  28. Go的反射包怎么找到对应的方法
  29. Redis基本数据结构
  30. Redis的List用过吗?底层怎么实现的?
  31. Mysql的索引有几种,时间复杂度
  32. InnoDb是表锁还是行锁,为什么
  33. go的channel类型
  34. 退出程序时怎么防止channel没有消费完
  35. 用过什么消息中间件
  36. 有什么问题吗?评价?后面还有面试,后面再问吧
  37. 生产者消费者模式,手写代码
  38. 手写循环队列
  39. 写的循环队列是不是线程安全,不是,怎么保证线程安全
  40. Linux常用命令
  41. TimeWait和CloseWait原因
  42. 线段树了解吗?字典树?
  43. 看过nsq源码吗(Go的消息中间件)
  44. sync.Pool为什么使用,那里面的对象是固定的吗?
  45. go中的 container 包
  46. 证明二叉树的叶子节点跟度数为2的节点的关系
  47. 唯一索引和主键索引
  48. 智能指针
  49. 字符串解析为数字(考虑浮点型)
  50. 单点登录,tcp粘包
  51. 手写洗牌
  52. 处理粘包、断包实现
  53. goroutine调度用了什么系统调用
  54. 进程虚拟空间分布,全局变量放哪里?
  55. 网络编程
  56. 几种基本排序算法说一下,堆的时间复杂度,稳定性,为什么不稳定
  57. topk问题,海量数据topk
  58. 什么是主键
  59. 联合索引和唯一索引
  60. 越多的索引越好吗?建立索引要注意什么?
  61. 进程和线程区别?
  62. 死锁检测以及如何避免?
  63. tcp三次握手过程以及为什么是三次,两次可以吗?为什么?
  64. http / https区别
  65. 状态码401、301、302、201
  66. 数据库隔离级别,提交读会造成什么
  67. goroutine泄漏有没有处理,设置timeout,select加定时器
  68. mysql高可用的方案
  69. 排序算法以及时间复杂度
  70. io模型,同步阻塞,同步非阻塞,异步
  71. cookie和session
  72. 接口kps测试
  73. redis排行榜数据结构(跳跃表),查询时间复杂度
  74. redis分布式,如何减少同步延迟
  75. mysql能实现redis的功能吗
  76. cap理论,举例
  77. LRU算法,LFU
  78. 讲讲怎么理解网络编程
  79. go使用踩过什么坑
  80. go优缺点
  81. go中值传递和引用
  82. MySQL慢查询
  83. 为什么使用pg (postgreSQL)
  84. redis的数据类型
  85. 所有左叶子节点的和
  86. m个n大小的有序数组求并集,求时间复杂度
  87. static关键字,还有其他关键字吗
  88. hash表设计,线程安全?
  89. 线程自己独享什么
  90. select、epoll
  91. 排行榜怎么实现
  92. go的锁如何实现,用了什么cpu指令?
  93. go的runtime如何实现
  94. 看过sql的连接池实现吗
  95. go什么情况下会发生内存泄漏?
  96. 怎么实现协程完美退出?
  97. 简单dp题,n*n矩阵从左上角到右下角有多少种走法(只往下和往右走)
  98. 用channel实现定时器?
  99. go为什么高并发好?讲了go的调度模型
  100. 操作系统内存管理?进程通讯,为什么共享存储区效率最高
  101. 实现一个hashmap,解决hash冲突的方法,解决hash倾斜的方法
  102. 怎么理解go的interface
  103. 100亿个数选top5
  104. 数组和为n的数组对
  105. 最大连续子数组和
  106. redis容灾,备份,扩容
  107. 跳跃表,为什么使用跳跃表而不使用红黑树
  108. 输入url后发生了什么
  109. tcp怎么找到哪个套接字
  110. ipc方式,共享存储区原理
  111. 进程虚拟空间布局
  112. 进程状态转换
  113. 线程的栈在哪里分配
  114. 多个线程读,一个线程写一个int32会不会有问题,int64呢
  115. 判断二叉树是否为满二叉树
  116. 一个字符串大整数,移动字符求比它大的数中最小的
  117. 点赞系统设计
  118. Redis内存淘汰
  119. sync.Map实现原理
  120. 半连接队列与全连接队列
  121. docker原理、容器与镜像的区别
  122. docker隔离原理
  123. kafka架构以及原理
  124. kafka怎么保证数据不会丢失?
  125. kafka怎么保证数据不会重复被消费?
  126. 服务器中出现过多的time_wait,分析原因及怎么解决?