Android开发5年,分享下初级中级高级划分标准
前言
移动研发在最近两年可以说越来越趋于稳定,因为越来越多人开始学习Android开发,造成市场参差不齐。正所谓入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,并且对于初级中级高级需要怎么进行成才,很多人都比较迷惑。
Android开发5年,分享下初级中级高级划分标准这是一线互联网公司Android岗位薪资职位图谱。为了方便大家成才,我把初级、中级、高级和资深四个常见的岗位需要掌握的一些知识进行如下整理。
初级
初级研发工程师的定义是掌握基础的Android知识,能够独立完成一个功能,工作年限大概在1-2年,这个层级大部分人通过看一些资料书籍再经过项目练习很快可以达到。这个级别的人往往需要掌握如下一些技能:
- 掌握Android 四大组件知识,深入了解相关生命周期,对于Application、Fragment、Intent常见的开发知识也必须掌握。
- 掌握Android 基本布局和控件的属性和使用,常用布局有LinearLayout、RelativeLayout、ConstraintLayout等,控件有- TextView、ImageView、RecyclerView、ScrollView等。
- 对Android的资源访问使用有基本了解,了解Android针对不同国家、语言、屏幕、API的适配原理。
- 掌握android系统服务和工具类的使用,对网络访问和数据库操作有基本认知。
- 熟练掌握研发工具,如IDE、模拟器、网络代理、日志等。
中级
我对中级工程师的定义是能够熟练完成功能研发外,还需要掌握常见开源库的一些原理,并仿照开源库去造轮子练习。这个阶段的人大多工作3-5年,业务开发能力熟练,碰到任何一个问题都能够得到解决,这个级别的人往往需要具备如下技能:
- 熟悉SOLID基础设计原则,掌握23种设计模式。
- 对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。
- 对Android架构有基础了解,对apk结构和打包原理有深入了解。
- 对于Android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。
- 熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。
- 掌握Handler\AsyncTask原理,熟悉多线程开发。
- 对绘页面制原理有初步理解,能够实现一个复杂自定义控件。
- 能够熟练掌握开源库的使用,如图片库(Glide\Fresco)、网络库(Volley\okhttp\Retrofit)、工具(Dagger\RxJava\EventBus)等,能够对这些常用的库进行二次封装。
- 熟悉应用常见的优化方法,避免编写内存泄漏的代码。
高级
对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师。这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于Android系统的运行原理也比较了解。
- 掌握java高级特性,如JUC、线程池、NIO\BIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
- 对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
- 掌握热修复原理,各大厂商方案的优缺点。
- 对于Android事件分发有深入理解,重点掌握触摸事件机制。
- 深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理。
- 深入理解Android动画原理,包括补间动画和属性动画。
- 对于Android安全机制有基本认知,理解Android安全原理。
- 深入理解端上设计范式思想,如mvc\mvp\mvvm\clean-arch等。
- 理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
- 对新技术敏感(,理解掌握下一代架构dynamic feature等。
如果达到这一水平,恭喜你,你已经超过70%左右的人,但是如果要再进一步,比如架构中/开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。
专家
作为开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。
- 理解微服务、SOA思想,对于后端开发有一定涉猎。
- 了解前端研发工具和思想,知道vue react等研发框架。
- 深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。
一线互联网公司主流的Android架构师技术体系详解
以前我们一直被公司和技术牵着走,并不是自己在选择技术,而是不自觉地被推到了现在尴尬的处境。想想有多少人对于自己将来要发展的方向和技术类型进行过深入思考和比较呢?
今天,就为大家整理一份目前互联网公司最主流的Android开发架构技术。按照这个框架去完善和深入自己的技术,年薪40w又有何难呢?
1.Java语言进阶与Android相关技术核
Android应用是由Java语言进行开发的,SDK也是由Java语言编写,对于Android来说,只要SDK没有用Kotlin重写,那么Java语言是都需要学习的。而且Android APK的后台服务器程序大概率是Java语言构建,所以掌握Java也是一种必然,这就是为什么BAT面试为什么死抠你的Java水平。
Android开发5年,分享下初级中级高级划分标准2.APP开发框架体系
APP开发这块知识是现今使用者最多的,并且大多都是CV工程师,程序员界的2-8定律:80%的问题只需要使用20%的知识就可以解决,Android开发也不例外。因而,我们大部分人已经逐步变成了代码搬运工而自己却不知道。代码容易搬运,架构体系却难以复制,要成为架构师,你必须自己亲自去项目实战,读源码,研究原理。
Android开发5年,分享下初级中级高级划分标准3.性能调优
我们不仅仅对项目要运筹帷幄,还要能解决一切性能问题。只有具备深厚的代码功底,深入学习源码原理以及使用工具进行测试和检查调优,才能达到知其然,知其所以然的效果。
Android开发5年,分享下初级中级高级划分标准4.移动架构师专题项目实战
架构师不是天生的,是在项目中磨练起来的,所以,我们学了技术就需要结合项目进行实战训练,那么在Android里面最常用的架构无外乎 MVC,MVP,MVVM,但是这些思想如果和模块化,层次化,组件化混和在一起,那就不是一件那么简单的事了,我们需要一个真正身经百战的架构师才能讲解透彻其中蕴含的深理。
Android开发5年,分享下初级中级高级划分标准最后我必须强调几点:
1.搭建知识框架可不是说你整理好要学习的知识顺序,然后看一遍理解了能复制粘贴就够了,大多都是需要你自己读懂源码和原理,能自己手写出来的。
2.学习的时候你一定要多看多练几遍,把知识才吃透,还要记笔记,这些很重要! 最后你达到什么水平取决你消化了多少知识
3.最终你的知识框架应该是一个完善的,兼顾广度和深度的技术体系。然后经过多次项目实战积累经验,你才能达到高级架构师的层次。
你只需要按照在这个大的框架去填充自己,年薪40W一定不是终点,技术无止境