快手 秋招 Java开发 一二三面面经【已意向】

base:北京

2021.9.7 快手一面

1. 自我介绍

2. 实习项目、背景、需求介绍

3. InnoDB优点

4. MyISAM索引底层是什么结构

5. B树和B+树区别

6. 为什么选择B+树不选择B树

7. MySQL如何支持事务

8. undo log如何保证原子性

9. MySQL隔离级别、存在的问题

10. MySQL如何解决脏读、不可重复读、幻读

11. 如何解决脏读?(读已提交)MySQL如何判断事务有没有提交?事务A中对id=1进行修改,不提交;事务B中读取id=1的数据,如何判断这个数据有没有被提交?

12. InnoDB可重复读是否存在幻读问题

13. 如果对记录修改,是否会读到修改的值?

14. LeetCode:8. 字符串转换整数

15. HashMap和HashTable区别

16. HashTable如何实现线程安全(给每个方法加synchronized,put时只能有一个线程获取到锁)

17. 其他线程如何知道已经有线程在put(Mark word)

18. Mark word是什么

19. synchronized的锁优化

20. 出于目的写博客;什么时间写博客

21. 反问

22. 其他offer

2021.9.9 快手二面

1. 自我介绍

2. 项目问题

3. 实习有什么体感

4. 假设有1,2,3,4,5,6,7,8,9,10 在B+树中存储,是什么样子

5. 为什么1和2之间是链表

6. MySQL有哪些索引

7. 为什么会有覆盖索引

8. table 有a b c d四列,(b c d) 联合索引,selct c,d from table where c = 1会使用这个联合索引吗?不会,最左匹配

9. 为什么覆盖索引存在最左匹配原则

10. select c,d from table where b = 1 and d = 2会走索引吗?我:行。面试官:这个可以行,也可以不行…分情况,MySQL中有一些优化,比如ICP,就会将索引下推(我没懂…)

11. 算法题:LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置

12. HashMap底层数据结构是什么

13. HashMap先不考虑红黑树,手写一个底层数据结构,存储key value

14. Java 线程的状态;time-waiting时间到了,进入什么;调用sleep()进入什么状态?time_waiting,那这个time_waiting状态会释放锁吗?不会;锁等待是什么状态?blocked

15. wait() notify() 以及线程状态转换

16. Java线程状态和操作系统线程有什么不同?Java线程的 runable=ready+running,操作系统线程分为 running和 ready,并不是合在一起的

17. 为什么Java把这两个状态放在一起?

18. 反问

2021.9.13 快手三面

1. 自我介绍

2. JVM内存结构

3. 堆如何分代

4. 为什么要分代

5. 回收算法

6. 回收算法有哪些具体实现?垃圾回收器

7. TCP三次握手

8. TCP 四次挥手

9. 为什么建立三次、断开是四次

10. 四次挥手套接字的状态转移

11. 输入url的流程

12. http的request、response的具体格式

13. 你们的服务是如何部署的?SpringBoot中的Tomcat

14. LRU 如何实现?在哪用过

15. LRU put get 时复

16. 算法题

100G文件,每行是一个长整数,总行数为N

主机内存1G

结果:输出最大的K个数 (K

————————————

这道题千万别被100G迷惑,想着分文件之类的…

维护大小为k的最小堆,如果当前元素大于堆顶元素,入堆。这样,堆中始终存储的是到当前为止,最大的k个数。

大小为k的最小堆会一直存在内存中,因为K

17. 反问

2021.9.15 HR面

2021.9.22 意向书

整体面试感受非常好,面试官很谦和,答得不对或者不会给提示。

以下是往期部分面试资料截图

相关文章