昨天面的
原本是中午三点面的,面试官那边好像突然来了🐛,然后HR改约晚上9点(原本约7点,7点正好在面另一家,就推迟了)
由于视频面,有些不太重要的问题我就不记得了,下面就记录下我记得的东西:
整体面试感受是我面过最好的,不会的题目面试官会给予引导,实在不会也不会难为,一些闪光问题我会简单提下思路。
1. 面试官先道个歉说中午咕咕咕了。
2. 然后面试官就先自我介绍了(没错,是面试官在自我介绍,介绍完了直接问问题,没有让我自我介绍,我投的北京,但面试官是深圳头条的,好像面试官都是跨域分配的)
3. 简历的项目聊了15~20分钟来着,主要是针对项目中用到的技术栈、难点、漏洞进行提问,这块因人而异,我就不展开了,项目过后问基础。
4. 端口有多少个?为什么有这么多个?
5. 四次挥手?
6. 为什么中间的fin、ack要分两次?
7. 讲讲2msl、time_wait、close_wait?
8. 半连接队列、全连接队列?
9. 讲讲你了解的mysql索引?唯一索引、主键索引?唯一索引和普通二级索引区别?
10. 讲讲索引数据结构?mysql对B+树做了哪些优化?
11. 主从复制的原理?半同步复制?
12. 你常用的mysql版本多少?答:5.7
13. 讲讲5.7的并行复制?答:5.6是中继日志分库并行,5.7早期基于二阶段commit防冲突的思想,5.7后期在前期基础上做了再细分,即对更改的行进行hash,不冲突则可并行。
(还好这里没继续追问,不然就要拉闸了,细节我自己都不记得了)
14. redis的5种类型?
15. redis的sort_set底层都用到哪些数据结构?为啥不用B+树呢?
16. key-value用的什么数据结构?说说rehash过程?rehash期间的crud是怎么样的?rehash会带来哪些问题?
17. 现在有一个图片网站,让你设计一个缓存你会怎么做?(确认过不是CDN,就一个普通的图片网站)
- 思路:实现类似Redis的LRU机制。
18. 可以结合实际场景再优化优化吗?场景随你挑
思路:
- ①根据局部性原理,用户在点击一张图片后,他很可能会继续访问相邻的图片,我们可以加入一个随机预读、线性预读的方案,以及时缓存周围的图片给用户更好的体验。
- ②但不排除有的用户只访问一张图片就拍屁股走人了,如果在这种情况下进行预读,就有可能导致整正被访问的图片缓存因LRU机制淘汰掉,而预读的图片却在之后无人问津,造成缓存命中率的下降,于是我们可以将缓存分为冷热两区。
19. 打断一下,分成冷热两区的意义是?
- 思路:预读的数据先打到缓存的冷区,冷区的数据如果被访问到了,再升级到热区,这样做的意义在于可以防止预读的缓存过早地将用户访问的缓存刷掉。
20. 再想想有没有别的优化思路?
- 思路:假设一种比较极端的情况 ,就是某个画师发了几张有颜色的图,引起众人围观,该缓存命中率到达99.999%(非常极端的场景),并且该画师的几张图一直在LRU的首部区域反复横跳。那么针对这种情况,我们设置缓存的前0%~10%部分的数据,即使命中了,也不需要发生交换,因为它们交换的意义不大,在缓存命中率较高的情况下,不过是来回交换tiwei罢了,怎么交换都不影响缓存命中率,省下交换还能节省计算机资源。
21. 还可以再优化吗?
- 答:饶了我吧。
22. 来做做题
- 不会,猝(面试官一直在给提示,可是我太菜,捞不起来,以为就此别过了)
本来以为最后算法拉闸了,没想到第二天早上还是收到二面邀请。
PS:我怎么不投开发?
- 投了,简历半小时就挂了,怀疑人生。
全部评论
(7) 回帖