这两年移动端发展的越来越快,在ios上特别明显,而Android也是遭遇到了很多打击
特别随着初中级Android开发的逐渐饱和,也让企业在甄选Android面试候选人时变得格外严格,恨不得找一位Android开发做所有的事
我在平时的工作中也是一直接触较多候选人,就这里想和大家说下我对于Android面试的一些看法
1.首先对于Android基础知识的掌握必须要通透!
我把Android基础知识分为:四大组件Activitiy、service、广播、内容提供者,还有fragment,当然这些知识点也不是独立的,每个之间都有融合再一起的知识
比如Activity这个知识点,首先我们需要掌握Activity的使用场景
最常见的在这个Activity中通过嵌入fragment来进行整个项目UI架构的搭建,这时候这个Activity就是整个项目的一个外壳
我们还需要了解整个Activity的生命周期,要知道在那些方法中可以做耗时操作,哪些方法是不可以做耗时操作
在掌握Activity时,我们还需要注意Context的使用,区分在哪些场景可以使用Application context,哪些场景我们尽量使用Activity context
接下来我们还需要掌握Activity的启动模式,知道哪些场景下使用singleTask、哪些场景下使用singTop。
我们回到我们的面试,掌握好了以上Activity的几个知识点之后,我们还应该知道如何让Activity和其他组件进行通信,比如Service和Activity之间
因为我们在自己的项目中往往会通过启动一个service来进行某些后台运算,当计算完成我们需要通过通知Activity来进行UI的更新,我们的Activity也可以和service进行交互来进行添加逻辑的操作,Activity和Fragment之间的通信就会更频繁了
因为我们刚才说过现在一种比较流行的UI架构就是在一个外壳Activity中通过底部切换来进行子Fragment之间的切换显示,我们看到就一个Activity也包括了很多知识点
当然如果我们进行扩展和延伸的话 还会有很多
比如如果对于一个繁杂的Activity进行重构,MVP、mVC模式中Activity的不同作用,在性能优化中为什么Activity能够造成内存泄漏,怎么解决?会不会用常用的性能优化工具:leakcanary、systrace、traceView等,这些扩展的知识点往往都会在面试进行中,随着面试官的思路不断延伸出来,这时候我们应该怎么去应对这样的问题呢?
其实最好的办法就是在平时积累,大家自己一定要有一个自己的笔记,这样你才不会学到后面发现自己什么都没学到!
2.Android开源框架的知识学习
据我在这个行业不短的了解,现在很多公司对于开源框架的考察的比重都是越来越重,比如新浪微博关于开源框架的考察就是必须的,阿里、腾讯也都会经常考察候选人有关开源框架的问题
所以说大家对于开源框架也是需要很好的掌握,当然对于开源框架的学习也是有策略的
大家一定要谨记绝对不要深入源码而不能自拔,要根据整个框架的总体流程来进行梳理
最好在面试前自己对于在简历中提到的框架有一个自己的头脑梳理,你起码要在脑子中把这个框架的点都过一下
这里提到了简历,看过很多份简历
大家都有一个很大的问题,就是个人技能写的太多,我真的不建议大家写这么多,特别熟悉、掌握、了解这些用词都是需要谨慎的
我建议大家对于自己掌握特别熟悉的知识点才能用上掌握、还有一些最基本的知识点才可以用到掌握
如果自己在面试前还是觉得没有太大把握的尽量用熟悉和了解,在简历中大家可以把自己特别熟悉的开源框架写在前面,这样也更容易让面试官根据你的简历来问答
大家在回答的时候还是要注意一点:有些问题你有可能真的不知道,但是你最好表现出思考的过程
比如你可以这么回答:这个框架我在项目中确实没有用到过,但是另外一个框架retrofit我用的比较多,要在面试过程中学会引导面试官转到你擅长的话题上!
总之这是一个斗智斗勇的过程!
3.Android系统源码的学习
对于系统源码我又一个最重要的建议,C++基础不好的同学,源码的学习到JAVA层就可以,一般也没有哪些公司的面试会问到这么深
如果你找的是Framework开发那就另当别论了,但是对于大多数应用层开发的同学还是去碰这部分了
因为我们毕竟是要参加面试的,面试复习的话肯定需要将就一个性价比,我们不可能有无限的时间来复习,所以要把时间用到刀刃上。
系统源码:大家可以从这几个角度来进行复习:binder、AMS、Application启动、Activity启动、View绘制、SurfaceFlinger这几个角度去复习
当然系统源码包括很多,但是这些是问到频率最高的几个了!
特别是binder,他可以说是整个Android系统的核心,也是整个进程间通信的枢纽。
关于这部分的内容,我总结了一些面试题,集中学习成文档
领取方式:关注+转发+评论,点赞加我赠送
最最最后
真心祝大家能通过自身的努力提高自己的技术
同时也要找到更高的offer来回报自己!大家加油!