龙空技术网

Android面试|任何东西只要够深都是一把刀!性能优化也不例外

你今天搬砖了吗 247

前言:

现时兄弟们对“android面试性能优化”大致比较关怀,小伙伴们都需要知道一些“android面试性能优化”的相关知识。那么小编同时在网上收集了一些有关“android面试性能优化””的相关知识,希望朋友们能喜欢,同学们快快来了解一下吧!

前言

标题无能,请各位看官放下你们的屠刀,扎心的往下看,看到情不自禁处请手下留情。

5-7年工作经验的候选人在性能优化这一块必须要会的东西,超长干货警告!!!

引言

您瞧清楚了,我是互联网公司技术开发一枚,渴了喝咖啡,饿了吃外卖,晕了上医院的那种。房贷没还清,车子自己买,人家休假我加班。还有最重要的是,我是一条单身狗。不要想着单身贵族这种身份,你爸和你妈的一巴掌就能让你认清现实。

我要讲的故事就四字:性能优化

我知道,此时此刻看到这里的朋友一定会掌心出汗、眉头紧锁,用一种带着危险的眼神死盯着手机屏幕。来吧,我不怕。性能优化都没搞好,还想着去找对象?

那些年我遇到的性能优化面试题

面试官:

图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?内存中如果加载一张 500*500 的 png 高清图片。应该是占用多少的内存?WebView 的性能优化?Bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM?内存回收机制与 GC 算法 (各种算法的优缺点以及应用场景);GC 原理时机以及 GC 对象?内存泄露和内存溢出的区别 ?AS 有什么工具可以检测内存泄露性能优化,怎么保证应用启动不卡顿?黑白屏怎么处理?强引用置为 null,会不会被回收?ListView 跟 RecyclerView 的区别ListView 的 adapter 是什么 adapter?卡顿、ANR、死锁,线上如何监控?.......

以前面试几乎都是靠面试官抽一鞭子然后我回答一哆嗦。 回答性能优化方面的问题,也基本上是那老四样。 可问题就在于,这些答案换个人来也能说。说白了,你说出去的东西并不是真正属于你的东西。 然后,职位岗位略高一点,你就没机会了。

小结一下

最近参加了几轮面试,发现很多5-7年工作经验的候选人在性能优化这一块,基本上只能说出传统的分析方式,「例如ANR分析,是通过查看/data/anr/ 下的log,分析主线程堆栈、cpu、锁信息等」

然而,这种方法有一定的局限性,并不是每次都奏效,很多时候是没有堆栈信息给你分析的,例如有些高版本设备需要root权限才能访问/data/anr/ 目录,或者是线上用户的反馈,只有一张ANR的截图加上一句话描述。

假如你的App没有实现ANR监控上报,那么你大概率会把这个问题当成“未复现”处理掉,而没有真正解决问题。

于是我整理了这一篇文章,主要关于性能优化各方面的详细攻略。

掌握性能优化的重要性

在这个网络都追求5G的时代,“卡”这个体验显然成为了一个极其拉低印象分的问题。

所以,在 Android开发中,性能优化策略十分重要,他决定了应用程序的开发质量,包括可用性、流畅性、稳定性等,是提高用户留存率的关键

所以,不只是阿里,还有腾讯、字节跳动、爱奇艺等,都非常重视这个问题,在面试中,如果这个方向表现优异,你将会很值钱

本文针对“性能优化”这个要点,献上一份 《Android性能优化的详细攻略》,从各个方面对目标产品进行全方位的“优化”,让产品的性能从各个方面得到提升,希望大家喜欢。

App性能优化要点大纲性能优化知识技能策略详解

性能优化这个点的知识要想讲明白篇幅会比较长,鉴于篇幅原因,我这里直接把详解部分整理成了一份PDF。

这份《超全App性能优化知识技能手册》一共有721页,4个大点,25个小章节,不仅仅有详细的底层原理的解析,还有专门的实践案例

有需要的朋友,私信 【资料】 查看获取方式~

第一章 设计思想与代码质量优化六大原则

单一职责原则

里氏替换原则

依赖倒转原则

接口隔离原则

……设计模式:结构型模式

桥接模式

适配器模式

装饰器模式

代理模式

门面(外观)模式

……设计模式:创建型模式

建造者模式

单例模式

抽象工厂模式

工厂方法模式

……数据结构

队列

链表

……算法

排序算法

查找算法

……第二章 程序性能优化启动速度与执行效率优化

冷启动和热启动解析

APP 启动黑白屏解决办法

APP 卡顿问题分析及解决方案

启动速度与执行效率优化之 StrictMode

……布局检测与优化

布局层级优化

过度渲染

……内存优化

内存抖动和内存泄漏

内存大户

Bitmap 内存优化

Profile 内存监测工具

Mat 大对象与泄漏检测

耗电优化

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

APK 大小优化

屏幕适配

……耗电优化

Doze&Standby

Battery Historian

JobScheduler

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

google 序列化工具 protobuf

7z 极限压缩

……APK 大小优化

APK 瘦身

微信资源混淆原理

……屏幕适配

进行适配的原理

屏幕分辨率限定符与 smallestWidth 限定符适配原理

为什么选择 smallestWidth 限定符适配

怎么适配其他 module

常见问题处理

……OOM 问题原理解析

adj 内存管理机制

JVM 内存回收机制与 GC 算法解析

生命周期相关问题总结

Bitmap 压缩方案总结

……ANR 问题解析

AMS 系统时间调节原理

程序等待原理分析

ANR 问题解决方案

……Crash 监控方案

Java 层监控方案

Nativie 层监控方案

……第三章 开发效率优化分布式版本控制系统 Git

企业高效持续集成平台场景介绍

GIT 分布式版本控制系统

GIT 分支管理

……自动化构建系统 Gradle

Gradle 与 Android 插件

gradle 与 android gradle 插件的关系

Gradle Transform API 的基本使用

……Gradle Transform API 的基本使用

什么是 Transform

Transform 的使用场景

Transform API 学习

输入的类型

……自定义插件开发

Gradle 插件简介

开始准备

实践

自定义 Gradle 插件

buildSrc 模块方式

……插件实战

多渠道打包

发版自动钉钉

……第四章 APP 性能优化实践启动速度

应用启动的一般流程

冷启动和热启动

启动速度的测量

启动窗口优化

线程优化

系统调度优化

GC 优化

IO 优化

资源重排

主页布局优化

类加载优化

选择合适的启动框架

减少 Activity 的跳转层次

厂商优化

后台保活

……流畅度

性能问题分析的一些工具和套路

通过性能数据数据分析

Android 平台性能导致的性能案例

Android App 自身导致的性能问题

低内存的数据特征和行为特征

应用宝

讯飞输入法无障碍服务导致的整机卡顿分析

字节跳动:今日头条图文详情页秒开实践

……抖音在 APK 包大小资源优化的实践

图片压缩

webp 无侵入式兼容

多 DPI 优化

重复资源合并

shrinkResource 严格模式

资源混淆(兼容 aab 模式)

ARSC 瘦身

……优酷响应式布局技术全解析

优酷APP响应式布局技术概述

优酷APP响应式布局Android落地

在分发场景的落地

在消费场景的落地

优酷APP响应式布局之测试方案

……网络优化

手机淘宝在网络的链路优化

百度 APP 在网络深度优化的实践

……手机淘宝双十一性能优化项目揭秘一秒法则的实现

启动时间和页面帧率提升 20%

Android 手机内存节省50%

……高德 APP 全链路源码依赖分析

高德 APP 平台架构

基础实现原理

项目架应用场景及实现原理

……彻底干掉OOM的实战经验分享

排查内存泄漏

兜底策略

内存峰值太高

特大图排查优化

……微信 Android终端内存优化实践

Activity 泄露检测

Bitmap 分配及回收追踪

Native 内存泄漏检测

线程监控

内存监控

……

如果你也想提升自己移动开发的性能优化技术,或者是正在准备移动开发岗的面试,我觉得这份笔记你必定不能错过。

以上这些内容均免费分享给大家,需要完整版的朋友,直接私信回复【资料】一键领取!!!

最后

面试官是喜欢问你对性能优化做了什么事情,但面试官更想知道你做到了而别人没做到的事情。老四样的旁边就写着适用于怎样的场景,而我却视而不见。人家指着那你都看不懂,听到想听简单的就暗自窃喜,你真当面试官傻呢?

所以,请相信,“相亲”从第一面就开始交锋了。先输了的那个往往就失去了主动权。如果你自嗨了,那你就失去了足够敏锐的观察力。人性都一样,对喜欢的东西容易不设防,对不喜欢的东西会倍加警惕。

最后,任何东西只要够深,都是一把刀, 性能优化也不例外。

(祝,君一切安好。)

标签: #android面试性能优化