JsonChao 的 2020 年终总结

前言

这一年,是动荡的一年,但也是逆风翻盘的一年。一颗种子要想成长为苍天大树,必须具备坚韧不拔的意志,这一点比学习本身更加重要。下面,我们就来回顾一下我的2020年主要做了哪些事情。

一、回顾我的2020年

第一季度(1-3月):

1、深入学习Android性能优化 & 开源 Awesome-Android-Performance

众所周知,性能优化是Android细分领域中最难且也是知识面涉及最深和最广的方向之一,但是如果你想要成为一名顶尖的Android工程师,性能优化细分领域则是非常好的实战与理论结合的场所。因此,为了将性能优化涉及的各个层面的知识成体系地融合到一起,笔者创建了Awesome-Android-Performance这个项目,希望能带领读者从Android系统架构中的应用层、Framework层、Native层、ART/Dalvik甚至Linux内核层这一垂直领域去深入探索与挖掘性能优化的极致技术。目前,除了IO优化与存储优化之前,其它的性能优化文章均已发布,内容如下:

JsonChao 的 2020 年终总结_第1张图片

一、稳定性优化

深入探索Android稳定性优化(已完成)

Android稳定性优化是一个需要长期投入,持续运营和维护的一个过程,上文中我们不仅深入探讨了Java Crash、Native Crash和ANR的解决流程及方案,还分析了其内部实现原理和监控流程。到这里,可以看到,要想做好稳定性优化,我们必须对虚拟机运行、Linux信号处理和内存分配有一定程度的了解,只有深入了解这些底层知识,我们才能比别人设计出更好的稳定性优化方案。

二、启动速度优化

深入探索Android启动优化(已完成)

想要极致地提升App的启动速度,我们需要有一定的广度,在文中引入了始于后端的AOP编程来实现无侵入式的函数插桩,也需要有一定的深度,从里面的探索之旅来看,我们先后涉及了Framework层、Native层、Dalvik虚拟机、甚至是Linux IO和文件系统相关的原理

三、内存优化

Android性能优化之内存优化(已完成)

内存优化可以说是性能优化中最重要的优化点之一,可以说,如果你没有掌握系统的内存优化方案,就不能说你对Android的性能优化有过多的研究与探索。

深入探索Android内存优化(已完成)

真正的将内存优化做到极致,还不点击去一探究竟?

四、绘制优化

Android性能优化之绘制优化(已完成)

首先,让我们从全局的角度去认识绘制优化,并为其打下良好的优化基础。

深入探索Android布局优化(上)(已完成)

深入探索Android布局优化(下)(已完成)

布局优化看似是Android性能优化中最简单的专项优化项,但是笔者却花费了整整三万字的篇幅才能比较完整地将其核心知识传授给大家。因此,不要小看每一个专项优化点,深入进去,必定满载而归。

深入探索Android卡顿优化(上)(已完成)

深入探索Android卡顿优化(下)(已完成)

卡顿优化可以说是Android性能优化中最复杂的环节,笔者从卡顿优化分析方法与工具、自动化卡顿检测方案及优化、ANR分析与实战、卡顿单点问题检测方案、界面秒开、优雅监控耗时盲区等多个维度来展开对App的卡顿优化进行深入讲解,相信读者必定有所收获。

五、包体积优化

深入探索Android包体积优化(已完成)

如果要想对包体积做更深入的优化,我们就必须对 APK 组成,Dex、So 动态库以及 Resource 文件格式,还有 APK 的编译流程 有深入地了解,这样我们才能有 足够的内功素养 去实现包体积的深度优化,而此文将会带我们深入其中。

六、网络优化

《深入探索 Android 网络优化(一、网络核心筑基篇)》(已完成)

《深入探索 Android 网络优化(二、网络优化筑基篇) 》(已完成)

《深入探索 Android 网络优化(三、网络优化篇) 》(已完成)

网络优化一直被认为是移动优化水最深的领域之一,因此,我们有必要对其进行深入学习。

七、耗电优化

深入探索 Android 耗电优化(已完成)

在 Android 应用开发中,我们需要考虑如何优化电量使用,让我们的 App 不会因为电量消耗过高被用户排斥,或者被其他安全应用报告,以此确保用户黏性。因此,电量优化也是需要去考虑的。

第二季度(4-6月):

1、深入探索编译插桩与 Gradle 自动化构建技术技术

现如今,Gradle + 编译插桩 的应用场景越来越多,无论是 各种性能优化中的插件工具制作,还是用来支持 插件化、热修复的各种插件,都会使用到这个组合,因此,掌握 Gradle + 编译插桩 技术能够大大提升我们的技术竞争力。内容如下:

编译插桩技术

深入探索编译插桩技术(一、编译基础)(已完成)

深入探索编译插桩技术(二、AspectJ)(已完成)

深入探索编译插桩技术(三、Class字节码)(已完成)

深入探索编译插桩技术(四、ASM)(已完成)

Gradle自动化构建

深入探索 Gradle 自动化构建技术(一、配置篇)(已完成)

深入探索 Gradle 自动化构建技术(二、Groovy 筑基篇)(已完成)

深入探索 Gradle 自动化构建技术(三、Gradle 核心解密)(已完成)

深入探索 Gradle 自动化构建技术(四、自定义 Gradle 插件)(已完成)

深入探索 Gradle 自动化构建技术(五、Gradle 核心源码剖析)(已完成)

深入探索 Gradle 自动化构建技术(六、Gradle 插件开发平台化框架 ByteX 解密)(已完成)

第三季度(7-9月):

1、算法地图构建 & 开源 Awesome-Algorithm-Study

这是一份从零构建算法核心知识的地图,它是以算法面试为根基而打造而成,里面涉及到的都是非常高频的算法面试题。因为算法非常重要,所以从今年7月份开始,我就开始系统从0开始学习了数据结构和算法,具体的学习路径如下:

  • 1、慕课网之《数据结构精讲》:手写各种核心的数据结构,例如动态数组、链表、堆、二叉树、AVL、红黑树等等。
  • 2、《剑指Offer》:有了比较扎实的数据结构功底后,再去学习如何练习算法,那么,《剑指Offer》是最适合不过了。
  • 3、慕课网之《玩转算法面试》:非常详细地对LeetCode上的高频面试算法题进行了系统讲解,能在短时间内快速提升我们的算法面试能力。
  • 4、《算法面试通关 40 讲》:这个是对《玩转算法面试》的补充。
  • 5、手写前面所有算法2遍以上(预估150道题左右)。

在系统学习算法的过程中,我逐步构建出了我的算法地图,内容简要如下:

JsonChao 的 2020 年终总结_第2张图片

2、计算机基础巩固路线

主要基于《编程必备基础 计算机组成原理+操作系统+计算机网络》系统学习了组成原理、操作系统、网络等核心的计算机基础知识,这对加深我们的内功是非常有帮助的。

3、NDK入门

NDK是深入Android必备的一项技术,因此,我开始了NDK的学习,主要完成的学习内容如下:

  • 1、C基础复习。
  • 2、C++基础复习。
  • 3、JNI、编译原理与语法、Linux基础系统学习。
  • 4、了解如何实现增量更新、高效加载Gif图、MMKV组件。

第四季度(10-12月):

1、深入学习和实践组件化、插件化、热修复技术

为了提升架构能力与加深对Android Framework层的理解,那么学习组件化、插件化、热修复技术是必不可少的。这里我就简单聊一聊如何去学习它们。对于组件化来说,关键点就在于掌握如何进行组件化重构,并深入了解如何进行跨组件通信。对于插件化来说,这里有一些问题我们可以去思考一下:

  • 如何规避 Android P 对访问私有 API 的限制?
  • 如何进行插件化重构?
  • 插件化的原理:如何动态加载类?四大组件如何实现插件化?资源如何插件化?So如何插件化?对目前各个热门插件化框架实现的了解?(例如VirtualApk、Replugin、Shadow)
  • 对插件化这一整套技术的理解?

对于热修复来说,我们可以先自己手写一个简单的热更新框架,然后再去深入学习某一个热修复框架的使用和实现,例如Tinker。对于热修复的原理来说,也同样包括代码修复、资源修复、So的修复,这些我们都应该去深入了解。

2、Android Framework层深入学习

主要基于 剖析Framework面试 冲击Android高级职位 课程 将Framework的设计思想与实现细节、总体流程融合起来,追求真正的融会贯通。

3、知识体系系统复习

故而知新,可以为师矣。学习不是看你学了多少,而是看你真正掌握了多少,一味地追求学习的速度反而会让我们掉入一个黑洞:花费了大量的时间学习,但是真正理解的东西却很少。这让我想起了在读书时代的一位朋友,他非常努力,一天到晚都在学习。有时他甚至在就寝灯熄灭之后还约我一起去厕所看书(因为厕所有灯),但是我坚持了两天就不行了。由于他的努力,我一直以为他未来的成就不可限量,但是我和他偶然的一次联系才知道事情并非如此。为什么努力却得不到好的结果?可能最核心的问题就在于我们没能真正地把知识融会贯通,如何融合贯通?唯有不断的练习与复习,请无论如何都要记住:学会只是第一步,真正的掌握需要很多次的重复练习,这样你第一步的努力才不会白费。因此,从11月份开始,我就开始系统整理与复习当前我所掌握的知识,并将它转化了为思维导图的形式,如下所示:

计算机基础

JsonChao 的 2020 年终总结_第3张图片

编程语言

JsonChao 的 2020 年终总结_第4张图片

Android基础

JsonChao 的 2020 年终总结_第5张图片

稳定性优化

JsonChao 的 2020 年终总结_第6张图片

基础架构

JsonChao 的 2020 年终总结_第7张图片

Framework

JsonChao 的 2020 年终总结_第8张图片

NDK

JsonChao 的 2020 年终总结_第9张图片

二、展望我的2021年

随着对性能优化与基础架构技术的研究逐渐深入,我发现目前所处的环境很难提供一个足够体量的APP去让我深入实践。因此,由于不确定性较大,下面我就简要列一下明年的主要目标:

  • 1、能够有机会去开发、优化一个复杂的APP
  • 2、以实践为主,继续深入性能优化领域的学习
  • 3、每天坚持练习算法,以培养开阔的算法思维
  • 4、能够有机会深入学习Flutter,甚至造一些Flutter的轮子
  • 5、继续深入学习Framework,以加深对Framework层的理解
  • 6、能够有机会深入实践Google的JetPack组件

三、总结

这一年,我的确做出了一些努力,也得到了一些收获与掌声。但仅仅靠单纯的努力是不够的,学会如何学习(温故而知新非常重要),学会如何管控好自己的精力与时间,也许会让我们的努力更加高效,从而让我们的内心更加充实。2021年,我们一起加油,希望这是一场真正的蜕变!

Contact Me

现如今,Android 行业人才已逐渐饱和化,但高级人才依旧很稀缺,我们经常遇到的情况是,100份简历里只有2、3个比较合适的候选人,大部分的人都是疲于业务,没有花时间来好好学习,或是完全不知道学什么来提高自己的技术。对于 Android 开发者来说,尽早建立起一个完整的 Android 知识框架,了解目前大厂高频出现的常考知识点,掌握面试技巧,是一件非常需要重视的事情。

去年,为了进入一线大厂去做更有挑战的事情,拿到更高的薪资,我提前准备了半年的时间,沉淀了一份 「两年磨一剑」 的体系化精品面试题,而后的半年,我都在不断地进行面试,总共面试了二三十家公司,每一场面试完之后,我都将对应的面试题和详细的答案进行了系统化的总结,并更新到了我的面试项目里,现在,在每一个模块之下,我都已经精心整理出了 超高频和高频的常考 知识点。

在我近一年的大厂实战面试复盘中逐渐对原本的内容进行了大幅度的优化,并且新增了很多新的内容。它可以说是一线互联网大厂的面试精华总结,同时后续还会包含如何写简历和面试技巧的内容,能够帮你省时省力地准备面试,大大降低找到一个好工作的难度。

这份面试项目不同于我 Github 上的 Awesome-Android-Interview 面试项目:https://github.com/JsonChao/Awesome-Android-Interview,Awesome-Android-Interview 已经在 2 年前(2020年 10 月停止更新),内容稍显陈旧,里面也有不少点表述不严谨,总体含金量较低。而我今天要分享的这份面试题库,是我在这两年持续总结、细化、沉淀出来的体系化精品面试题,里面很多的核心题答案在面试的压力下,经过了反复的校正与升华,含金量极高。

在分享之前,有一点要注意的是,一定不要将资料泄露出去!细想一下就明白了:

1、如果暴露出去,拿到手的人比你更快掌握,更早进入大厂,拿到高薪,你进大厂的机会就会变小,毕竟现在好公司就那么多,一个萝卜一个坑。

2、两年前我公开分享的简陋版 Awesome-Android-Interview 面试题库现在还在被各个培训机构当做引流资料,加大了现在 Android 内卷。。

所以,这一点一定要切记。

现在,我已经在我的成长社群里修订好了 《体系化高频核心 Android 面试题库》 中的 ”计算机基础高频核心面试题“ 和 ”Java 和 kotlin 高频核心面试题“ 部分,后续还会为你带来我核心题库中的:

  • “Android基础 高频核心面试题”
  • “基础架构 高频核心面试题”
  • “跨平台 高频核心面试题”
  • “性能优化 高频核心面试题”
  • ”Framework 高频核心面试题“
  • ”NDK 高频核心面试题“

获取方法:点击此处查看。

出身普通的人,如何真正改变命运?

这是我过去五、六年一直研究的命题。首先,是为自己研究,因为我是从小城镇出来的,通过持续不断地逆袭立足深圳。越是出身普通的人,就越需要有耐心,去进行系统性地全面提升,这方面,我有非常丰富的实践经验和方法论。因此,我开启了 “JsonChao” 的成长社群,希望和你一起完成系统性地蜕变。

星球目前有哪些服务?

  • 每周会提供一份让 个人增值,避免踩坑 的硬干货
  • 每日以文字或语音的形式分享我个人学习和实践中的 思考精华或复盘记录
  • 提供 每月 三 次成长、技术或面试指导的咨询服务。
  • 更多服务正在研发中...

超哥的知识星球适合谁?

  • 如果你希望持续提升自己,获得更高的薪资或是想加入大厂,那么超哥的知识星球会对你有很大的帮助。
  • 如果你既努力,又焦虑,特别适合加入超哥的知识星球,因为我经历过同样的阶段,而且最后找到了走出焦虑,靠近梦想的地方。
  • 如果你希望改变自己的生活状态,欢迎加入超哥的知识星球,和我一起每日迭代,持续精进。

星球如何定价?

365元每年

每天一元,给自己的成长持续加油

为了回馈 JsonChao 的 CSDN 忠实用户,我申请了少量优惠券,先到者先得,错过再无。

点击此处获取优惠券

你可能感兴趣的:(android,面试,android,进阶,软技能,年终总结)