2021 年是意义非凡的一年,架构师带你玩转 Redis 高性能缓存设计实战
复习过程
项目准备;
leetcode:刷完剑指之后每天会刷 2-4 道 leetcode
java 基础: 主要刷面经、重点掌握垃圾回收机制
操作系统: 之前没学过,用几天时间看了一下最重要的进程线程、死锁、消费者生产者、哲学家问题、银行家算法
计算机网络:花几天时间复习了一下,重点复习 tcp(三次握手四次挥手拥塞控制流量控制)、udp、https
数据库: 重点了解了索引的实现以及引擎的区别
数据结构和算法: 主要通过剑指 offer 和 leetcode 进行复习
其他:期间也做过大大小小好几次笔试,还有一些往届练习卷
腾讯
一面(3.13 电话面)
自我介绍
介绍项目以及项目遇到的难点
java 的 hashmap 是否安全?hashmap、hashtable、concurrenthashmap 的区别、底层和实现
mysql 索引的底层实现
jvm 垃圾回收机制
tcp、udp 区别和适用场景
tcp 三次握手、四次挥手,为什么挥手不能只有三次
线程和进程的区别
进程通信的方式有哪些
堆是线程共有还是私有,堆是进程共有还是私有,栈呢
了解过协程吗(我:携程???不了解呜呜呜)
mysql 查询优化
快速排序的时间复杂度、原理(口述算法)
最近在看什么书
除了腾讯还投了其他的公司吗
问我愿不愿意转 go,并推荐我了解一下协程,最后让我耐心等待,面试的人太多,需要对面试的同学进行挑选,两周内会告知我结果
有什么想问的(对我的评价和学习建议)
二面(3.22 现场面)
自我介绍
问我为什么发现自己不喜欢做客户端(简历中有一个安卓实习项目)而想做后台
介绍项目(一个电商小程序)
项目中的商品是否有考虑过 xxx(忘记叫什么了,意思就是是否有考虑过同一种商品有不同的颜色、规格,在数据库中如何区分这些不同)
介绍项目的支付流程,并画一下流程(白板)
介绍一下订单状态码的含义,以及交易过程中订单状态码如何变化
如何防止商品的超卖现象
项目是否具有秒杀功能
并发的时候,如何保证性能
在分库之后,如何设计 id
在分库后,一条插入请求,在上层不做处理,如何直接在数据库找到相应的库并插入库中的某个表
当服务器的 cpu 一直很高时,如何找出原因
是否用过调试工具
当项目一直无法访问的时候,如何定位错误
介绍一下 aop 和 ioc
如何将一个 ip 地址由点分制(xxx.xxx.xxx.xxx)和 int 类型间进行相互转化
如何判断一个数是否为 2 的 n 次方
可实习时间
是否愿意转 go
有什么想问的(对我的评价和学习建议)
hr 面(3.26 电话面)
自我介绍
介绍一下实习经历
实习中遇到的困难以及如何解决这些困难
未来计划,是否读研
面试总结
一面的问题都很中规中矩,唯一卡住的就是协程了,确实不会,只能和面试官说我不了解。主要和大家分享一下二面的面试体验吧。因为二面自我感觉答得不是很好,有很多问题当时没记录下来,现在一时也想不起来。所以上面的面经并不完整。当时面试完走出大厦以为自己挂掉了,结果刷新了一下状态发现变为 hr 面,真的超级意外。现在想想大概是因为我在遇到不会的问题时,没有直接说自己不会,尽量把答案往自己知道的方向回答。
第 7 题,项目没有秒杀功能我也没做过,但是了解过一些,只能和面试官说确实没有,然后让他听我讲一下我的实现思路,期间又让面试官挖出了很多问题考我 TAT
第 9 题、第 10 题,面试官要求我在分库的场景下回答问题,我先回答了分表情况下如何实现,他肯定了我在分表下的做法,但是分库情况还需要另外考虑,我实在想不出来,才和他说自己没有办法实现,但这总比我直接说自己不会好。
第 13 题,如何定位错误的时候,先讲了一下无法访问的几种情况,以及大量 tcp 处于 time_wait、close_wait 这两种状态的原因和解决方法。
面试结束后,等电梯的时候突然想起面试中一个一直理解错误导致解不出的问题,发现自己想歪了之后赶紧编辑完答案又给面试官发了过去,这个答案后来得到了面试官的认可。
最后
总而言之,面试官问来问去,问的那些 Redis 知识点也就这么多吧,复习的不够到位,知识点掌握不够熟练,所以面试才会卡壳。将这些 Redis 面试知识解析以及我整理的一些学习笔记分享出来给大家参考学习
还有更多学习笔记面试资料也分享如下:
评论