需要了解的一些东西,面试的时候也经常会被问到:
1)Activity相关,四大组件。App应用开发,涉及LaunchMode、onSaveInsatnce-State、生命周期等技术。
比如:推送消息过来之后,消息传递的流程,清楚程序的流程生命周期
2)Fragment相关技术。activity与fragment之间的消息传递,相关技术可以参考官方文档
比如 有时候会遇到的问题,fragment not attached to activity 的问题,或者由于点击过快,重复创建出现的exception(这个有时候和机器有关)
3)序列化技术。有Parcelable和Serializable两种,经常面试的时候会被问到异同。
4)图片加载技术。 Fresco,glide ,UIL等等一些,可以去查找一下相关的优缺点,以后相关的缓存技术。
图片加载经常会出现OOM的问题,怎么去解决相关问题,也会在面试的时候经常被问到。
5)fastJSON或GSON的使用。网络传递数据解析成对象的,这个不用说这个的重要性,也有通过XML,或者二进制流传递数据的。
6)多线程相关。包括Handler、Looper、ExecutorService等。并发性等等。
7)Adapter和ListView,RecycleView,列表的写法。
8)网络模块:Okttp,retrofit等等,RestFul风格。
面试的时候有时候会被问到 HttpULConnection和HttpClient的异同。
可以demo写一个登录,了解这个。
网络请求封装。使用AsyncTask的网络底层封装,使用Handler+Runnable的网络底层封装。
9)Service receiver 的使用。
10)Android与HTML5的交互。包括Android调用HTML5的方法,以及HTML5调用Android的方法。
11)代码混淆。ProGuard,不keep相关语法。
gradle中的常用的一些语法。
12)Android打包机制。涉及Android SDK中的若干命令。
对Android打包过程做的每一件事都很了解。 进一步是Android多项目依赖的打包技术。Ant、Gradle或者Maven,掌握其中任何一种打包机制即可。
多渠道打包的情况。
13)线上Crash分析并修复。要具备通过分析Crash信息修复线上Crash。
14)内存泄漏。包括内存优化、内存泄漏的场景、MAT工具的使用。
15)调试工具。包括DDMS、Eclipse或Android Studio的调试功能。
16)Monkey机制。Android开发人员如何对一款App进行Monkey测试。
17)单元测试。这里指的是JUnit。对复杂的算法写过单元测试以保证其没有问题。
18)GIT的高级功能。包括 fetch,rebase,merge,Revert、Stash、Cherry Pick和Sub Module等相关常用的命令
如果项目中使用的是SVN,那么要掌握SVN的版本管理策略。
19)插件化编程。哪怕知道一点DexClassLoader的概念也好
20)设计模式。对常见的设计模式如工厂、生成器、适配器、代理、策略模式耳熟能详。
21)常用的ADB命令
22)算法,这个大公司的面试必备的。
23)可以拓展技能,学习一下其他种类的语言:比如:Python,Ruby等等
Kotlin也算是比较火的语言