快手一面、二面、三面、OC~
快手一面 9.23
我看你简历上面说 熟悉java ,你说一下java包括哪些部分
1.抽象类和接口的区别,如果实现两个接口,但是两个接口里面的方法都是一样的,可行不?
2.说一下volatile 和synchronized的区别
3.为什么volatile 可以保证可见性,我说了一大堆,面试官说我没答到点上,我说想请教一下 正确答案是什么,然后面试官提到CPU缓存那块,我觉得可能是我没有提JMM的原因,面试官觉得我没有说到重点。 然后我把缓存一致性相关的解释了一遍,说了CPU 多核缓存等问题,面试官说 可以
4.说一下JVM,知不知道最新的垃圾回收器?
自己感觉这块说的有点乱,但是我balabala了很久,并且多次跟面试官说 要不要讲底层,我比较了解这块底层,面试官拒绝了
5.说一下集合类,说一下hashmap,hash函数怎么处理的
6.线程的问题,你一般用什么方法来创建线程,我说了runnable
7.runnbale创建的线程,如果关闭了,还能重新用吗?我说可以? 不知道对不对 面试官让我下去再看看这块 有点懵
8.线程如何中断的 (昨天刚好复习到),问的挺深的
9.看你项目用到了netty,说一下NIO和BIO的区别,为什么NIO可以实现功能呢? 我说了底层是缓冲的思想 channle buffer, selector,然后说了select函数的阻塞和非阻塞 面试官没继续问了
10.做了题吧, 表达式求值 问我会写不, 我说应该会(其实不会!)然后说了大致思考,中间卡了好几次(大忌 还好面试官人很好,如果严格一点的 我可能就没了),说思路的时候 面试官的表情很疑惑,我意识到不妙,表示需要再思考思考
快手二面 9.24
1.自我介绍
2.我看你项目都是后端的,为什么选择安卓呢
3.Java方法里的匿名内部类 调用外面的变量 为什么要加final呢?
4.final的作用
5.synchronized 和valotile 想讲底层一点的,被制止了
6.cookie的作用,cookie是放在哪里
7.get post的区别
8.post能不能把数据放到url里面?
9.进程通信的方式,说一下管道的机制(提到了shell)
10.一个进程进去了,其他的进程不让进去,怎么做?(害,没答到点上,我以为是让我讲单例,尝试说单例,被拒绝了,提示我说进程间通信方式,我说了 消息队列 信号量等 面完查了一下 就是mutex 临界区 最后面试官评价的时候 说我操作系统这块不太好,可能是没有做过)
11.equals 和== ,还提了几个没遇到过的问题 如果不需要考虑map 效率的这些,还需要重写euqals吗
12.答了一些 没答到点子上,想让面试官解答一下,他说hashcode... 然后我就说了hashcode 和equals的关系 感觉还是不满意...
13.了解线程池吗,说一下线程池的好处, 说了两点,面试官觉得我没有答到点子上...
14.写题,两两反转链表, 写出来有bug ,尴尬,最后面试官的提示下 改出来了 害 这么简单的都拉胯了(写题之前,我还问了面试官 要不要问项目相关的,然后面试官说,emmm 你想说什么吗, 我忍住了,其实项目我可以吹很多的~ 想让面试官看到我的亮点,因为前面确实问的不算难,而且自己也没答好 )
15.写完后面试官问我,有没有拿手的 这次没有被问到的! 有有有!! 我说TCP UDP ,我的理解很深!! 对数据库的理解很深,对分布式有一定了解 ,对网络IO这块很了解。 面试官说好,那你说一下TCP 和UDP ,对他们的理解。 我说了HTTP版本更新存在的问题,然后说了3.0怎么解决的,说了QUIC协议,说了TCP的RTT 缺点等,然后怎么改进的。 中途面试官说 如何保证UDP的可靠呢, 我说应用层, 其实这块有很多可以说的。 然后问我是不是写过UDP的协议,我说没有。。。 看过很多博客,写过博客总结,然后面试官说 让我后面可以用一下! 我说可以,到时候在项目上改造一下
16.反问,表现如何, 面试官说 操作系统这块不太好(我哭了...),然后说后续会有hr联系我的,忘记问总共几轮面试了~
17.了解双亲委派机制吗,说一下优点
面完15分钟 收到hr约三面,想约当天下午六点,但下午六点半有京东面试 ,推到第二天上午十点半了
戴口罩的小哥,头发很多 感觉挺萌的,最后说我表达能力不错。。。基础掌握的蛮好,但是操作系统那块有点拉胯
快手三面 9.25 上午十点半
前面两面都蛮好的,最后三面拉胯了,感觉希望不大,还是写一下面经吧
1.自我介绍(面试官是个小姐姐,很年轻,我以为三面会是主管面,如果真是主管面,那也太厉害了!! 这么年轻就是主管。 自我介绍的时候,面试官笑了好几次,然后马上憋回去哈哈哈 被我逮到了。 。 突然想起一句话: 我们是受过专业训练的,一般不会笑,除非忍不住 哈哈哈哈 )
2.我看你项目 都是后端,为什么来客户端呢
3.我看前面面试官记录,问了你的项目我就不问了。。(其实都没问我项目,我试图解释,并且想让面试官问我项目,被婉拒)
4.问点数据库相关的吧,了解redis吧? 说一下为什么要用redis做缓存?
5.如果用缓存,怎么保证数据一致性呢?(问到这 ,心里窃喜,我拿手的啊这都是!一顿balabala 没想到后面拉胯了)
6.知道java泛型把?给了一个题,问我会不会报错 (慌了,我只会一些基本的 什么假泛型,底层反射什么的,让我判断,有点难!!)
7.知道异常把? 说一下这里异常的处理?
8.抛出异常以后,怎么去捕获呢? 比如throws 一个exception出去怎么处理(不会。。 我说了一般交给父类处理,具体怎么做不会,我提到线程池会有一个统一处理异常的方法,面试官不放过我,继续问我怎么处理的? 我。。。 只好说不会)
9.知道阻塞队列吧?(噩梦来了!!)
10.写一下阻塞队列里的方法吧(这个时候 我试图让面试官换个题,我说可以不可以用阻塞队列实现生产者消费者,面试官不让,让我写里面的实现,put 和get的方法, 我。。。 从来没写过,硬写! 然后面试官提示我 用生产者消费者的思想去写!! 那我懂了!!然后一股脑把生产者和消费者的代码放进去! 最后出了很多问题! 一堆bug 各种小问题, 讨论了二十分钟吧,基本都是在找我代码的bug ! 因为我直接背的那个题,这里直接放到方法里 就会出很多问题! 甚至把notifyAll写成singalAll ,被面试官指出来,还有wait没有加锁,以及thread.sleep有什么用? 我强行解释,最后发现写在这里不行,删掉 然后问我怎么去保证唤醒对应的生产者消费者呢? 是不是该加两个锁,我。。。 我解释 自己对多线程方面的代码写的很少,对数据库 网络IO HTTP 分布式相关更了解)
11.HTTP传输一个文件,下载一个文件,流程怎么样呢?(有点懵,说了大概的流程,然后面试官问字段用什么,然后说了一些 range啊什么的,问面试官答案,说是用range 然后这些balabala的 很多细节 让我下去再查查)
12.这个时候我基本垮了,想让面试官问我HTTP TCP相关的,面试官婉拒了,说这个太基础了,我说我会底层一点的 QUIC 改进TCP 啥的都会 ,还是婉拒。 写一道题吧(心里一颤),二维数组里面找某个值,不是很难,尝试马上讲思路,发现不对,然后又想了一会,写出来,解释完 收工!
13.反问,面试官表现,小姐姐表示不太方便说,然后问了安卓的学习建议,小姐姐说可以下去做个demo,我也顺便表达了我想学好的决心(希望给个机会呀~) 最后拉住面试官问了 总共几面, 表示三面+ HR ,然后bye
总结: 面试官小姐姐人 蛮好,经常笑, 所以还比较轻松,感觉是大佬,跟我说了一些客户端的东西。 就是问的问题,我实在顶不住,问到自己弱项了 害 ! 还是自己实力不够
以为没了,下午两点半收到hr电话,约在27号下午两点电话面