基础篇
-
进程、线程、协程的区别和联系 -
进程间的通信方式有哪些? -
如何在运行时控制协程数? -
协程的切换时机有哪些? -
协程是如何使用堆栈的? -
TCP的三次握手,能不能用两次握手或者四次握手? -
TCP的生命周期会经历哪些阶段(过程)? -
网络拥塞了,有哪些解决策略? -
server挂了,发送端会采取哪些动作? -
接收端buffer满了,server会采取哪些动作? -
ip寻址的过程是怎样的? -
手机端app是如何把请求发送到服务端的? -
有哪些需要调整协程数的场景?如何通过调整协程数使得并发效率提升?针对CPU密集型和IO密集型的任务如何调整携程数量? -
二叉搜索树、平衡二叉搜索树有哪些优缺点? -
B、B+树、红黑树的数据结构?有哪些区别?应用场景分别是什么? -
rpc和http协议的区别?rpc如何解决负载均衡问题?微服务之间有哪些通信方式? -
从客户端发起一个api请求后,都发生了哪些事情(各种网络栈和应用栈)? -
客户端和服务端是怎么处理即时消息的?如何发送和接收?
数据库篇
-
mysql的索引使用什么数据结构?为什么? -
什么情况下会出现索引失效? -
有哪些索引优化的方法?如何知道是否命中了索引? -
使用联合索引时,有哪些需要注意的点?(联合索引)select * from t where a>1 and b=2是否失效? -
mysql的主从复制有哪些使用场景?读写分离怎么理解?什么场景使用读写分离?读写分离解决什么场景?读多写少和写多读少的场景分别应该怎么设计数据库?分表写入有什么问题? -
如何解决跨表查询? -
mysql主从同步的过程是怎样的? -
多个进程同时写表,如何保证写入的正确性? -
多个进程同时查询到某条记录不存在时,都进行插入,应该怎么加锁?能利用索引解决吗?效率怎么样?如果能用索引解决,应该怎么加索引? -
varchar和char的区别?varchar(100)是什么意思?varchar(100)和varchar(200)的区别? -
order by和group by和having有哪些区别?使用顺序是什么? -
mysql进行范围查询时,如何能快速定位1-100的记录? -
什么场景适合加索引?什么场景不适合加索引? -
插入数据库时,数据量突增,有哪些解决方案? -
数据库表能够承载的最大数据量?超过了有哪些解决方案? -
MVCC -
redo log,bin log,undo log都是什么?有什么区别?用途? -
分布式事务是什么?应用场景?如何保证数据一致性?
缓存篇
-
读写锁和分布式锁的区别?redis是如何实现分布式锁的? -
redis有哪些数据结构?底层是怎么实现的? -
redis为什么快?使用redis要注意什么问题? -
redis和mysql如何保持数据一致性? -
如何判断redis中的数据是旧数据? -
redis如何实现分布式存储?如何知道是谁抢到了分布式锁? -
什么是redis的cluster?原生的cluster怎么维护节点之间的关系?如何确认某个key在哪个实例上? -
redis的哨兵是什么?机制怎么做的?哨兵自己挂掉怎么办? -
redis的网络模型?redis是单线程还是多线程?为什么使用单线程+多路复用? -
缓存雪崩,缓存击穿,缓存穿透是什么?有哪些解决方案?
消息队列
-
kafka何时会出发rebalance?有哪些分配策略? -
kafka如何进行消息同步? -
kafka消息丢失怎么办?怎样保证消息的可靠性?怎样防止重复消费?消费失败了怎么办?重新消费怎么解决?手动ack和自动ack分别有什么优缺点?自动ack如果物理上消费成功但是逻辑上消费失败? -
你还知道哪些消息队列?分别有哪些优缺点?应用场景是什么?
golang篇
-
golang的优势是什么?go func()执行时,G、M、P分别会发生什么? -
golang的GMP原理 -
golang的gc是怎么样的? -
局部变量和全局变量有哪些区别?分别是怎么存储的? -
golang中new和make的区别? -
defer的执行顺序?defer和return的执行顺序 -
slice如何进行扩容? -
map是否是并发安全的?如何保证map并发安全?golang有没有支持并发安全的map?实现原理是怎样的? -
golang有哪些异常?如何处理? -
recover的作用是什么?怎么使用?如果不recover,发生panic了,会对其他协程造成怎样的影响?panic之后程序是否会退出? -
golang中8核16G的机器,最多能启动多少进程、协程? -
gin框架在得到一个request之后,会做什么?gin如何处理请求的流转?
容器篇
-
k8s是如何把请求发送到pod中的? -
k8s的服务发现是怎么做的? -
k8s有哪些常用的组件?有什么功能?如何做负载均衡的?
算法篇
-
回溯(排列、组合、子集) -
链表(反转、环、合并) -
排序(快排、归并、堆) -
树(遍历) -
字符串(编解码,回文,dp)
其他篇
-
分布式的一致性协议?raft? -
zk的一致性协议如何实现?etcd? -
服务的架构? -
rpc通信的消息格式?protobuffer?rpc长链接如何解决粘包的问题?
原文始发于微信公众号(晴天码字):golang研发岗面经(23年秋)
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/247468.html