Android面试-字节一面
距离上次跳槽已经过了3年多,突然看到字节的HR来捞。想着自己好久没面了,就打算去试试看。
0. 准备
视频面试,不用去现场真的太赞了。由于项目比较忙,自己又不是特别想跳槽,所以没怎么准备。面试当天看了一篇面经找找感觉。
1. 自我介绍
面试前我以为自己多年老油条是不会紧张的,但是打开了视频开始面试还是难免紧张了起来,感觉脑子都不灵活了。自我介绍又没怎么打过腹稿,导致开始就有点卡壳。不过自己的主要经历是讲出来了。
2. 面试题
接下来就直接开始了,先是问了简历上做的东西,感觉自己答的没什么毛病。下面分享下问的问题和自己的回答。
1.View的事件分发(具体详细)
事件分发我是有跟过源码的,一开始就想从InputMethodService讲起来突出自己。但讲的时候发现很多细节都忘了,只好匆匆介绍起了dispatch、intercept、onTouch这些。
2.内存问题一般如何处理?
讲了下内存泄漏、内存溢出的排查和修复。
3.死锁导致的ANR,如何排查?
这个问题我真的一下子没有get到,就介绍了下ANR。现在我回想过来,应该是想考察我是不是分析过traces.txt文件?从trace文件里可以看出线程的状态,如果死锁了可以看到主线程是block的。
4.插件资源加载如何热修复?
讲了下插件资源加载遇到的ID冲突如何解决。
这里我估计漏了答反射Asset相关的点了,因为他一直问还有什么。我觉得插件反射Asset应该是常识吧,不应该是要考这个。。。
5.讲讲Binder?
回答了一次拷贝的原理。
自己回答的有点乱,这就是没有准备的下场,明明脑子里架构图都出来了,但是表述的时候卡壳了。
6.ConstraintLayout 如何减少布局层级的?
答:通过各个View之间的约束关系来做,不像LinearLayout这种定死了布局方向。
面试官好像不是很满意。
7.Android如何加载长图?
我回答是:只加载需要显示的部分,剩余的部分按需加载。
面试官显然不满意,想要问细节。
我不会。。。
这个在博客中看到过,系统有提供相关类来处理,但是我确实没有实践过。没有答好。
8.算法
https://www.nowcoder.com/questionTerminal/2569018b80044c4fab95b4d6752fbccf?
算法是我的弱项,又好久没有刷题了,这道小算法题愣是卡了我好久。有点尴尬
3. 总结与反思
很多基础的知识点都没有复习,没有在脑子里过一遍,导致面试的时候表述不明确。很多细节也是忘记了,不敢瞎答。
算法还是要加强,多做题,主要是坚持,保留这个习惯才好。
面试考察的是平时的积累,有些问题是我平时处理以及解决过的,但面试过程中却不能很好的把自己的解决方案表达出来。看来我平时的总结还是不够,遇到问题解决后没有再好好归纳,很快就忘记了。以后要多多加强,分析过的问题最好是整理输出博客,并时时温习。