由于没有录音,题目都是回忆出来的,可能会有缺漏。
值得一提的是快手的面试体验是自己经历过的面试中最好的,HR回复很快,面试官也都很和善,答得好的会有肯定,理解不清楚的地方会有讲解,思路上的卡顿也会适当提醒。由于自己面试经验并不多,所以格外感谢快手的HR和三位面试官。
流程
6月28号一面,6月29号二面,7月3号三面,7月7号OC,7月10号offer
一面
1、自我介绍
2、快排的原理,时间复杂度如何计算
3、二叉树的深度遍历和广度遍历有什么区别
4、谈谈多态的理解
5、讲一下hashmap底层原理
6、用红黑树的原因是什么
7、Hashmap线程安全吗?如果不安全应该用什么?
8、ConcurrentHashmap如果在遍历的时候,有更改数据的操作,要怎么保证线程安全?
9、线程间通信有哪些方式?
10、讲一下GC,垃圾回收流程,垃圾回收算法
11、SQL语句中count(*)和count(1)的区别
12、用过哪些Linux命令?
13、git merge 和 git rebase有什么区别
14、OSI七层协议
15、URL输入后的流程
16、三次握手
17、四次挥手
算法题:
1、写一下单例模式
2、会用静态内部类实现吗?
3、反转链表
4、反问
二面
1、你自己写的rpc框架有没有在业务中跑过,性能如何?
2、rpc调用过程
3、protobuf协议了解吗?讲一讲
4、自定义通信协议有没有参考现成的rpc框架?讲一讲现有rpc框架的通信协议
5、读过什么开源中间件的源码吗?
6、反射的底层原理
7、注解实现原理
8、netty底层是怎么封装Java io方法的,了解源码吗?
9、讲讲jvm中内存泄露的可能情况
10、一个类创建的过程
11、类加载器的底层实现
12、热更新的原理,怎么用类加载器来做
13、Class类如何使用
14、git中不小心reset了一个commit,应该怎么找回?
15、SQL中join有哪些注意事项,如何优化
算法题:
1、最少的硬币数目
2、反问
三面
1、自我介绍
2、git fetch和git pull的区别
3、git rebase的作用讲一下,如果有报错要怎么处理
4、git rebase -i 的作用是什么
5、讲一下快排的时间复杂度和空间复杂度,给出具体计算过程
6、讲一下二叉树深度遍历和广度遍历的时间复杂度和空间复杂度,给出具体计算过程
7、满二叉树插入一个新节点,依然是满二叉树,分析时间复杂度和空间复杂度,给出具体计算过程,写代码实现一下
8、层序遍历实现后问代码是否可以简化?
9、层序遍历的时间复杂度是O(n),能否优化?(提示用二分的思想后想出来可以每次用左子树的最小深度和右子树的最小深度比较,当右子树的最小深度严格更小时进入右子树,否则进入左子树,这样一次可以去掉一半节点。)
10、讲一下这个思路的时间复杂度和空间复杂度,给出具体计算过程,写代码实现一下这个思路
11、为什么投递这个部门?
12、反问
最后
整理不易,关注哇哇,以上均可分享哦~
网友评论