小红书Android搜索业务一面

全程70min,强度真的大,给孩子拷打傻了,但好在约了二面,许愿

自我介绍
介绍一下项目
LiveData原理
Hanlder执行过程
消息的类型(同步和异步)
知道消息屏障吗
Android设计Handler有什么用(答的轻松将一个任务从一个线程切换到另一个线程执行,比如说在子线程网络请求,切换到主线程更新UI)
为什么?Handler设计出来是为了方便切换线程的吗?
Handler在哪个线程运行?(我回答主线程)都是在主线程执行吗?(我答的具体看Handler在哪个线程创建)在哪个线程创建就在哪个线程执行吗?(我又答了每个线程有唯一的Looper和Handler啥的)所以是看Looper在哪个线程?。。。
使用Handler的场景?(一直在问我有没有其他用处,我回答线程间通信)
怎么在线程间通信?为什么需要它在线程间进行通信?使用线程池不好吗?什么场景下需要Handler构建一个消息循环系统?(我说我不了解,面试官说那你结合一下你学过的知识想一下)
Handler机制相比线程池的好处和坏处?
讲下事件分发机制
有用过ViewPager吗?它的点击事件的分发和处理是怎样的?接着就是一大堆ViewPager相关的事件分发的问题,给我干懵了,这里应该主要是想问一下滑动冲突处理相关的问题,但他没有直说出来,当时脑子一片空白也没想着往这方面说
写一个性能最好的单例模式(我写的懒汉式,因为我觉得它只有使用的时候才创建,避免了不需要还多余创建这一步骤,可能性能回好点吧)
synchronized锁的范围是什么?(因为是加在静态方法上的,所以锁的是类)
为什么要上锁,不上锁行不行,为什么不行?( 说了避免重复创建,降低资源开销,然后就拷打为什么降低资源开销啥的)
如果还有另一个静态方法也上锁了,这两个锁会不会竞争?
能不能把刚写的单例模式性能再优化?(我就写了双重锁检测)接下来就是一顿拷打我为什么这么写(鼠鼠是背代码选手被干傻了)
为什么里面要判断两次if?这里的volatile关键字有什么用?(讲了内存模型)然后我说,面试官一堆为什么为什么
接着拷打volatile底层一些东西
HashMap底层原理?操作的时间复杂度
手写一个归并排序

反问:学习建议(面试官:感觉你懂的东西还是蛮多的,但了解还不够深入。。。)

总结:对一些知识只是知道,对怎么用,为什么要这样了解还是太少了,就是对底层以及扩展方面了解太少。最后说一下面试官真的很好,虽然一直在刨根问底但也会一直指引,在他的引导下还是答出了一些东西的。
全部评论

相关推荐

小红书 后端选手 n*16*1.18+签字费期权
点赞 评论 收藏
分享
评论
点赞
1
分享
牛客网
牛客企业服务