go面试题总结

go面试题总结,第1张


1. tcp/ip3次握手和4次挥手

3次握手需要客户端确认,因为服务器端不确定对方是否收到,所以客户端必须发送ack确认一下

为什么需要4次挥手,客户端发起fin+ack到服务器,服务端发起ack,同时再发起fin+ack最终确认,客户端最后在ack回复。因为可能还存在未发送完毕的数据

2.堆是动态的,大小动态变化的,由程序管理。 栈是静态的,不同函数之间的栈线程不能共享,栈是先进后出,由Cpu管理

3.什么时候会造成go协成阻塞?管道满了 还写  空了  还读,空查询会导致阻塞

4.一个用户线程通过协程调度器绑定多个协程,每个协程最高 *** 作10毫秒,另一个协程会去抢占这个CPU去执行,context优雅的通知go协成退出

5.解决数据库缓存双写不一致的方案是加锁,redis的分布式锁,分布式锁把并行的 *** 作变成串行化了读写锁,读可以多个执行,写和读是互斥的,读可以并行执行,分布式锁Setnx解决多个大V同时推多个商品的问题,突发性的热点数据,使用双重监测锁,缓冲穿透,解决返回一个空值,或者空串,数组传递是值传递,切片是引用指针传递,通道就是队列,先进先出

6.如何保证消息消费有序性?让我们的消息投递放到同一个分区里面,最终被同一个消费者消费

如何解决消息堆积? 做成集群的形式进行消费,每一个消费者批量形式来消费

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/990895.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存