在最近在进行模拟面试,除了我问面试者问题外,也会和面试者交换了一些看法,回答了一些他们比较关注或迷惑的问题。
在回答这些问题时,有时候是即兴发挥,事后在反思面试者遇到的这些问题时,我觉得还是有必要就这些问题进行一个比较完整的论述,也算是对自己思维过程的一个总结。同时也让有相同问题的读者可以直接看到,如果能获得启发,那正是我所愿。
今天和大家分享“如何系统的学习Android开发”,面试者在问我关于学习Android开发的问题时,基本上没有“系统”两个字,大家常用的问法是:不知道怎么学习Android开发,没有方向,不知道该往哪里使力。
什么是系统?
为什么我会提系统两个字呢?先说一下新手和专家的区别,大家常常认为新手和专家的区别在于经验上,这样说也不能说是错的。因为确实这个经验是很重要的,但这个经验不是指实施某项技术获得了一个过程和记录,而是指通过实施某项技术促进了思维的改变。
如果思维没有改变,那么一个声称拥有十年经验的开发人员,实际上只是一年的经验重复了九次。
新手往往都不是特别想要学习,也不知道自己的行为是对是错,只是想实现一个立竿见影的目标。如果给新手提供一个与情境无关的规则(或者叫指命)让他们去执行,他们就会变得能干起来。
而专家更关注情境,更关注系统,而且喜欢说“具体情况具体分析”。他们往往更关注事物之间的联系,把自己看做系统的一部份,能分清和认识到系统的边界。
新手往往不把自己看做系统的一部份,所以学习Android开发也变成了一项孤立的事件,学习的模块也变得孤立起来。虽然花时间学习了很多组件或者技巧,但是却没有理清过这些模块或问题之间的关联。
然而,现实中的问题都是不是孤立的,理解系统,学会用系统思维才更有利于你去解决问题。
系统学习Android的资源和方法
而问怎么学习Android的人,从学生到工作过几年的程序员都有,大家都在关注怎么学好Android,怎么让自己的开发技能提升,往往看到什么技术或亮点都想学一下。但太多的人却忽略了系统,没有好好系统地学习Android的一些基础和这些基础特征之间的联系。
具体的学习方式每个人不一样,这里我给出一个我认为比较好的方式:完整地看完和练习官方指导文档。网上有太多Android开发的视频和文章,但他们都过于碎片化,只有这份官方文当是我认为最系统介绍Android开发的指南。
网址:https://developer.android.com/develop/index.html
一定要把官方文档中的“培训”和“API指南”认真的看一篇,而且花时间把相关的知识联系起来。这个工作只能靠自己了,官方都已经出了这么好的系统学习资料,但是你不去系统的学就是你自己的问题了。
接下来是详细的Android进阶学习路线
一、基础技能:
1、深入Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、反射与类加载
7、高效IO
二、Android框架体系架构
1、高级UI晋升
2、Android组件内核
3、大型项目必备IPC
4、数据持久化
5、Framework内核解析
三、360全方面性能调优
1、设计思想与代码质量优化
2、程序性能优化
3、开化效率优化
四、设计思想解读开源框架
1、热修复设计
2、插件化框架解读
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
7、IOC架构设计
8、Android架构组件Jetpack
五、NDK模块开发
1、NDK知识体系
2、底层图片处理
3、音视频开发
4、机器学习
六、架构师炼成实战
1、架构设计
2、网上商城项目实战
3、新闻客户端项目实战
4、多格式播放器项目实战
5、Gradle自动化项目
七、微信小程序
1、UI开发
2、API操作
3、微信对接
八、Hybrid开发与Flutter
1、Html5项目实战
2、Flutter
这套架构师成长路线是6名来自阿里、腾讯等10余年开发经验的资深架构师结合实战经验及最新互联网企业主流技术,归纳整理而成,并针对每一个技术点配有相应的视频详解、源码注释和笔记文档。
《Android学习PDF+架构视频+面试文档+源码笔记》私信我【安卓】免费获取!
大部分的吃苦磨炼一点都不励志,只是在走弯路,找对方向,比同龄人少走十年弯路。