Android架构师成长之路,如何成为一名Android架构师?

Posted River_ly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android架构师成长之路,如何成为一名Android架构师?相关的知识,希望对你有一定的参考价值。

最近网上有篇热帖引起了互联网圈内程序员的议论。

其实倒挂的现象确实存在,一般有两种情况:

一种是应届生倒挂,这个一般可以归因于每一年大厂对外录取新同学的基本薪资可能有所变化。

而一年的时间,也很难有涨薪的情况,所以可能会出现例如:在相同水平线的情况下,16 年入职的新同学,没有 17 年入职的同学薪资高。

还有一种情况在于,同一级别下,老员工没有跳槽过来的员工薪资高,这个主要是跳槽 buff 加成。

“互联网大年”或者“跳槽 buff”确实能够让一些同学尝到一点甜头。

但是跳槽这种事,需要足够年限的间隔,以及个人技术水平的跨越,如果你不注意这两点很可能适得其反。

所以完美的解法应该是在尽可能短的时间内,去不断提升个人的技术水平。

例如现在 android 新技术非常多,这些新技术的发展,对于我们来说既是机会,也是挑战。不断学习新知识是不可避免的,不过更重要的是需要确立自己未来的发展方向以及提升自身竞争力。

对于移动端研发来说,长期的职位发展一般为:

初级研发工程师

->高级研发工程师

->资深研发工程师

->技术专家/架构师/技术经理

->…

大多数情况下,在大厂到了技术专家/架构师这个级别就已经非常厉害了。

那么话说回来,什么是架构师?成为一名优秀的移动端架构师又需要具备哪些能力呢?

架构师是一个最终确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。

要想成为一名优秀的移动端架构师,不仅要有硬技能,还要有软技能。

作为一名普通研发,又该如何迅速逆袭成为移动端架构师呢?

通常来说至少需要掌握下面这些技术:

项目开发必备底层技术

Android以Java语言为基础,以虚拟机为核心,经过Daivlk虚拟机再到Art虚拟机演变,所以需要学两大底层:一个是Java语言底层,一个是虚拟机底层

Java底层涵盖:Java序列化、泛型与反射、JDK高级动态代理、 Java高级并发原理详解。

虚拟机底层涵盖:虚拟机层类加载机制、Android虚拟机原理剖析、dex运行机制,Android内存,高级数据结构与算法

Android应用是在虚拟机上运行的,如果不清楚虚拟机的底层原理,我们将很难理解APP的运行过程,同时Android也是由java语言开发的。

那么Java中哪些东西是我们Android程序员需要学习的呢?

由于很多Android程序员习惯了 C V 代码块,所以与Android中比较相关的稍微比较难的Java基础几乎都是一个门槛,像泛型原理、多线程底层、反射、虚拟机、注解、序列化等

面试过程中:BATJ这些大公司都要求有扎实的Java语言基础和虚拟机底层原理,这一个部分就是Android开发中最常用的java语言相关知识。在这个部分里面,结合了Dex文件加密实战和热修复实战可以让大家深刻体会Java语言体系的重要性以及在Android开发中的地位

Android R FrameWork源码与UI

在Android中,Framework泛指系统架构层。Framework的中文意思是“框架”,在软件开发中通常指开发框架,在一个系统中处于内核层之上,为顶层应用提供接口,被设计用来帮助开发者快速开发顶层应用,而不必关心系统内核运行机制,通常Framework都会隐藏main函数等应用程序必须的组件,开发人员只需把精力放在功能代码的实现上。说简单点,Framework具体的工作也就是为Android应用开发的开发人员提供了一系列的服务和API的接口。

UI其实并不是单纯指用户看到的效果。因为在Android开发中,每个控件背后都有一套深层次的体系在支撑,自然而然,会UI不单纯指的是会自定义控件,我们还应该知道自定义控件背后的执行流程,包括从Activity的创建,XML的解析,到每个控件的测量、布局、绘制。当然在中间还夹杂着比如动画、事件分发机制、嵌套滑动机制等知识点。还有谷歌提供的一些UI框架也是我们要掌握的对象,比如Jetpack组件库、Material Design等。

大厂内部APP调优方案

**性能优化是一个项目必须要经历的过程,你的应用好与坏都是在用户使用的过程中反映出来的,如果性能优化没有做好,对于你的应用来说影响是非常大的。**尤其是现在的Android市场竞争非常激烈,如果你的应用体验没有竞品的好,那么用户流失是必然的。

性能优化不是一件简单的事情,每个应用的性能好与坏无法由一个人来决定,因为性能优化的维度有太多了,从我们项目的整体架构,到我们代码的每一个细节,再到应用使用环境的测试,只有步步为营,才能做好一个项目的优化。大部分开发者把性能优化指向与不闪退就行,但是实际上性能优化包含了很多方面,比如从简单的启动优化、 UI优化、 卡顿优化、 崩溃优化、 安全性优化,到深层次的弱网优化、 大图加载优化、 储存优化、 高效传输优化、 极限瘦身优化,再到实际开发过程中的OOM问题原理解析、 ANR问题解析、 Crash监控方案。

要想把这些优化流程做好,我们不仅从项目架构、代码规范等方面入手,还要学会利用第三方的检测工具来检测项目性能,最主要是,我们需要一套完整的性能优化方案,这正是我们所缺少的,所以我们必须要把缺少的补上, 打造一套真正的完整的性能优化体系,把性能优化流程化、常态化。

引领5G时代的高级音视频

为什么现在各大企业都需要NDK优先?以NDK开发作为人才筛选条件之一?就在于NDK具有不可替代性。

这里并不是说某些功能只能使用C/C++实现,就比如音视频开发,实现相关的音视频数据的编解码,其实就是进行字节操作使用算法进行数据压缩,难道就不能用Java实现吗?其实是可以的。但是java是需要虚拟机解释执行的字节码,而不是能够直接执行的机器码。因此针对这种非常庞大密集的计算,性能就完全比不上C/C++了。使用java开发的功能执行可能耗时太久,甚至都无法忍受。这也是为什么关于音视频的编解码算法的实现都是使用C/C++。

从未来的大趋势来看,随着5G时代的到来,音视频慢慢变成人们日常生活中的必需品。除了在线教育、音视频会议、即时通讯这些必须使用音视频技术的产品外,其它的产品也需要加入音频、视频元素。

对标腾讯T3.3架构师

没有一个架构师不是从实战中磨砺出来的,从设计思想到各大开源框架的底层原理,都需要有很深入的了解,后续也会需要自己手写一个更加贴近与项目真实情况的框架以获得更好的性能和可扩展性。

Kotlin入门到精通

kotlin作为Google官推的“亲儿子”,近几年也是一个很火热的话题,虽然还有一部分Android开发者没有接触过,但奉行“可以不用,但不能不懂”的原则,我们也需要对其有着一定了解,以便于未来有需要时能够快速切换。

Flutter2.0、混合式开发

大前端作为一种趋势,相信很多开发者都或多或少有些了解了,“一处编写,处处运行”极大的节省了企业的人力物力,其稳定性也已经受住了很多考研,目前很多大厂都已经正式拥抱了Flutter,非常有必要深入。

如何达到上述架构师要求呢?

  • 有架构师带着学

成为架构师之所以难,除了硬件要求之外,真实的架构经验非常重要!其他优秀架构师通常都是经历了很多实战,他们的经验对你来说就是最宝贵的财富,很多问题不可以想当然的去做,相信大家有听过一句话“没有最好的架构,只有最合适的架构”。在外行人眼里看架构,可能是各种不合理,但在一个架构师眼里,综合考虑各种因素之后,这种“不合理”的架构才是优秀的解决方案,当你能够理解他这么做的原因,那对于我们未来成为架构师是有着质的帮助

  • 通过知识导图+资料+视频资源搭配自身实战学习

配合一套专业的技术体系,结合相关配套资料,并且有对应的教学视频,成体系的进行学习,讲各项技术融入进实战当中,可以更加快速的理解并获得成长

这篇文章到这里就已经结束了,如果觉得本文对你有帮助,不妨给我点个赞,你的点赞是对我创作最大的鼓励!

以上是关于Android架构师成长之路,如何成为一名Android架构师?的主要内容,如果未能解决你的问题,请参考以下文章

架构师成长之路:到底啥是架构设计?该如何理解架构设计?

如何才能真正的提高自己,成为一名出色的架构师?

架构师成长之路--如何成为架构师(方法)

架构师进阶之路

优秀软件架构师成长之路

优秀软件架构师成长之路