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.如何保证消息消费有序性?让我们的消息投递放到同一个分区里面,最终被同一个消费者消费
如何解决消息堆积? 做成集群的形式进行消费,每一个消费者批量形式来消费
标签:总结,面试题,协程,多个,ack,go,分布式,客户端 From: https://blog.51cto.com/u_15902893/5912431