查看: 2755|回复: 0

[手机开发] Android面试课程总结一(开源框架)

发表于 2018-1-31 08:00:00

这两年移动端发展的越来越快,在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开源框架的知识学习
据我在这个行业不短的了解,现在很多公司对于开源框架的考察的比重都是越来越重,比如新浪微博关于开源框架的考察就是必须的,阿里、腾讯也都会经常考察候选人有关开源框架的问题,所以说大家对于开源框架也是需要很好的掌握,这也是我们开设这门课程的初衷,当然对于开源框架的学习也是有策略的,大家一定要谨记绝对不要深入源码,而不能自拔,还是要根据整个框架的总体流程来进行梳理,最好在面试前自己对于在简历中提到的框架有一个自己的头脑梳理,你起码要在脑子中把这个框架的点都过一下,这里提到了简历,其实很多同学都把简历发我给大家改,我发现在这近200份简历中,大家都有一个很大的问题,就是个人技能写的太多,我真的不建议大家写这么多,特别熟悉、掌握、了解这些用词都是需要谨慎的,我建议大家对于自己掌握特别熟悉的知识点才能用上掌握、还有一些最基本的知识点才可以用到掌握,如果自己在面试前还是觉得没有太大把握的尽量用熟悉和了解,在简历中大家可以把自己特别熟悉的开源框架写在前面,这样也更容易让面试官根据你的简历来问答,大家在回答的时候还是要注意一点:有些问题你有可能真的不知道,但是你最好表现出思考的过程:比如你可以这么回答:这个框架我在项目中确实没有用到过,但是另外一个框架retrofit我用的比较多,要在面试过程中学会引导面试官转到你擅长的话题上!总之这是一个斗智斗勇的过程!

3.Android系统源码的学习
对于系统源码我又一个最重要的建议,C++基础不好的同学,源码的学习到JAVA层就可以,一般也没有哪些公司的面试会问到这么深,如果你找的是Framework开发那就另当别论了,但是对于大多数应用层开发的同学还是去碰这部分了,因为我们毕竟是要参加面试的,面试复习的话肯定需要将就一个性价比,我们不可能有无限的时间来复习,所以要把时间用到刀刃上。系统源码:大家可以从这几个角度来进行复习:binder、AMS、Application启动、Activity启动、View绘制、SurfaceFlinger这几个角度去复习,当然系统源码包括很多,但是这些是问到频率最高的几个了!
特别是binder,他可以说是整个Android系统的核心,也是整个进程间通信的枢纽。
关于这部分的内容,我们已经有计划在开设一门新课程,给大家分析这部分的东西
其实关于面试技巧,有太多的东西想和大家说了,以后我们会通过手记的形式给大家讲一些我平时面试候选人的故事。
最后是一些感恩的话,自从在慕课网开设第一门课程以来,我不断的收到很多应届生和工作多年的同学通过看我的第一门面试课程获得offer的消息,我真的非常有成就感,最近在和一位大三同学的交流中,也感受到了他对于这门课程的期望,也是督促我更快的更新课程,所以在录制完第二门课程之后,我就要开始进行第一门课程的优化工作了,当然第二门课程如果有问题或者大家有相对于课程的建议,我还是会在后期进行课程的补录和优化工作的,
最最最后,真心祝大家能通过自身的努力和课程的帮助提高自己的技术,同时也要找到更高的offer来回报自己!大家加油!



回复

使用道具 举报