ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

34岁Android开发大叔感慨,进阶加薪全靠它!

2021-07-06 22:53:36  阅读:124  来源: 互联网

标签:Java 进阶 Kotlin 34 程序员 Android 技能


# 从初中级到高级,移动端程序员的进阶宝典 **想要成为一名优秀的Android开发,你需要一份完备的 知识体系,在这里,让我们一起成长为自己所想的那样。** 下面我们就以 Android 开发为例,从硬技能和软技能两方面,梳理大前端趋势下移动端程序员从初级到高级进阶所需的技能点,并且推荐一些实用的书籍资料。 **(一) 硬技能:专业的技术知识** **1. Java / Kotlin开发语言** **(1) Java** **常用数据结构:**ArrayList、Vector、CopyOnWriteArrayList、HaspMap、ConcurrentHashMap、HashTable 等使用场景。 **JVM 虚拟机**包括 Java 内存管理,GC 垃圾回收机制,类加载机制。推荐书籍:《深入理解 Java 虚拟机 JVM 高级特性与***实践》。 **多线程编程,**包括线程池,锁机制,线程同步 。推荐书籍:《Java 并发编程实战》和《Java 多线程编程核心技术》。 **AOP 编程实现**,包括 JDK 动态代理实现,ASM 直接操作字节码、CGLIB 实现,其原理封装了 ASM,使用更方便。 **Javassist**:在字节码加载前直接修改需要切入的方法,以及注解处理器 APT,这在 Android 中开源的库应用较多,比如 DataBinding , ButterKnife, EventBus3 等等。 **异常处理 Exception**,包括检查性异常、运行时异常处理。 **IO 流相关**,包括堵塞型 IO 和非堵塞型 IO。 **Java 的一些高性特级**,比如反射、代理、泛型、枚举、正则表达式等等;同时了解一下 jdk1.8,1.9,1.10 等新特性。相关书籍比较多,推荐**《Thinking in Java》**和**《Effective Java》**。 **(2) Kotlin** Kotlin 是一个基于 JVM 的新编程语言,在 Google IO 2017 中被 Google 宣布成为 Android 官方开发语言。 **Kotlin 有哪些优点?** **①简洁性: **提供了很多标准函数,大大减少样板代码的数量。 **②安全性:**避免空指针异常等错误。 **③互操作性:**充分利用 JVM、Android 和浏览器的现有库。 **④工具友好: **可用任何 Java IDE 或者使用命令行构建。 在 Kotlin 中要**树立函数式编程思想**。把函数理解为一个值到另一个值的映射关系,以函数作为单元来处理各个业务逻辑,函数既可以做参数,也可以作为返回值。多使用 Kotlin 提供的标准函数,比如 let、run、with、apply、also、 Lambda 表达式。尽量使用闭包和高阶函数。 Kotlin 的另一个突出特点是**协程**,为设计异步、非阻塞的程序提供了强大的范式。协程是一种轻量级的线程,它提供避免阻塞且更廉价可控的操作: 协程挂起。将复杂异步操作放入底层库中,程序逻辑可顺序表达,以此简化异步编程。 **简单说下 Kotlin/Native,它的设计初衷是支持在非 JVM 虚拟机平台环境的编程,如 iOS、嵌入式平台等,同时支持与 C 互操作。推荐书籍:** **《Kotlin 实战》**。 **2. Android 进阶技术点** **进程相关**,包括 App 进程原理以及 AIDL 原理。 **性能优化**,包括:内存,cpu,耗电量、网络请求、UI 布局、线程、数据库等优化方法以及优化工具的使用。 **Android 源码相关**,包括:Binder 机制,Activity 启动流程,Handler 原理,AMS ,PMS,WMS 原理,View 的绘制流程,Touch 事件传递机制等等。 **编译打包流程**,从 java/kotlin 源码到最终形成 APK 的过程。 **热修复的实现原理**,目前热修复框架的种类繁多,常见的包括底层替换、类加载和 Instant Run 方案。 **逆向工程原理**,主要是为了防止 apk 被反编译破解,以及了解 apk 加固方案。 **插件化**,目前方案同样很多,主流的技术实现是 Hook 方式,注册 Activity 进行占坑,使用占坑 Activity 通过 AMS 验证,还原插件 Activity,其他组件的原理也大致类似。 **NDK 开发**,调用 JNI 以及回调 Java 的方式。 **自定义控件**,需要注意 onMeasure,onLayout,onDraw 的调用时机,以及 Touch 事件分发机制。 **动画 View Animation**,视图动画在很早的 Android 版本系统中就已经提供了,只能被用来设置 View 的动画。 **属性动画 Property Animation**,只对 3.0 以上版本,可以设置给任何 Object,包括还没有渲染到屏幕上的对象。这种动画是可扩展的,可自定义任何类型和属性的动画。 **Webview 中 Native JS 交互**,常用的 JSBridge 等。 **Gradle 的特性以及 DSL 语法**,比如 Gradle Transform API 的使用,它允许第三方插件在 class 文件转为 dex 文件前操作编译好的 class 文件。利用这一特性,我们可以在代码编译阶段实现代码注入或者代码修改,这也是很多埋点技术和热修复技术的基础。 **安全性:**HTTPS 通信原理,数据加密方式,包括 MD5,RSA 等,webview 安全性,代码混淆,数据验签,组件通信安全,服务器通信。 **CI 持续集成**:Jenkins ,Gitlab CI 等搭建持续集成开发工具。 **Sersor 传感器**:包括陀螺仪,加速传感器,方向传感器,重力传感器,光线传感器等。 **Android 开发国际化**。 **ART 和 Dalvik 虚拟机的区别**,主要是 AOT,Ahead-Of-Time 预编译。 **熟悉 DEX 文件结构。** **单元测试**:JUnit4,AndroidJUnitRunner,Mockito 框架的使用。 **自动化测试**:Monkey / Monkey Runner ,Espresso ,UI Automator 等。 **掌握模块化开发方式**:主要注意分好层、模块间跳转通信。 **代码重构能力**,推荐书籍:**《重构改善既有代码的设计》、《重构与模式》** **Google 动态化框架 App Bundles**。 **Jetpack**,Google 推出的新一代组件、工具和架构指导,旨在加快 Android 应用开发速度。Jetpack 主要分为 4 部分: ![img](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625582523822094.jpg) 大前端趋势下移动端程序员要凉?这些进阶技能助你逆袭 **Android开发常用的第三方库:** 响应式编程:RxJava、RxAndroid,Google 的Agera 网络库:包括Retrofit,OkHttp,Volley 图片:Fresco,Gilde,Picasso 依赖注入:Dagger2 数据库:Realm,ORMLite,GreenDAO,ObjectBox 数据总线:EventBus,otto 内存泄漏检测工具 LeakCanary 等 *各个技能点如果详细拓展开,会形成相当庞杂的一张知识图谱,建议大家自行梳理总结消化。* **3. OOAD 和设计模式** 在架构设计方面,首先要掌握的就是面向对象的开发和设计。具体知识点包括: **面向对象三大特性:**封装,继承,多态。 **五大基本原则(SOLID 原则)**,单一职责原则,开放封闭原则,里氏替换原则,依赖倒置原则,接口分离原则。 **23 种设计模式**:常用的有工厂、单例、适配器、桥接、组合、代理、命令、观察者、策略、状态模式等等。 **4. APP架构设计** 包括 MVC、MVP、MVVM、MVI、VIPER、Clean Architecture、Flux。目前除了 MVC 外 MVP 和MVVM 用得比较多,具体的架构设计还要结合业务去考虑。 **(二) 软技能** 人在职场,行走江湖,想进阶高级程序员光有技术深度是不够的,还需要掌握众多软技能,注意综合职业素养的磨练。有很多人一开始重视程度不足,在职场后半段的上升过程中,容易遇到瓶颈。 下面是我个人总结出的高级程序员必备软技能,供大家参考。 **1. 快速学习能力:**包括技术深度和广度,能够不断探究新技术,不断学习。 **2. 沟通能力:**加强表达、阅读、编写能力,即使在技术发达的今天也绝不会过时。因为任何方式的沟通在企业内部都是非常有必要的。 **3. 团队协作能力:**开发人员很容易陷入孤立的人际交往状态,但开发工作永远都不可能是一个人完成,只有成员真正能融入团队内,顺利与其他同事沟通合作,才能体现出其真正的价值,被列为未来职位晋升候选人的几率也更大。 **4. 时间管理能力:**可以参考时间管理「四象限法则」,有重点地把精力和时间集中用于处理重要但不紧急的工作,这样可以做到未雨绸缪。 ![img](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625582523429361.jpg) 大前端趋势下移动端程序员要凉?这些进阶技能助你逆袭 **5. 影响力:**一方面是业务影响力,另一方面是技术影响力。其中,提高技术影响力的方式包括:多参与技术分享,把积累的知识进行总结和传播;参加技术方案评审,把技术经验分享出去;帮助新同学解决技术问题;在博客、Github、StackOverflow 等平台上对外分享。 **6. 文档编写能力:** **代码注释**。很多程序员很少写注释,或者注释过多,都是不合适的。多参考开源项目的注释规范。 **编写技术设计文档**。包括流程图,类图,功能时序图等等。 ### 最后 感觉现在好多人都在说什么安卓快凉了,工作越来越难找了。又是说什么程序员中年危机啥的,为啥我这年近30的老农根本没有这种感觉,反倒觉得那些贩卖焦虑的都是瞎j8扯谈。当然,职业危机意识确实是要有的,但根本没到那种草木皆兵的地步好吗? Android凉了都是弱者的借口和说辞。虽然 Android 没有前几年火热了,已经过去了会四大组件就能找到高薪职位的时代了。这只能说明 Android 中级以下的岗位饱和了,现在高级工程师还是比较缺少的,很多高级职位给的薪资真的特别高(钱多也不一定能找到合适的),所以努力让自己成为高级工程师才是最重要的。 所以,最后这里放上我耗时两个月,将自己8年Android开发的知识笔记整理成的Android开发者必知必会系统学习资料笔记,上述知识点在笔记中都有详细的解读,里面还包含了腾讯、字节跳动、阿里、百度2019-2021面试真题解析,并且把每个技术点整理成了视频和PDF(知识脉络 + 诸多细节)。**[【点击这里】](https://docs.qq.com/doc/DSkNLaERkbnFoS0ZF)就可以免费领取了。** ![](http://www.icode9.com/i/li/?n=2&i=images/20210706/1625582524120453.jpg) 以上全套学习笔记面试宝典,吃透一半保你可以吊打面试官,只有自己真正强大了,有核心竞争力,你才有拒绝offer的权力,所以,奋斗吧!骚年们!千里之行,始于足下。种下一颗树最好的时间是十年前,其次,就是现在。 最后,赠与大家一句诗,共勉! > 不驰于空想,不骛于虚声。不忘初心,方得始终。

标签:Java,进阶,Kotlin,34,程序员,Android,技能
来源: https://blog.51cto.com/u_14932157/2994538

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有