前几天收到一位粉丝后生的留言感慨,说自己出去面试屡屡碰壁,感觉现在Android开发岗位面试要求都好高,不知道如何提升!
确实Android开发已经不再是风口,但是,这并不是说android开发已经被淘汰,⽽是说Android开发的发展进⼊了成熟期,就像Web技术⼀样。对于我们开发人员来说,不管是什么时期,我们重要的是要把技术做好做精做深!
那成为一名合格的 Android 高级开发工程师到底需要掌握哪些技能?下面详细说下2022Android进阶技术学习路线,本文打算从4个阶段来对Android的学习过程根据脑图形式做一个全面的分析,分别为Android初级、中级、高级以及资深工程师,具体请看下面的分析,**同时每个阶段都有学习时整理的笔记手册和视频教程
打怪升级第一步—初级开发
作为应届生(已经入坑1年以上认为自己基础扎实的小伙伴可直接跳过),需要怎么学习才能成为初级工程师呢?
首先Android开发必备的底层技术必是重中之重,比如: Java序列化、注解,泛型与反射,虚拟机底层原理,Android内存原理,数据结构算法等等,毕竟BATJ这些大公司都要求有扎实的Java语言基础和虚拟机底层原理,这一个部分就是Android开发中最常用的java语言相关知识。
要想基础扎实,我给大家推荐一份Android开发进阶学习资料中的底层基础必备笔记,Java 泛型、Java 反射、Java 并发编程、Java IO 和Android虚拟机等,这些基本知识点都包括在内了
我列一下 Java 基础部分要掌握的知识点
对于应届生没怎么接触过Android的可能相对而言有点陌生,可以在闲暇时间买一些Android入门书籍、找一些Android官方文档看一看,对着例子敲代码,有了手感和经验以后就可以开始做一些界面之类的玩一玩。再然后的话可以尝试着写业务代码,不懂的可以去网上搜一搜,扩充自己的知识面。
除了官方文档,《第一行代码 Android》、《疯狂Android》也很适合刚刚入门的Android开发者。
Kotlin从入门到原理到实战模块
Kotlin在2017年被作为Android一级开发语言,又在2019年被确立为Android的首选开发语言,这门语言近些年的发展得到了前所未有的支持和关注。在一些大厂的开发岗位中也对Kotlin语言青睐有加,越来越多的岗位对Kotlin语言掌握程度提出新的要求和标准,所以这块也是非常有必要深入学习的。
打怪升级第二步—中级开发
经过1到2年的成长到达中级工程师,已经可以在公司里干很多体力活了,但是一些很重要的任务还不能一个人承担起来,这时需要学习的内容就很多了,如下所示:
Framework---->Binder--->Handler--->AMS-->PMS--->WMS--->Jetpack
Jetpack及compose模块
这个阶段是扩展技术广度和深度,深入源码学习掌握其底层原理机制。可能再这一块很多小伙伴都会有2个想法:一个是学这些有什么用,再一个就是面试问了工作用不上!
如果说有这2点想法的话,那你的思想还停留下工具人层次。我们不是为了学习源码而学习,而是关注代码的流程并尽量挖掘出对应用层开发有用的结论,从而来解决问题。到了高级开发,架构这等层次是需要解决问题的,而且支撑其做到这点的根本就是这些!
关于这一块的技术学习也整理系统的学习笔记手册,希望能帮助到那些在学习路上没有方向的小伙伴
FrameWork源码解析: Binder+Handler+Zygote+ AMS+ PMS+WMS
Jetpack compose从入门到实战
Jetpack全家桶手册(涉及Lifecycle、ViewModel、LiveData、Navigation、Room、WorkManager内核、Pagging原理、DataBinding等内容)
上面这一小阶段搞定,后面就是性能优化了,随着 Android 开发越来越规范,国内工程师的素质,以及用户对产品的要求也越来越高。这也间接导致我们对研发项目的质量要求到了近乎苛刻的地步,内存优化、UI 卡顿优化、App 崩溃监控等性能调优也逐渐成了人手必备的技能。
很多技术专家在总结Android程序员核心能力的时候都会提到至关重要的一点:精通性能优化。精通意味着:
第一,不管你去面试哪家大厂,性能应该是必问项,而且使用范围广,无论如何是避不开的;
第二,你对性能优化掌握的越深入,意味着你能做的事情越多。
我在面试的时候也经常看到一些朋友写“精通性能优化”,但大多数人对精通存在一定误区。由于业务需求,我们常常需要进行性能优化,而优化并不总是对一个单纯环境进行,是面对一个复杂的已投产系统。
对于大部分程序员来说,哪怕工作很久经验丰富,但依然会出现面对棘手问题束手无策的状况,大多是因为对出现问题的情况和处理思路模糊不清,导致此原因就是因为没有彻底搞懂底层原理。
这里分享之前整理收集的关于Android性能优化的知识脑图总结和学习手册文档!既能够夯实底层原理、性能调优等核心技术点,又能够掌握普通开发者,难以触及的架构设计方法论。那你在工作中、团队里、面试时,也就拥有了同行难以复制的核心竞争力。
掌握上面的技术后,也算是达到高级开发层次。这个时间段就要看机遇或者自身学习能力了,也许1到2年也许更久,我个人认为通过系统性的学习是可以缩短这个过程为0.5-1年的。
注意,达到高级工程师的技术水平不代表就可以立刻成为高级工程师(受机遇、是否跳槽的影响),但是技术达到了,成为高级工程师只是很简单的事。
打怪升级第三步—高级开发
成为高级工程师,也算是达到了金字塔上层。技术水平已经不错了,但是如果目标是资深工程师,为了成为Android资深工程师,需要学习的东西就更多了,并且有些并不是那么具体了。
更多是选择一个领域深度发展,比如音视频开发领域,架构领域等等
音视频开发进阶
互联网信息的传播与娱乐方式历经了从文字到图片再到音视频的转变,现如今以抖音为首的各类视频平台更是如日中天,特别是5G时代的全面到来,互联网将会迎来对音视频开发者的需求井喷。
现在市场中使用音视频技术的公司太多了,大到全民观看短视频,小到直播带货,每个人使用手机的时间也基本被音视频占据着。
在目前的大环境下,如果app只是图文的方式展现,已经远远不能满足用户的需求,在5G普及过程中,这种app也会变得越来越少,所以各家公司都在不断的往音视频方向转型,这就必然的催生出大量音视频工作岗位,但相关的人才却是少之又少,音视频相关岗位的薪酬自然是水涨船高。
音视频技术知识点汇总:C/C++、JNI、H.265/H.265、MediaCodec、音视频剪辑、音视频直播、OpenGL与音视频解码、OpenGL特效、FFmpeg万能播放器、Webrtc音视频通话等
对标字节T3-1架构师 架构技术
“没有最好的架构,只有最合适的架构。”
架构这块主要是对各大主流框架和一线大厂核心框架进行剖析,理解其中原理,并学习架构设计思想。我们在架构设计中最本质的目的就是管理复杂度,你听过的各种思想、原则、方法大多都是为了控制复杂度而设计出来的。
而提升架构设计硬实力,唯有不断地实战,任何一个架构师都是身经百战的老兵!
配套架构设计思想、项目实践、演进笔记:
打怪升级第四步—技术演伸,资深移动开发工程师
同时还有拓展技术广度和Flutter跨平台开发、Android车载开发及前沿技术
Flutter 3.0 混合式开发
随着移动终端的多样性发展,一套代码适配多个平台已经成为移动开发者的终极梦想,跨平台技术也一直在发展中。
目前为止,我们移动端的跨平台开发技术经历了三个阶段,这三个阶段的代表框架分别是:Cordova、React Native 、Flutter 。
其中,Cordova虽然实用方便,但是受制于 WebView 的性能瓶颈。React Native 利用 JS 引擎实现了跨平台能力,将 JS 控件,对应解析为平台原生控件进行渲染,虽然极大程度上实现了性能的优化与提升,但也同样存在性能等限制。
而Flutter 另辟蹊径,只要求平台提供一个 Surface 和一个 Canvas就可以了。在跨平台技术追求的 性能、复用、高效 这三个终极目标上,Flutter占据了至高点。而且,Flutter在大厂的面试过程中不仅经常被作为加分项,在某些岗位甚至是必问的内容,非常有必要深入了解。
Flutter知识点汇总:
Android车载系统开发
- 车载 Framework固件烧写
- 系统 SystemUI
- 桌面程序-Launcher
- 底层 Window Display
- 底层协议 USB通信
- 硬件设备与串口通信
- 安卓系统蓝牙通信
定期面试:
光学习了一线大厂的技术还不够,如何了解当下Android市场需要哪些技术呢?如何明确自身技术薄弱点呢?
建议大家每隔一段时间就要出去面试一轮,不一定是为了找到好的工作,重点是要知道自己的优缺点是什么?知道市场目前需要什么样的人?
定期的面试让你及时了解当下市场需要哪些技术,也更加容易确定自身的短板在哪,同时,后续也可以更加有针对性的学习提升,并且在面试过程中遇到了你不太擅长的点,你也可以借机向面试官提问,趁机学习一波大厂的技术操作或是对底层原理的理解
而且,要是运气好,直接拿到了高薪Offer,岂不是更赚?
同样,因为面试你的也是同行,在沟通交流过程中也能够碰撞出不同的思想。试想?如果你一直待在一家公司,都不知道外面的情况如何的话,那是非常可怕的,至少我这么认为。
报名培训机构:
我们对于培训机构总是褒贬不一,但是,不可置否,自己摸索和有人带你肯定是完全不一样的,学会站在巨人的肩膀上前行,要比自己埋头摸索要快很多。
多看大佬的学习笔记,学习大佬的设计思想:
比如上面有提到的《Android开发核心知识点笔记》、《大厂架构演进笔记》等等,每一个都是行业精品中的精品,如果只凭去百度学习的话,搜索出来的资料内容大多杂乱不系统,很多内容都是过时或者错误的,如果学习的方向不对,那不管有多么努力,注定是学不好的。
而且,笔记作者都是在大厂工作,会不定时的更新资料内容,让大家能够及时的学习大厂的先进技术与架构思想。
配合各种资料辅助学习:
在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘。不少内容都是针对单个的技术问题,无法直接用到项目中去,并且因为很多内容都是几年前的,目前可能已经无法使用了,更不用说代码质量参差不齐,直接生搬硬套也无法适应项目需求迭代,非常不方便。
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。