[关闭]
@natsumi 2018-03-15T09:19:16.000000Z 字数 1668 阅读 642

Android面经 from BYRBBS

信意涵得offer


摘自北邮人论坛的一篇帖子。。
忘了作者了。。

面筋:具体的面试题就不说了,反正大同小异,基本就是网上那些。
1、 刷题:牛客网+剑指offer+LeetCode,我是从研一暑假开始刷,剑指反复刷了很多遍,里面的题看完就能写出答案;牛客网把专项练习中的Android+Java+编程基础的题都刷完了;LeetCode刷了一些简单的。基本面试时算法题至少能做出一半,本来Android岗对算法要求不是很高,而且一般只考两道算法题。

2、 看博客:我一般看CSDN+GitHub+简书+云栖,然后把写的比较好的存入有道云笔记。CSDN比较有名的Android博主是张鸿阳、郭霖、罗升阳……博客内容主要分为Java基础和Android两块,具体内容有很多大神作了总结,我最初是按照这个顺序来复习的:
http://www.jianshu.com/p/735be5ece9e8
原生的组件(尤其是四大)都要吃透,然后再根据自己的情况查漏补缺,而且一个知识点只看一篇博客,我认为是远远不够的,你用的很熟练,不代表你面试时能把细节和原理讲的很清楚。

3、 面试:面试前可以先了解下这家公司的技术航道和主打产品。一般面试官有自己的擅长方向,喜欢抓住某个点一直深入下去,所以你简历上的内容都最好了解的很透彻,而不仅仅是“我用过、我用这个很熟练”。

比如:EventBus\Retrofit\RxJava\Fresco\Dagger\Butterknife\GreenDao\utimate-RecyclerView\volley\Coordinator这些轮子不但要会用,还要理解内部源码是怎么实现的?他们和竞品轮子相比有什么优缺点?你有没有仿照这些轮子造一些新的轮子?这些轮子使用的时候有什么缺陷?对待ASDK原生的轮子(例如Handler和LruCache)也是如此。

设计模式:我接触到的一般问的比较多就是MVP\Observer\Single\Factory,不但要讲清楚自己对这些模式的理解和掌握,最好是举出自己的应用例子,比如我之前模仿IOS的VIPER的思路+观察者实现了一种路由框架来实现项目的组件解耦,并且能快速画出大致的UML和时序图,这样面试官可能会眼前一亮。

GC:我觉得至少要能简述Java GC的工作原理、如何优化GC的性能、如何与GC进行有限的交互,还有GC机制中的算法。

App内存优化:这个网上有很多博客,主要从bitmap和代码这两块去说;还有常用的工具要熟练一两个,例如TraceView和Monitor等等,可参考这篇博客:
http://www.jianshu.com/p/da2a4bfcba68

网络协议:http1.1/http2.0/https/TCP/IP/UDP,至少要能简述实现原理和优缺点;如果你侧重视频直播类app的开发,那至少还要好好啃下RTMP和FFmpeg和WebRTC,ijkplayer和vitamio也要了解下,最好对乐视、七牛、网易、阿里等大厂的推流SDK做些了解,还可以看看:
http://blog.csdn.net/lipengshiwo/article/details/53334048

其他的:多线程、序列化、各种锁、集合类、JNI、customized view等等,都要深入理解;SQL、热修复、插件化、react native也要会一些;APP低功耗、APK的压缩这些也是要掌握的基础。

最后:BYR论坛很强大,上面和Android相关的面试题有空都看看,之前有一位17届的同学贴出了每次面试的题目,我都收藏并且找相应的答案学习。另外可以在简历上附上自己的个人网站,贴上自己的GitHub\blog\wheel\project\intern,万一项目和实习太多了,一页简历根本写不下。

最后的最后:多看好书\好博客+多写代码+多review+多和大神交流+check out名轮的制造细节,不要学的太局限,毕竟Android的功夫体现在Android之外。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注