一、手撕
1.滑动窗口实现
通过 queue 实现,队列中存储的都是没有过期的,每次新请求到来就清理队列
知识点 1 lock_guard〈mutex〉lock(mtx)锁的使用
知识点 2 Now 时间的作用,队列中存储的是之前请求的时间,不是具体请求的编号等
整个类包括 limiter,限流数,window size,窗口时长,unordered_map〈string,deque〈long long〉〉requests;
2.算子矩阵乘法
具体的就是活用共享内存,如果不使用共享内存从全局内存移动数据很多都是重复的,使用共享内存就可以复用一些信息
二、
1.url 包括的内容
这个是之前没有了解过的知识点,包括协议,主机,端口,资源路径,参数,这里主机可以是域名也可以是 IP 地址。
2.TCP 三次握手和四次挥手
今天记忆了一下具体的四次挥手的状态,分别是客户端,FIN 发送之后变成 FINWAIT1 然后服务端变成 closewait,客户端收到 ACK 变成 FINWAIT2,然后服务端关闭发送 FIN 变成 LASTACK,然后客户端收到 ACK 变成 TIMEWAIT,然后服务端收到变成 closed,最后 2msl 之后客户端变成 closed。
3.进程通信的内容
通信方式包括消息队列,管道,信号量,信号,共享内存,mmap 内存映射,套接字,写读文件,这里管道的命名管道的概念,因为可能不是总遇到所以不熟练了,匿名管道只能在父子进程之间使用,而命名管道同一主机的进程都可以。
4.拥塞控制的概念和 TCP 的实现
这里拥塞控制是为了发送端压垮网络,包括慢启动和拥塞避免两个阶段,然后在叙述的时候慢启动是每个 ACK 发送窗口增加,拥塞避免是每个往返时延增加,他们增长的速度分别是指数增长和线性增长。
5.页表
页表存在的意义是虚拟地址到物理地址的转换,多级页表可以节省内存空间,下级没有使用的页表可以不存,然后每级页表有特定的含义。
6.TCP 可靠传输机制有哪些
除了常见的超时重传 快速重传,缓存非按序到达,流量控制拥塞控制,还有数据校验,序号和确认号,后边这两个知道,但是没有第一时间想到,是基本的但是也是实现可靠传输的基础,还有就是三次握手建立连接和四次挥手释放连接。
总结:今天理解了怎么矩阵乘法通过共享内存加速,怎么写一个滑动窗口的实现,然后算子开发的面经复习了,包括最大化利用缓存。