2024年 3、4月学习记录

2024年 3、4月学习记录
菠萝少年应有鸿鹄志,当骑骏马塌平川!
3月学习记录
2024-3-7
今日打卡
leetcode练习
背面试题
Redis相关
- Redis的集群模式:主从,哨兵,cluster三种。
- Redis使用惰性删除+定期删除策略配合使用来对过期的key进行删除
- Redis的持久化:aof日志(以追加的方式写入,主要记录的是操作),rdb(对所有键值对的记录),混合模式(aof和rdb两种模式的混合使用)
缓存雪崩:
- 大量数据同时过期
- 均匀设计过期时间
- 互斥锁
- 双key策略
- 后台更新缓存,定时更新,消息队列通知更新。
- Redis故障宕机
- 服务熔断
- 请求限流
- 构建Redis高可用集群。
缓存击穿:
频繁访问的热点数据过期:
- 互斥锁
- 不给热点数据设置过期时间,由后台定期更新缓存
缓存穿透:
访问的数据既不再缓存也不在数据库
- 非法请求的限制。
- 缓存空值或默认值。
- 使用布隆过滤器快速判断数据是否存在。
Redis的数据结构
Redis提供了常见的5种数据结构
字符串(string),哈希(hash),列表(list),集合(Set),有序集合(ZSet)
● String 类型的应用场景:缓存对象、常规计数、分布式锁、共享 session 信息等。
● List 类型的应用场景:消息队列(但是有两个问题:1. 生产者需要自行实现全局唯一 ID;2. 不能以消费组形式消费数据)等。
● Hash 类型:缓存对象、购物车等。
● Set 类型:聚合计算(并集、交集、差集)场景,比如点赞、共同关注、抽奖活动等。
● Zset 类型:排序场景,比如排行榜、电话和姓名排序等。
● BitMap(2.2 版新增):二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等;
● HyperLogLog(2.8 版新增):海量数据基数统计的场景,比如百万级网页 UV 计数等;
● GEO(3.2 版新增):存储地理位置信息的场景,比如滴滴叫车;
● Stream(5.0 版新增):消息队列,相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据
学习Redis如何实现延迟队列.
采用zset来实现
Kafka面试题
Kafka的设计:
kafka是将消息以 topic 为单位归纳,发布消息的程序成为 Producer ,消费者的程序称为 Consumer
Kafka是以集群的方式运行的,可以由一个或多个服务组成,每个服务叫做 Broker, Producer通过网络将消息发送到 KafKa集群,集群向消费者提供消息,broker在中间起到一个代理保存消息的中间站。
2024-3-8
今日打卡
面试题
Redis
- Redis实现分布式锁:
- 1.使用set nx 命令,(解锁过程借助LUA脚本,解锁设计2部分,一部分是判断是否是自己的锁,另一部分就是删除锁操作,因为有2个操作,要保证一致性,所以采用LUA脚本来实现);
- 2.RedLock(满足:一半以上结点响应,且响应时间小于设置的操作时间)。
敲代码:
完成12306模拟项目,用户模块部分接口的测试。
查看了基于asynq的定时任务模块,发现,好像火车时间没有改,所以查不出数据,哈哈哈哈。等后面写完了,再更新一下数据看看。
做题:
- 222. 完全二叉树的节点个数
- 110. 平衡二叉树
- 404. 左叶子之和
- 257. 二叉树的所有路径
- 513. 找树左下角的值
- 112. 路径总和
- 113. 路径总和 II
- 797. 所有可能的路径
学习图相关
dfs和bfs,了解升读优先搜索和广度优先搜索。
dfs是可一个方向去搜,不到黄河不回头,直到遇到绝境了,搜不下去了,再换方向(换方向的过程就涉及到了回溯)。
bfs是先把本节点所连接的所有节点遍历一遍,走到下一个节点的时候,再把连接节点的所有节点遍历一遍,搜索方向更像是广度,四面八方的搜索过程。
2024-3-9
刷题:
算法学习:
学习了DFS和BFS
学习并查集算法
面试题:
Redis
- 五种常见的Redis集合的实现
计网学习:
- HTTPS,HTTP的握手过程
准备重新搭建自己的博客。
2024-3-10
参加了leetcode第 388 场周赛
A了2道题跑路,呜呜呜
刷题leetcode hot 100
面试题:
- HTTP的RSA握手过程
- 了解了一下HTTP/1.1,HTTP/2,HTTP/3
- HTTP/3 的传输层采用的是UDP,通过QUIC协议 实现了 类似 TCP的可靠性传输
- 了解IP协议相关技术:DNS,NAT,DHCP,ICMP
呜呜呜,继续修改我的破博客.菜弄到 Twikoo 的评论部分,呜呜呜。
2024-3-11
为面试做准备,背面试:
了解了一些限流算法:
- 固定窗口算法:设置固定时间内,处理请求的定值
- 滑动窗口算法:滑动窗口计数器是通过窗口再细分,并且按照时间滑动。避免了双倍请求突发
- 漏桶算法:
- 令牌桶算法:
了解了一些常见的负载均很该算法:
- 轮询
- 加权轮询
- 随机
- 最少连接
- 源IP哈希
- 响应时间
- 加权响应时间
- 一致性哈希
- 动态调整权重
Redis 的缓存
如何避免缓存雪崩?缓存击穿?缓存穿透?
缓存雪崩:
1.把key的过期时间设置均匀;
2.不设置过期时间,我们可以通过后台服务来更新缓存数据,从而避免因为缓存失效造成的缓存雪崩,也可以在一定程度上避免缓存并发问题。
缓存击穿:
如果缓存中的某个热点数据过期了,此时大量的请求访问了该热点数据,就无法从缓存中读取,直接访问数据库,数据库很容易就被高并发的请求冲垮,这就是缓存击穿的问题。
- 互斥锁方案(Redis 中使用 setNX 方法设置一个状态位,表示这是一种锁定状态),保证同一时间只有一个业务线程请求缓存,未能获取互斥锁的请求,要么等待锁释放后重新读取缓存,要么就返回空值或者默认值。
- 不给热点数据设置过期时间,由后台异步更新缓存,或者在热点数据准备要过期前,提前通知后台线程更新缓存以及重新设置过期时间;
缓存穿透:
- 非法请求的限制
- 设置空值或默认值
- 使用布隆过滤器
看了会MYSQL面试题
2024-3-12
今天电脑屏幕坏了,拿去修,没有什么记录。
大概就看了一下面试题
了解了Redis里面DB结构
dict
RedisObj
原来Redis里面的Rehash() 也是采用渐进式的,我之前就看到go里面的hash扩容是渐进式的。
了解了各种数据类型的实现
- string
- list
- hash
- set
- zset
- bitmap
- hyperloglog(这个没看明白)
- geo
- stream
SDS,链表,压缩链表,哈希表,整数集合,跳表,quicklist,listpack
别说,我觉得跳表的设计还蛮厉害的,
2024-3-13
准备字节一面中,下午4点准备一面。加油。
学习打卡:
- 指针在go中的作用:1,引用传递;2.动态内存分配;3.修改函数外部变量;4.数据结构底层操作;5.低级内存操作;6接口实现
做题:
都是回溯算法。dfs的求解过程。
2024-3-14
准备面试题:
- 看了同步/异步,阻塞/非阻塞。(同步,异步其实是接收方返回消息的方式)(阻塞,非阻塞看的是发送方等待的时候的状态)
刷题:
- 236. 二叉树的最近公共祖先
- 39. 组合总和
- 22. 括号生成
- 200. 岛屿数量
- 20. 有效的括号
- 35. 搜索插入位置
- 136. 只出现一次的数字
- 169. 多数元素
- 75. 颜色分类
- 31. 下一个排列
- 287. 寻找重复数(想不到
2024-3-15
起床学习啦!!!
刷题:
- 104. 二叉树的最大深度 (写了一下不采用递归的方式,感觉其实还行,就是使用queue模拟一下就好了)
- 455. 分发饼干
- 55. 跳跃游戏
- 45. 跳跃游戏 II
- 105. 从前序与中序遍历序列构造二叉树
- 437. 路径总和 III
- 215. 数组中的第K个最大元素
- 79. 单词搜索
- 51. N 皇后
leetcode终于300题了。
看面试题
2024-3-16
刷题:
2024-3-17
看面试题:
- 负载均衡算法
刷题:
算法图的遍历
广度优先
深度优先
2024-3-18
刷题:
LeetCode 热题100 复习
面试题:
关于跨域问题和两种请求(简单请求和非简单请求)
2024-3-20
字节二面挂了。
怎么说呢,系统设计的题目,只是简单回答了一下流程,没有从一个系统去思考。
虽然很难过,但是确实还是学到了东西。
2024-3-22
极客兔兔动手写Gee-web完成。
Gee-ORM完成第二天。
继续加油吧。
面经:
- 计算机网络大概看了一下
了解了HTTP1.1中host字段的作用
请求行
请求头部
空行
请求体
同时了解到
301和302的重定向。
2024-3-27
云原生学习
K8S学习
2024-3-28
看了一些华为的面经和小米的面经。
同时开始改了一下博客的主题。
2024-3-29
准备看看华为编程题:
2024-3-30
看看华为编程题:
看一会面经:
- 再看一看Redis主从复制的步骤。(主要从三个方面去回答:1.第一次同步的时候采用全量同步,2.建立连接后会采用长连接传输命令 3.在出现网络故障的时候,采用增量同步,发送offset,告诉主服务器,同步偏移量。)
- 看看哨兵模式
2024-3-31
3月的最后一天!!!
下个月也要加油!!!
今日学习情况:
LeetCode周赛 391场
- 100263. 哈沙德数(完成)
- 100235. 换水问题 II(完成)
- 100266. 交替子数组计数(完成)
- 100240. 最小化曼哈顿距离(没思路,欸嘿
刷题:
4月学习记录
2024-4-1
计划学习 k8s
以前一直想系统把k8s学一遍,励志一个月学完K8s
2024-4-3
刷题,准备华为笔试:
学习微服务的拆分原则:
限流算法:
- 固定窗口限流
- 滑动窗口限流
- 漏桶算法
- 令牌桶算法
2024-4-5
了解了go的指针
学习了go的cancle context
华为笔试刷题:
- 547. 省份数量 (并查集
- 55. 跳跃游戏 (动态规划
- 172. 阶乘后的零
- 231. 2 的幂
- 78. 子集
- 1047. 删除字符串中的所有相邻重复项
2024-4-6
刷题记录:
2024-4-8
开始打卡Leetcode sql 50 题
2024-4-9
Leetcode 每日一题打卡
参加了恒生电子的笔试(笔试还是比较简单的
明天面试恒生电子
还有明天华为笔试
2024-4-10
LeetCode 每日一题打卡
- 1702. 修改后的最大二进制字符串(有点意思
hot 100
恒生电子面试:
感觉还行,面试官还好,问的倒不多,就不赘述了
华为笔试
拿了293分,怎么说呢,第一题什么情况,居然没过。继续努力!!!
2024-4-11
leetcode刷题
好好准备面试题了。
开始刷刷洛谷题单:(好久没写 lc 了)
入门1:
- https://www.luogu.com.cn/problem/B2002
- https://www.luogu.com.cn/problem/B2025
- https://www.luogu.com.cn/problem/P1000
- https://www.luogu.com.cn/problem/P1001
- https://www.luogu.com.cn/problem/B2005
- https://www.luogu.com.cn/problem/B2029
入门一,完成。
2024-4-13
leetcode每日一题
面试题:
os:
- 为什么需要虚拟内存?
刷题:hot 100 完成啦!!!
2024-4-17
好几天没有记录,是由于学校体测摔伤了(呜呜呜
目前hot100 正式完成(上次忘记提交了
每天一个算法:
- 递归
刷题:1600-1700
2024-4-18
背了一会计网面试题(HTTP报文的格式,HTTPS和HTTP,RSA握手)
看了一下os几个面试题,同步,异步,阻塞,非阻塞为什么需要虚拟内存,还有死锁的四个条件(互斥条件,占有且等待,不可强剥夺,循环等待)
Leetcode刷题:
谐云二次面试
一面:30分钟
二面:30分钟
面试的问题都比较基础,这里就不赘述了,还不清楚结果,希望能过吧。(让我拿一个offer吧,想去实习多学点东西
2024-4-19
谐云过了。今天去看了一下,技术栈基本符合我。
准备去锻炼一下自己。加油!!!!
2024-4-20
LeetCode
看会CSAPP(以前看过一点,打算重头看一遍
第一章 ok
算法学习:
dijastra算法,邻接矩阵+邻接表
八股:
- 常见的HTTP状态码
2024-4-21
leetcode周赛
a了两道题,还是得加油。发现自己对于图类的算法不是很熟悉。后面可能加强一下对于图类算法的训练。
看面试题,主要去总结了一下部分回答:
redis:
- redis的数据类型
- redis的常见使用场景
- redis的持久化
- redis缓存相关
- redis分布式锁的实现
- redis的线程模型
加油。
2024-4-22
leetcode:
- 377. 组合总和 Ⅳ(dp或dfs
- 743. 网络延迟时间(dijastra
算法学习:
dijastra模板:
type pair struct { |
学习:
- go语言编译成中间汇编代码:go build -gcflags “-S” main.go
面试题:
- go语言的gc,更加了解了插入屏障和删除屏障,还有混合屏障的作用。
2024-4-23
- 今天来谐云报道了,准备实习了,主要业务是云原生相关的,非常符合我以后的规划,同时也是golang。
- 今天并没有做什么事,就是看了一下k8s的基础组件
2024-4-25-29
- 学习k8s基础知识
- 安装了minikube
- 操作kubectl
- 看官方文档
- 了解kube-poxy的工作机制,利于哦那个防火墙,iptables 转发请求
- 学习client-go操作k8s
- 自定义资源,crd
- 看了一会k8s的面试题,大概了解了一下,就是感觉k8s真的好大哇,功能好多。
其实对于25届的我们来说,战线还是很长的,继续加油,29号晚上还有个笔试。华为那边打电话了,说是5月7,8,9号。
准备5月7号线下去面试。
CS自学指南学习打卡
编程入门
MIT-Missing-Semester
第一节:Course overview + the shell https://missing.csail.mit.edu/2020/course-shell/
第二节:Shell Tools and Scripting https://missing.csail.mit.edu/2020/shell-tools/
第三节 编辑器 (Vim) Editors (Vim) · Missing Semester (mit.edu)