ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

场景题和计网逐字稿复习笔记

场景题和计网逐字稿复习笔记 1.怎么设计一个分布式限流器使用 Redis采用令牌桶算法在 Redis 中存储桶容量当前 token 数令牌生成速率以及上次更新时间每次有需要访问的时候就使用 lua 脚本判断当前 token 数目如果满足就扣减。2.redis 作为缓存怎么设计从读写策略淘汰策略和异常处理三个角度去考虑。如果读命中就直接返回如果不命中就读数据库内容并更新缓存写策略采用直接写数据库使缓存失效的方法可以采用延迟双删保证一致性。淘汰策略可以使用近似 LRU 算法对于每个记录保存一个增加的数值作为时间容量满之后采样并淘汰数值最小的。要坐缓存穿透 缓存击穿和雪崩三个角度去处理异常缓存穿透是需要记录不存在的值或者使用布隆过滤器解决缓存击穿通过使用互斥锁解决缓存雪崩可以通过多级缓存或者对于过期时间增加随机值解决。3.慢查询如何优化首先开启慢查询日志定位慢速度的 SQL 语句然后使用 explain 查看执行计划判断是否使用了索引索引的行数 类型等。如果没有使用索引没有合适的索引要建合适的索引如果有合适的索引要看是否有索引失效的场景比如没有符合最左前缀匹配原则索引函数 列计算或者隐式类型变换然后去修改避免索引失效。要避免对不要的列的查询避免 select*能用覆盖索引的就不用回表查询。最终通过压测或者查看执行计划验证。八股1.一次 URL 访问的过程是什么首先要对 URL 解析如果不是符合的 url 就直接搜索如果是的话要对域名解析查找本地浏览器的缓存和操作系统缓存是否有对应的 ip 如果不存在则本地域名服务器会依次去询问根域名服务器顶级域名服务器权威域名服务器查找对应的映射最终存储下来。在获得 ip 地址之后通过 tcp 的三次握手建立连接如果是 https 协议还要建立 tls 连接之后客户端发送 http 请求服务器解析并响应对于响应都结果浏览器进行解析并展现给用户。2.TCPUDP 的区别TCP 和 UDP 都是传输层协议TCP是有连接协议在传输数据之前需要三次握手建立连接传输数据之后需要四次挥手释放连接UDP 没有。TCP 是面向字节流的UDP 是面向包的TCP 是可靠的有重传和流量控制拥塞控制机制UDP 没有。粘包和拆包是什么意思怎么解决粘包和拆包是 TCP 协议传输中遇到的问题分别代表多个应用层协议一次被接收和一个信息被分成多次接收解决方法可以在应用层增加信息长度字段使用特殊的字符表示结束或者使用固定长度的信息。3.TCP 连接体现在哪些地方首先是 TCP 传输数据前后的三次握手和四次挥手其次是 TCP 的快速重传和超时重传机制TCP 对于传输有发送序号和确认的机制TCP 有流量控制机制和拥塞控制机制避免数据拥塞或者接收方溢出过多。TCP 会缓存非按序到达的字节流。
返回列表