前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android面试|任何东西只要够深,都是一把刀!性能优化都没搞好就别想着去找对象了

Android面试|任何东西只要够深,都是一把刀!性能优化都没搞好就别想着去找对象了

原创
作者头像
Android技术干货分享
修改2021-06-25 10:25:24
7530
修改2021-06-25 10:25:24
举报
文章被收录于专栏: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 内存泄漏检测 线程监控 内存监控 ……

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

以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。

最后

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

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

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

(祝,君一切安好。)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 引言
  • 那些年我遇到的性能优化面试题
    • 小结一下
    • 掌握性能优化的重要性
    • App性能优化要点大纲
    • 性能优化知识技能策略详解
      • 第一章 设计思想与代码质量优化
        • 第二章 程序性能优化
          • 第三章 开发效率优化
            • 第四章 APP 性能优化实践
              • 以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
          • 最后
          相关产品与服务
          数据保险箱
          数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档