2021最新腾讯面经分享:知识大纲+技术文档

这篇博客分享了作者在2021年腾讯面试中的经历,涉及到跳表的查找原理,Redis的ZRange实现、持久化策略,以及AOF重写对主线程的影响。此外,还讨论了MySQL的锁机制、事务隔离级别和幻读问题。文章强调了面试中的问题如行锁实现、MVCC机制,并提到了JVM参数调整、CPU100%的处理方法以及HTTPS的工作流程。作者反思了面试表现,提出梳理知识大纲、深入学习技术的重要性。
摘要由CSDN通过智能技术生成

27、什么是跳表?

  • 常规链表只有一个next节点,跳表持有多个指向其他链表的指针,可以跨越式的进行查找,时间复杂度是logn

28、如果我要找一个score为A的节点应该如何去找?

  • 首先在map中找到对应的node排名,然后根据排名在skiplist中进行查找

29、zrange是如何实现的?

  • 这个没想到不应该,查了一下如下: ZRANGE key start stop [WITHSCORES],zrange 就是返回有序集 key 中,指定区间内的成员,而跳表中的元素最下面的一层是有序的(上面的几层就是跳表的索引),按照分数排序,我们只要找出 start 代表的元素,然后向前或者向后遍历 M 次拉出所有数据即可,而找出 start 代表的元素,其实就是在跳表中找一个元素的时间复杂度。跳表中每个节点每一层都会保存到下一个节点的跨度,在寻找过程中可以根据跨度和来求当前的排名,所以查找过程是 O(log(N) 过程,加上遍历 M 个元素,就是 O(log(N)+M),所以 redis 的 zrange 不会像 mysql 的 offset 有比较严重的性能问题。

30、Redis持久化

  • RDB:快照存储,可以选择是否阻塞,使用场景在数据库上下线、主备复制等情况中

  • AOF:类似于binlog,每个里面都是一个写事件,是优先读取的策略,支持多策略写入(强同步、按时间刷盘、交由操作系统决定刷盘等),AOF为了防止文件膨胀也支持重写

31、AOF重写的时候会不会block主线程?

  • 不会,没有这个必要,起一个子线程重写完毕之后把手头的buffer在刷进去就行了

32、在载入的时候是怎么做的

  • 本地起一个client直接读取AOF重放其中的命令

33、Redis有哪些多机部署方案?

  • 经典的主备同步,通过RDB初始化备库然后进行命令传播 Sentinel,实际上是一种容灾机制 cluster,集群部署,使用多机占用slot的方式进行集群服务提供

34、在主备环境下,如果一个备库中途断链了,重新上线的时候怎么执行同步?

  • 主备各自维护一个写入的Offset,对比差异之后在buffer中读出丢失的命令并进行同步

35、如果备库的offset过于落后已经不在buffer当中了呢?

  • 直接RDB重新同步 使用AOF来查找对应offset的语句(这个是我猜的)

36、cluster如何做的故障转移?

  • 不知道,估计也是检测到客观下线然后paxos选主

37、Mysql了解吗,里面有哪些锁?

  • 类型分类:共享锁(S),独占锁(X),意向锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值