网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
中级
我对中级工程师的定义是能够熟练完成功能研发外,还需要掌握常见开源库的一些原理,并仿照开源库去造轮子练习。这个阶段的人大多工作3-5年,业务开发能力熟练,碰到任何一个问题都能够得到解决,这个级别的人往往需要具备如下技能:
-
熟悉SOLID基础设计原则,掌握23种设计模式。
-
对于研发语言特性java/kotlin有深入理解,如反射、动态代理、apt等。
-
对Android架构有基础了解,对apk结构和打包原理有深入了解。
-
对于Android各个版本特性有基本了解,如MD设计、权限管理、doze模式等。
-
熟练掌握各种研发调试工具,如git、gradle、mat、layout inspector等。
-
掌握HandlerAsyncTask原理,熟悉多线程开发。
-
对绘页面制原理有初步理解,能够实现一个复杂自定义控件。
-
能够熟练掌握开源库的使用,如图片库(GlideFresco)、网络库(VolleyokhttpRetrofit)、工具(DaggerRxJavaEventBus)等,能够对这些常用的库进行二次封装。
-
熟悉应用常见的优化方法,避免编写内存泄漏的代码。
高级
对于高级,就不仅限于功能和业务开发,还需要深入理解Android系统的运行原理,达到融会贯通,部分可够作为Android端架构师。这一阶段的人大多工作5-8年,具备开源库设计能力,同时对于Android系统的运行原理也比较了解。
-
掌握java高级特性,如JUC、线程池、NIOBIO等;掌握jvm虚拟机知识,如内存模型、GC原理、类加载机制、线程模型等。
-
对Android运行环境有深入理解,理解Android沙盒机制,掌握AIDL原理及Binder通信原理,了解app和activity启动原理。
-
掌握热修复原理,各大厂商方案的优缺点。
-
对于Android事件分发有深入理解,重点掌握触摸事件机制。
-
深入理解Android绘制原理,理解VSYNC和surface机制和窗口原理。
-
深入理解Android动画原理,包括补间动画和属性动画。
-
对于Android安全机制有基本认知,理解Android安全原理。
-
深入理解端上设计范式思想,如mvcmvpmvvmclean-arch等。
-
理解架构演进,有良好的分层和拆分思路,掌握模块化、插件化、动态部署等。
-
对新技术敏感(,理解掌握下一代架构dynamic feature等。
如果达到这一水平,恭喜你,你已经超过70%左右的人,但是如果要再进一步,比如架构中/开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。
专家
作为开发专家,那么除了理解Android的一些核心原理外,还需要具有架构设计能力,能够从更高层面看待问题,理解整个系统的设计。
-
理解微服务、SOA思想,对于后端开发有一定涉猎。
-
了解前端研发工具和思想,知道vue react等研发框架。
-
深入理解跨端技术,如phonegap、weex/RN flutter、小程序快应用等。
最后
不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。
重要知识点
下面是有几位Android行业大佬对应上方技术点整理的一些进阶资料。
高级进阶篇——高级UI,自定义View(部分展示)
UI这块知识是现今使用者最多的。当年火爆一时的Android入门培训,学会这小块知识就能随便找到不错的工作了。不过很显然现在远远不够了,拒绝无休止的CV,亲自去项目实战,读源码,研究原理吧!
- 面试题部分合集
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!