0
点赞
收藏
分享

微信扫一扫

鸿洋,郭霖Android 的峰顶在哪里?如何短时间成为站在这个顶峰的人!

亿奇学 2021-09-19 阅读 81

前言

如今,国内移动互联网的红利期已过,Android 开发工程师也从最初的一人难求,到现在的一个岗位百人竞争,僧多粥少的情况直接导致整个行业对求职者的要求越来越高。另外,Android 开发越来越规范,间接导致项目对质量要求的提升。内存优化、UI 卡顿优化、App 崩溃监控等性能调优也逐渐成了人手必备的技能。

只有不断提升自己的技术实力,让自己进阶为「高级/资深工程师」,你才有机会爬上 Android 的峰顶。

需要学习的知识

无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这个有所收获。

从底层能力开始,分了 4 个模块来逐步进阶到实战环节:

① JVM 必知必会:通过介绍 JVM 和 DVM ,使你对 Java 字节码与 Dalvik 字节码的执行机制有一定的理解。

② Android 核心技术: 介绍 Android 开发中常用的核心技术,比如自定义 View、Handler,以及一些开源框架的原理实现,来夯实的你的底层能力。只有底层能力足够出色,之后的进阶之路才能更轻松。

③ 源码分析: 通过剖析部分 Android Framework 源码,使你对 Activity 启动、APK 安装过程等流程了然于胸。

④ 常见问题剖析: 介绍一些项目中常见的疑难问题,使你能够对现有项目做出合理的重构优化。

知识点细分

JVM 与 DVM 必知必会

  • 程序运行时,内存到底是如何进行分配的?
  • GC 回收机制与分代回收策略
  • 字节码层面分析 class 类文件结构
  • 编译插桩操纵字节码,实现不可能完成的任务
  • 深入理解 ClassLoader 的加载机制
  • Class 对象在执行引擎中的初始化过程
  • Java 内存模型与线程
  • 既生 Synchronized,何生 ReentrantLock
  • Java 线程优化 偏向锁,轻量级锁、重量级锁
  • 深入理解 AQS 和 CAS 原理
  • 线程池之刨根问底
  • DVM 以及 ART 是如何对 JVM 进行优化的?

Android 核心技术

  • Android 是如何通过 Activity 进行交互的?
  • 彻底掌握 Android touch 事件分发时序
  • Android 如何自定义 View?
  • 为什么 RecyclerView 可以完美替代 Listview?
  • Android OkHttp 全面详解
  • Android Bitmap 全面详解

Android 源码分析

  • startActivity 启动过程分析
  • 底层剖析 Window 、Activity、 View 三者关系
  • Android 如何通过 View 进行渲染?
  • Android App 的安装过程
  • 15 分钟彻底掌握 Handler

实战常见问题剖析

  • APK 如何做到包体积优化?
  • Android 崩溃的那些事儿
  • 面对内存泄漏,如何进行优化?
  • 面对 UI 卡顿,如何入手分析解决问题?
  • Android Gradle 构建问题解析
  • MVP 中 presenter 生命周期的管理
  • 如何设计一个比较合理的 LogUtil 类?
  • Android 屏幕适配的处理技巧都有哪些?
  • 解析动态权限适配遇到的问题
  • 对于网络编程,你做过哪些优化?
  • 混合开发真的适合你吗?

进阶发展路线

性能优化

简单来说,一个APP 是需要从三个方面被关注的,业务功能、符合逻辑的交互、性能响应。如果我们在使用一个 APP 时候,经常滑动时经常卡顿、时不时崩溃、有些功能设计简直非常规,比如在 Web 网站有树层级等面包屑点击,你非要在手机也搞一个类似树级点击加载,那是不是有点强人所难了,我上拉下拉、左滑右滑不行吗,非要通过点击才行吗?那么性能优化核心是什么呢?追求快、稳、省、小,关注卡顿、内存泄漏和崩溃、代码质量和逻辑、安装包大小四个方面。

APP安全

APP从代码安全、到传输安全,再到存储安全。代码可以通过混淆、加固来保证、传输安全基本基于加密算法和Token来保证传输的唯一性、存储应用不可逆加密算法进行设置、所以掌握一些密码学理论尤为重要,起码要知道哈希散列算法,对称加密和非对称加密等一些常见的加密算法。

基础进阶

我们平常在工作中碰到的View滑动冲突问题、其实通过掌握View工作机制和Android触摸事件体系就能轻易解决掉,常见解决方式有外部拦截法和内部拦截法,基于横坐标滑动距离与纵坐标滑动距离相减得出的值,判断出是左右滑动还是上下滑动。还有对于需要开发绚丽的动画效果,那么对于视图动画和属性动画一些特性必须有一定的了解。JNI 和 NDK 开发也是比较常见,特别对于一些做 SDK 项目为主的,这一块开发流程也是需要掌握,Android 中的四大组件工作机制其实底层应用的是Binder机制,我们不妨从 AIDL 这个接口来了解 Binder。

持续集成

持续集成编译环境是敏捷开发中很重要的一个组成部分,它能够有效地提高整个团队的生产效率,最大化的减少人为的出错的可能。比如,通过代码的持续提交,可以减少代码合并的痛苦,更快地与其他人代码集成,通过集成编译,能够及早地发现代码库存在的错误,并支持产品、测试等人员及时取包进行功能验证,所以对于Git、Gradle工具、Jenkins服务器需要掌握起来。

开发语言

今年可以说是 Kotlin 年,在 Google IO 之后 Kotlin 着实风光了一把,开发者对于效率的追求是 Kotlin 如此受欢迎的最大原因,而它的势头也很不错,跨平台的野心让更多人有了使用它的理由,如今看起来,它甚至比 Swift 更有前途。既然 Kotlin 已然成为 Android 世界的头等公民,与 Java 完全兼容,我们有什么理由不去拥抱它呢。

大前端

其实移动端开发也是属于前端开发,只不过原来我们所指的前端往往都是Web的前端开发人员,开发的是网站,而移动端何尝不是一种展示载体,同样有入口,只不过相比网站端移动端具体天然的可移动性、可便捷性等特性。随着 H5 兴起,原生能实现的功能同样在 H5 端也能实现,并且在体验性方面也逐渐提高,并且H5天生就具有动态性和跨平台,这也是 H5 能够一时潮流的原因之一。

设计原则

这些设计原创才是本质,才是不变的,才是我们需要真正要掌握的,开发语言特性、开发框架发展实在是太快了,我们更不上,不是有这么一句话吗,封装具体变化的,抽象起来就行,去追寻哪些不变的内容。掌握一种设计模式其实也就掌握一种解决方案,这些都是前人总结的知识结晶,基本都是基于特定领域解决特定的问题,我们需要学会在前人肩膀上解决问题。

服务端开发

最近微服务火的一塌糊涂,虽然我们基本是做移动端开发,但是基于全栈发展的趋势,对于服务端开发势必要了解,可能没有实战项目让你真刀真枪的干,但是对于微服务的结构理论、服务与服务之间通信、聚合是什么样的流程也是需要有所耳闻,在自己擅长领域深入专研的同时横向扩展关注也是需要的,不能关起门来闭门造车,两耳不闻窗外事那是不行的。

阅读源码

对于Android源码和第三方库源码阅读,可以根据自己感兴趣的类型,选择相应的源码库或模块,给自己约定一个时间点,看完之后最后有个流程图,哪些是核心类,类与类之间都有什么关系,这些开源代码实现的机制是什么,用到哪些解决思想,这些要点最终可以通过文章输出,我觉得输出倒逼输入是一种很不错的学习方式。

移动AI

AI,也称人工智能,1956年,在达特茅斯学院举行的一次会议上正式确立了人工智能的研究领域。会议的参加者在接下来的数十年间是AI研究的领军人物,他们中有许多人预言,经过一代人的努力,与人类具有同等智能水平的机器将会出现。现在来看AI这个概念很早就存在了,之前没发展很大原因是基础设施不够完善、研究成本高,现在能够大力发展是基于我们的网络带宽变大、计算机性能提升、计算成本降低等等因素备齐了。AI是需要通过算法来落地,那么对于算法理论背景就是数学,所以想进阶AI开发,就需要去学习相关数学知识,特别是线性代数和概率论这两门,是支撑很多算法的理论知识。

目前工作问题

大厂面试题(秋招,以及金九银十我和各位伙伴分享整理)

之前因为秋招收集的二十套一二线互联网公司Android面试真题 (含BAT、小米、华为、美团、滴滴)和我自己整理Android复习笔记(包含Android基础知识点、Android扩展知识点、Android源码解析、设计模式汇总、Gradle知识点、常见算法题汇总。)

当你有了学习线路,学习哪些内容,也知道以后的路怎么走了,理论看多了总要实践的。
以上进阶BATJ大厂学习资料可以免费分享给大家,需要完整版的朋友,【点我的GitHub可以看到全部内容】。

小结

总的来说,技术发展能推动社会的进步,解放生产力,进而提高人的社会生产效率,创造价值。技术落地是需要商业应用场景配合,如何配合呢,就是通过每个不同商业模式来实现。最终一门技术是需要与具体使用业务紧密结合起来,如果脱离技术谈业务显得空洞,脱离业务谈技术显得偏理论,最好是两者相结合。这也就要求我们这些从事软件开发人员在追求技术积累的同时要注重业务积累,让业务驱动技术发展,用技术手段来解决实际业务问题,在技术积累中,辨别哪些是不变的道,哪些又是一时流行的而已,这就需要练就一双火眼金睛了。

举报
0 条评论