快手android校招一面凉经
今天下午四点面试(暗示我996?)
面试官看起来很年轻,所以感觉说话投机,很nice,一个小时多一点
1.讲一下自己在学校的项目
2.讲一下自己实习的时候做了什么有意义的事情以及遇到的bug
3.上面谈到了service,问我service被意外杀死怎么重启,onStartCommand返回sticky
4.说一说点击桌面图标到打开软件都发生了什么,提到了AMS,问AMS是什么,干什么用的
5.说一说Activity的各个生命周期是在哪里被调用的?我回答是AMS管理的,其实没有仔细思考,明显不是。这个可以自行百度。
6.说一说Android进程间通信是怎么实现的,Binder有什么好处,内部怎么实现的?说了只有一次内存拷贝,但忘了怎么实现的了(后悔没有好好看)
7.说一说定时任务都怎么实现?说了Timer和Handler的Postdelay
8.说一说postDelay怎么实现的,这个看源码还真没看懂,我就说我猜内部也是用了Timer,感觉被鄙视了
9.说一说Rxjava的subscribeOn和observeOn什么作用,能不能重复调用,为什么,rxjava的好处。
10.问rxjava的map和flatmap区别(这个如实说了没用过)
11.怎么实现扩大一个view的点击范围?我直接说改变view的大小。。感觉又被鄙视了。然后说可以在父view里对这个范围判断,直接调用子view的performClick,这个感觉靠谱一点。
面试管给我说,可以在dispatchTouchEvent中判断事件是否发生在子view中时,将子view的感受区域扩大。(感觉NB)
12.然后问volatile和synchronized的作用和区别
13.重写equal方法时为什么要重写hashcode?(为什么??我还真不知道,看网上说是为了服务各个hash集合大佬)
14.说一说Activity的启动模式以及应用场景吧。
15,多叉树,奇数层正序打印,偶数层逆序打印,(多叉树的叶子结点可以用List保存),,思路只停留在类似于二叉树用队列遍历上面,其实比那简单多了,只需要用一个List存储每层的结点然后打印。。
面试完就很忐忑,但是觉得聊得还行。可是五分钟后,,,显示未通过。。
苍天啊,救救我吧,我太菜了。。