学习笔记day92

一、手撕总结

1.最长上升子序列变体------环形情况

解题思路:复制一份原始数据在数组后面,不能用原来的dp直接解决,而是使用tail记录最长的序列,tail是vector,使用lower_bound

2.人口最多的年份

考察的是差分数组,然后遍历每年的人口,判断最大值

二、八股

1.Redis集群是否可能出现数据丢失,丢失后如何解决?

回答思路,数据丢失可能有两方面,一方面是主从延迟另一方面是在本没有做好持久化;丢失解决方案第一种是等待从节点确认,第二种是使用AOF和RDB持久化,然后刷盘。

2.Redis的常用命令有哪些?

从使用场景记忆,get set key valuedelete、ttl

3.如果任务队列不加锁,应该如何处理?

减少锁竞争的角度是可以增队列,另一种解决思路是原子比较和交互,用一个版本标识判断

4.Redis常见的数据类型和数据结构?

数据类型有String、list、set、zset、hash底层数据结构有SDS、跳表、红黑树、listpack、quicklist

5.红黑树的构建规则以及时间复杂度是多少?

时间复杂度是log n,构建规则主要是从颜色上去考虑,五点,根是黑色、黑红两种颜色、红的子节点不能是红色、nullptr叶子是黑色、每条路径黑色数量相同

三、场景题

1.小项目怎么升级成超大高并发项目?

回答问题的思路是压测和容量测试,(先测试),然后是单机优化比如IO多路复用、线程池,横向扩展,多机器去优化,还有就是数据库层面、redis层面优化,做限流熔断和降级,最后是再测试和验证。

2.如何设计一个kv缓存数据结构,支TTL超时、高并发,高内存空间利用率

使用map,value里包括存储的内容和过期时间,清理可以用小顶堆或者使用惰性删除和定期处理,

这里如果是lfu的,可以使用两个哈希去设计其中一个是记录key到节点指针,一个是记录频率到链表

3.如何对一个海量的流水表做分库分表?

从业务角度去做拆分,拆分成多个多个表,根据哈路由确到分片,要能够保证数据在一起,要在数据过多扩容和迁移

相关推荐
kk_net88991 小时前
FSNotes:macOS 和 iOS 上的开源笔记管理器
笔记·其他·macos·ios
一木 之林13 小时前
Dify学习笔记 03 · RAG检索增强生成:三代范式、评估与落地(第40-45、55-56集)
笔记·小程序·交互·dify
箓维18 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip
二哈赛车手18 小时前
新人笔记---hermes定时功能设计,具体讲解以及可优化点
java·人工智能·笔记·spring·ai·typescript
星恒随风19 小时前
Linux网络编程:应用层协议究竟是什么?从网络计算器到TCP Socket抽象基类完整实现
linux·网络·笔记·tcp/ip
智学AI21 小时前
AI博主写作素材管理方法分享:资料归集、笔记关联与文档归档
人工智能·笔记
叼烟扛炮21 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
weixin_4481199421 小时前
Datawhale Jev Cookbook 202610 笔记5
笔记
一木 之林1 天前
Dify学习笔记 04 · 检索底座:Embedding、Rerank与向量数据库(第46-54集)
笔记·学习·embedding·dify