一些问题
TCP
1、三次握手、四次挥手
2、time_wait的两个作用,time_wait过多怎么处理
防止最后一个ack丢失
防止上一次的socket链接的包的干扰2MSL;
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
3、流量控制:滑动窗口、拥塞控制
4、粘包问题
nagle算法(TCP_NODELAY。没有ACK,或者包达到MSS 1460或者最大窗口的一半)导致的,面向链接,多包组合只有一个消息头。udp为何没有粘包问题:无连接,一对多,skbuff里每个消息都有头。
TCP的一对一和UDP的一对多也说明了为什么前者是面向流协议和后者是数据报的协议。
HTTP
- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
RPC
golang
1、goroutine实现
GPM
2、线程和协程的区别
3、GC
Redis:
0、数据类型
String——字符串
Hash——字典
List——列表
Set——集合
Sorted Set——跳表(实现简单、插入删除不用再平衡、节省空间)
1、如何做到高可用?
2、持久化:RDB和AOF
RDB:save和bgsave (copy on write)
AOF:appendfsync everysec/always 先写入aof_buf,每秒刷一次磁盘,兼顾性能和安全性,最多丢失一秒的数据。
3、缓存穿透
回填空值或者布隆过滤器
4、大key
5、整点密集推送方案
6、分布式锁redlock
设置过期时间、delete的时候要检验值(如uuid)
7、主从模式和sentinel模式和cluster模式
cluster:对每个key计算CRC16值,然后对16384取模
kafka:
1、kafka是如何保证消息的有序性? 局部有序。
一定要全局有序,需要送到同一个partition。发送1条消息的时候,可以指定(topic, partition, key) 3个参数,同一个key发送到同一个partition
2、如何做到exactly once
acks=0, 1, -1
3、发送端幂等设计:0.11版本后添加了producer ID和sequence number<topic, partition>,只能实现session级别的。
zookeeper
0、节点类型
1、zab协议
崩溃恢复
广播协议
2、会话一致性
ES
1、倒排索引
2、大搜索的过程和结果汇总
算法:
1、总结经典DP算法题、动态转移方程,以及文章;
案例设计:
1、定时抢红包
2、定时推送给海量订阅用户新闻
3、定时秒杀
4、高并发下的秒杀--1、高并发问题 2、超买超卖
5、feed流的文章点赞、转发、评论数计数服务(冷数据的文章计数处理、特别是存储SSD);系统通知计数服务;