分享一下Android开发11年,我眼中程序员的三六九等
前言
移动研发在最近两年可以说越来越趋于稳定,因为越来越多人开始学习Android开发,造成市场参差不齐。正所谓入门容易成长很难,对未来比较迷茫,不知道自己技能该怎么提升,并且对于初级中级高级需要怎么进行成才,很多人都比较迷惑。
这是一线互联网公司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架构师/技术专家?我总结了这 5大块;
Java语言与原理;
大厂,小厂。Android面试先看你熟不熟悉Java语言
高级UI与自定义view;
自定义view,Android开发的基本功。
性能调优;
数据结构算法,设计模式。都是这里面的关键基础和重点需要熟练的。
NDK开发;
未来的方向,高薪必会。
前沿技术;
组件化,热升级,热修复,框架设计
文末:
其实成为一名优秀的程序员并不难,文末贴上知乎大佬的一个回答。
怎样才能成为一名优秀的程序员:
广度与深度难以兼顾。
计算机专业基础课,如OS,数据库,网络,算法等,抽象且难以理解,大学时不学,以后就很难拾起来。
既强调动手,又强调抽象,二者缺一不可。但善于思考的人,往往喜欢谋定而后动;善于行动的人,往往没功夫回顾思考。
对于要先理解才动手的人,是种折磨。往往做了一两年,才突然理解某个概念。
对于初学者,难以区分学的知识,还是配置。
杂讯太多,不知道学什么。
总得来说,编程里最简单的地方往往价值不高,困难的地方这次避开了,下次还是要理解,逃也逃不
分享一下Android开发11年,我眼中程序员的三六九等相关推荐
- Android开发11年,分享一下我眼中程序员的三六九等,2021最新阿里Android面试流程
高级 对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师.这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于And ...
- Android开发11年,分享一下我眼中程序员的三六九等,太现实了
高级 对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师.这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于And ...
- android开发实战经典!帮助程序员提高核心竞争力的30条建议,灵魂拷问
现在的IT行业竞争压力越来越大,尤其是Android开发行业.而很多Android程序员却每天都在重复CRUD,原地徘徊! 今年年初,你就想改变现状,于是在网上刷了大量面试题,强行记下之后,开始参加面 ...
- Android开发11年,分享一下我眼中程序员的三六九等,android基础考试题及答案
深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理. 深入理解Android动画原理,包括补间动画和属性动画. 对于Android安全机制有基本认知,理解Android安全原 ...
- Android开发11年,分享一下我眼中程序员的三六九等,阿里Android岗面试百题
高级 对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师.这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于And ...
- iPhone开发入门(1)—-程序员眼中的iPhone
http://blog.csdn.net/itudou_2010/article/details/5492272 iPhone开发入门(1)--程序员眼中的iPhone 博主:易飞扬 原文链接 : h ...
- iPhone开发入门(1)----程序员眼中的iPhone
自去年 iPhone 面世以来,开创了移动设备内容服务的一种新的模式--程序商店(App Store).它极大地降低了移动设备应用程序开发的成本,即使普通人也能进入这个市场.就像在PC上开发应用程序一 ...
- 【2020年11月】编程语言 / 程序员工资排行榜
数据来自:https://www.tiobe.com/tiobe-index/ 自TOIBE编程语言排行榜发布20年以来,C和Java语言一直占据排行榜第一.第二的位置,不过这一局势在本月发生了扭转, ...
- 为什么使用C#开发软件的公司和程序员都很少?
手记 /后端开发 为什么使用C#开发软件的公司和程序员都很少? 2018.05.31 10:15 1094浏览 字号 在职位搜索网站indeed,职位关键字与数量的对应关系如下(搜索时实时数据): J ...
- 三伏天里小试牛刀andriod开发 #华为云·寻找黑马程序员#
三伏天里小试牛刀andriod 开发 #华为云·寻找黑马程序员# 2019年07月,北京,三伏天,好热啊.越热自己还越懒得动换(肉身给的信号),但是做为产品经理/交互设计师的,总想着思考些什么(灵魂上 ...
最新文章
- oracle 撤销回退,Oracle 回滚(ROLLBACK)和撤销(UNDO)
- Hadoop “Unable to load native-hadoop library for y
- 217. Contains Duplicate - LeetCode
- 公钥密码--Paillier
- python +keras实现图像分类(入门级例子讲解)
- devexpress内置图片的位置_向微思WGIS中叠加位图图片
- Prosjecni(构造)
- 安卓超过两行就加省略号_基础标点符号使用规则详解—8.省略号
- 漫步数理统计十——连续随机变量(上)
- oracle 字符串 回车,如何去掉字符串中的回车键
- 盘点国内外那些有野心的BI公司
- spring Bean的作用域(注解 单例 多例)
- 智能家居火了这么久 何时到我家?
- Vivado安装教程详细版
- 开源PDF文件处理工具箱
- [数字图像处理·冈萨雷斯 ] 图像文件格式
- 使用管道--过滤器风格设计软件
- 服务器:CPU虚拟化_服务器虚拟化技术
- kafka之重新分配分区副本kafka-reassign-partitions命令
- 微信小程序--七彩爱心加载动画