go面试题总结


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.如何保证消息消费有序性?让我们的消息投递放到同一个分区里面,最终被同一个消费者消费

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值