面试官:3年Android还不懂性能优化?阿里资深技术官详解「性能优化」!(1)

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注Android)
img

正文

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

张工:“没有,反正现在硬件性能足够好,就不用做优化了”

面试官:"你都工作3年了,连优化都没做过,要是你来我们公司,写的代码发生卡顿怎么办“。……

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

IO优化

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

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

mmkv的优势

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

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

图片压缩优化

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

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

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

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

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

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

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

性能优化是什么?

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

前提是什么?

答:不影响系统运行正确性

目的是什么?

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

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

目录

设计思想与代码质量优化

  • 六大原则

  • 单一职责原则

  • 里氏替换原则(Liskov Substitution Principle)

  • 依赖倒转原则(Dependence Inversion Principle)

  • 接口隔离原则(Interface Segregation Principle)

  • 迪米特法则(最少知道原则)(Demeter Principle)

  • 合成复用原则(Composite Reuse Principle)

  • 设计模式

  • 数据结构

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

  • 算法

  • 排序算法、查找算法

总结

这次面试问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码
因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

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

里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注Android)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

统化的资料的朋友,可以添加V获取:vip204888 (备注Android)**
[外链图片转存中…(img-ozcFJc4p-1713383194157)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 25
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值