前言
许多 Android 开发者经常会问我,要学会哪些东西才能成为一个优秀的 Android 工程师?对于这个问题,他们的描述或多或少都有些差异,但是,总体来说,我们都需要学习一系列的技能,才能成为一个优秀的 Android 工程师。
在我看来,存在这样的困惑是正常的。Android 是一个巨大并且动态的生态系统,你可能需要花好几周时间去了解并学习它相关的一些工具和概念,但是最后你会发现,它们有好多都不是很重要,或者说并不是非常有用。因此,在本文中,我将分享我在 Android 开发中所使用到的重要技能,希望能够帮到你,让你把你的精力集中到重要的事情上。
所以,今天,我将献上一份《Android知识图谱》,以自身的经验 & 所见所闻,旨在告诉大家,学习Android,实际上需要学习什么内容,希望你们会喜欢。
在开始复习知识点前,要确认以下 2 点:
定位
“定位” 是指你要确定自己所处的阶段和想要达到的水平。主要包括:
-
目前是什么水平
-
有什么项目积累
-
工作项目里有什么难点
-
想找什么级别的工作
-
薪资
比如我,给自己的定位就是:现在是中级水平,常见应用开发需求基本都能解决,开源框架使用没问题,部分读了源码,工作项目里主要是混合开发比较复杂,想找有利于自己成长的、大公司中高级安卓开发工作。
亮点
有的朋友可能对 “亮点” 的定义不是很明白。“亮点” 其实就是能够把你和众多应聘者区分出来的优秀品质。
程序员面试主要考察这几点:
-
技能水平
-
学习能力
-
团队合作
-
工作心态等
如果你在其中任何一个方面都有自己的优势,就赶紧找出来,写到简历上,面试表达出来。
拿技能水平来说,根据做过项目的类型,确定自己当前擅长的点,比如你做的是电商应用,那可能就擅长混合开发、自定义 View;做的是大用户量应用,那可能就擅长监控、性能优化等等。
找到自己已有的或者该有的亮点,然后去努力掌握、精通。
知识点整理
一、架构师必备Java基础
1、深入理解Java泛型
2、注解深入浅出
3、并发编程
4、数据传输与序列化
5、Java虚拟机原理
6、高效IO
二、设计思想解读开源框架
1、热修复设计
2、插件化框架设计
3、组件化框架设计
4、图片加载框架
5、网络访问框架设计
6、RXJava响应式编程框架设计
三、360°全方位性能调优
1、设计思想与代码质量优化
2、程序性能优化
启动速度与执行效率优化
布局检测与优化
内存优化
耗电优化
网络传输与数据储存优化
APK大小优化
3、开发效率优化
分布式版本控制系统Git
自动化构建系统Gradle
四、Android框架体系架构
1、高级UI晋升
2、Android内核组件
3、大型项目必备IPC
4、数据持久与序列化
5、Framework内核解析
五、NDK模块开发(音视频系列)
1、NDK开发之C/C++入门
2、JNI模块开发
3、Linux编程
4、底层图片处理
5、音视频开发
6、机器学习
六、Flutter学习进阶
1、Flutter跨平台开发概述
2、Windows中Flutter开发环境搭建
3、编写你的第一个Flutter APP
4、Flutter Dart语言系统入门
七、微信小程序开发
1、小程序概述及入门
2、小程序UI开发
3、API操作
4、购物商场项目实战
掌握了知识点后,接下来就要针对各公司侧重内容重点复习了。
最后
都说三年是程序员的一个坎,能否晋升或者提高自己的核心竞争力,这几年就十分关键。
技术发展的这么快,从哪些方面开始学习,才能达到高级工程师水平,最后进阶到Android架构师/技术专家?我总结了这 5大块;
我搜集整理过这几年阿里,以及腾讯,字节跳动,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 PDF(实际上比预期多花了不少精力),包含知识脉络 + 分支细节。
Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view;
自定义view,Android开发的基本功。
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发;
未来的方向,高薪必会。
前沿技术;
组件化,热升级,热修复,框架设计
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。
我在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多,GitHub可见;《Android架构视频+学习笔记》
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!
%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**
当然,想要深入学习并掌握这些能力,并不简单。关于如何学习,做程序员这一行什么工作强度大家都懂,但是不管工作多忙,每周也要雷打不动的抽出 2 小时用来学习。
不出半年,你就能看出变化!