10.8 快手日常实习一面 50min
自我介绍
问实习做的慢查询的业务背景、怎么优化的
八股:
1.mysql索引为什么要使用b+树,而不使用b树、AVL
2.为什么千万级别的数据b+树只需要三到四层?(具体的计算过程忘记了,这个问题是上个问题自己引出来的,长记性:不要给自己挖坑)
3.最左匹配原则:联合索引(a,b,c,d),判断各个条件下走索引的情况:
a=1 and b = 2 and d = 3 and c =4
a=1 and b = 2 and c > 1(这里说太快了,想都没想就说了,说成c不会走索引,实际应该是c会走,但d不走,这里都会犯错不该)
4.mysql事务特性以及怎么实现的?
5.MVCC能保证哪个事务隔离级别(读已提交和可重复读,这里自己提了两种隔离级别read view生成时机的不同,好!)
6.MVCC有哪些好处(我觉得最重要的是并发读无需加锁和隔离性吧,还有解决脏读和可重复读这些)
7.java基础数据类型(平时没怎么用过byte忘记还有这个了,说应该是七种,实际是八种,我真是癫了)
8.int占几个字节(4个字节,算是猜对了)
9.讲讲ConcurrentHashMap(jdk1.7和jdk1.8的都说了,对比不同和提升)
10.什么情况下链表会转成红黑树,红黑树什么情况下会转为链表(8和6,这里提了一下为什么是8和6,前面看过)
11.concurrentHashMap的get方法是否加锁?(没有加锁,提了一下底层用来volatile来修饰value和size,保证可见性)
12.那你解释一下volatile这个关键字(讲了讲可见性怎么实现的,说了一下总线嗅探,以及MESI协议)
13.那你了解ArrayList和hashMap的扩容机制吗?(ArrayList很久没看了,就记得是扩为1.5倍,HashMap讲的比较详细)
14.redis的多路复用有了解过吗?(不会,有了解过但忘记了,半年前看的早忘了)
15.redis的分布式锁你的理解(因为我是项目中对redisson分布式锁进行封装,我觉得这种问题问你理解就是想看看你为什么要选择这种分布式锁实现方式,应该要对比redis本身的setnx的缺点,还有为什么选择redisson分布式锁,比redis原生的好在哪,我觉得问理解还可以说分布式锁的意义,总之这种题比较开放)
手撕:LRU,写完了面试官提醒忘记删map的元素了,最后说没啥问题
反问:
问业务,面试官挺好的,讲的比较细了,但发现跟我在美团实习的部门做的东西差不多
反问表现,说还不错(nnd,我索引那块答错了还有redis多路复用不会,没说我哪不足,哎感觉要挂我)
总结:
无所谓过不过,反正也实习不了,差不多半个多月没面试,这次面试基本都是八股而且问的还挺细的,比较喜欢这种拷打八股细节的,正好检验自己的基础,这个面试官喜欢根据上个问题的回答提问下个问题,节奏比较好把握,还有回答问题不要给自己挖坑,自己说着说着嘴就瓢了,学会引导面试官跟着你的节奏,最后还是觉得自己表达能力确实不行,加油吧!)
更新:一面已过
作者:行测申论启动
链接:https://www.nowcoder.com/feed/main/detail/85bca1279f9844c88ab846aaf120b224?sourceSSR=users
来源:牛客网
(感觉大部分题目都差不多 也都回答不上来 纯寄)