面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化


面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

性能优化是很多 Android 程序员希望彻底掌握的一门技能。很多人都想学好性能优化,希望能够在自己的工作中灵活运用提高性能,从而为用户提供良好的用户体验。

然而,很多人在设计技术方案或者编码时缺乏系统的、方法论级别的指导,导致想做性能优化时缺乏思路。

面试时,性能优化相关的面试题经常会遇到,特别是一些常见的优化。

张工毕业3年了,一直在一家创业公司做Android开发,最近到某知名互联网公司面试,做了笔试题后, 面试官看了觉得还不错,于是想进一步考察张工的实际经验有多少, 就问之前在项目中有做过性能优化吗?

张工:"没有,反正现在硬件性能足够好,就不用做优化了"
面试官:"你都工作3年了,连优化都没做过,要是你来我们公司,写的代码发生卡顿怎么办“。……

张工一脸的无助,不过确实不应该,基础的优化应该要了解才对,做的优化经验越多,说明求职者工作年限越长,写代码也会更谨慎。对未来求职可谓是有百利而无一害!接下来让我们看看,哪些优化是我们迫切需要掌握的呢?

IO优化

小伙伴们在开发项目是时不时的遇到UI卡顿吗,大部分UI卡顿主要是因为在主线程操作IO导致的。例如:经常使用SharePreference 导致概率性的卡顿。在微信等一线大厂中,早已放弃了SharePreference 作为键值对存储小伙伴是不是感觉很惊奇,不用SharePreference 那用什么?腾讯在去年开源了一个存储框架叫 MMKV。对,他就是用来做IO优化

接下来我们一起来看看两者在存储上的性能对比。

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

mmkv的优势

速度优势:写入速度是SharedPreferences的100倍左右。在主线程做IO存储 用mmkv一点问题都没有,不会出现卡顿情况
特别是在数据量比较大的时候,速度会一直保持在10ms以内写入安全:通过 mmap 内存映射文件,提供一段可供随时写入的内存块,App 只管往里面写数据,由操作系统负责将内存回写到文件,不必担心 crash 导致数据丢失。写入优化:SharedPreferences在本身数据量比较多的情况下,更新一个key-value时,会发生全量写入,意味着时间更长。mmkv避免了这种情况的出现。mmkv以增量方式进行写入功能更全:支持多进程访问,支持数据加密。多线程安全写入

下次当面试官问你有没有做过优化时,就可以将IO优化拿出来分享啦!!!

图片压缩优化

目前Android手机摄像头动不动就是5M 8M,这样的图片比较大,既不利于传输,也不利于加载。并且在应用中加载图片,是一个需要消耗内存的一个动作。也是Android开发者在项目优化中比较头疼的一个问题。如果稍不注意图片加载,一不小心就会出现OOM

所以在项目中迫切需要对图片进行压缩优化,方便后续加载,传输,编辑

同等质量下,压缩后的文件对比

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

这种效果,通过原生的bitmap.compress() 是做不到的目前有一种另外一种实现 ,叫做鲁班压缩接下来看看鲁班压缩的效果

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

现在很多的互联网公司面试的时候对面试者都看重是否具备调优的经验,互联网公司日渐复杂的App,错综复杂的性能调优,都对 Android 工程师的技术广度和技术深度提出了更高的要求,所以性能调优也是不可缺少的一项技能!

为了帮助大家深入理解性能调优,今天分享一份阿里资深技术官详解的「性能优化」知识笔记大全

Android「性能优化」知识笔记大全

性能优化是什么?
答:性能优化,简而言之,就是在不影响系统运行正确性的前提下,使之运行地更快,完成特定功能所需的时间更短。

前提是什么?
答:不影响系统运行正确性

目的是什么?
答:运行地更快时间更短,( 改善应用的“吞吐量”和“延迟”。)

在Android程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。今天就由阿里资深技术官来详解「性能优化」问题,从设计思想与代码质量优化、程序性能优化、开发效率优化三种调优方式来详细讲解,以下含一些面试题、脑图以及调优文档等资料,需要电子版的可以直接私信回复【资料】免费领取。

目录

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

设计思想与代码质量优化

  • 六大原则

单一职责原则里氏替换原则(Liskov Substitution Principle)依赖倒转原则(Dependence Inversion Principle)接口隔离原则(Interface Segregation Principle)迪米特法则(最少知道原则)(Demeter Principle)合成复用原则(Composite Reuse Principle)

  • 设计模式
  • 数据结构

数组、栈、队列、链表、树、图、堆、散列图

  • 算法

排序算法、查找算法

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

程序性能优化

  • 启动速度与执行效率优化

冷启动和热启动解析、APP 启动黑白屏解决办法、APP 卡顿问题分析及解决方案、启动速度与执行效率优化之 StrictMode

  • 布局检测与优化

布局层级优化、过度渲染

  • 内存优化

内存抖动和内存泄漏、内存大户,Bitmap 内存优化、Profile 内存监测工具、Mat 大对象与泄漏检测

  • 耗电优化

Doze&Standby、Battery Historian

  • 网络传输与数据存储优化

google 序列化工具 protobuf、7z 极限压缩

  • APK 大小优化

APK 瘦身、微信资源混淆原理、屏幕适配

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

开发效率优化

  • 分布式版本控制系统 Git

企业高效持续集成平台场景介绍、GIT 分布式版本控制系统、GIT 分支管理

  • 自动化构建系统 Gradle

Gradle 与 Android 插件、Transform API、自定义插件开发、插件实战

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

最后

但是不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~

我为大家准备了以下一体系的复习资料:

《Android开发七大模块核心知识笔记》

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

《960全网最全Android开发笔记》

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

《379页Android开发面试宝典》

历时半年,我们整理了这份市面上最全面的安卓面试题解析大全
包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目。熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

如何使用它?

1.可以通过目录索引直接翻看需要的知识点,查漏补缺。
2.五角星数表示面试问到的频率,代表重要推荐指数

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

《507页Android开发相关源码解析》

只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。

真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。

面试官:3年安卓还不懂性能优化?阿里资深技术官详解性能优化

资料太多,全部展示会影响篇幅,暂时就先列举这些部分截图;

需要的朋友,直接转发+点赞+私信回复【资料】一键领取!!!


分享到:


相關文章: