Android性能优化面试官想听的是什么?别再说那些老掉牙的性能优化了

常见Android面试问题汇总--持续更新 1 handler的机制 2 view事件分发流程 3 自定义view流程 4 listview和recyclerview区别,优缺点 5 常见的设计模式 6 activity的启动流程 7 卡顿问题如何处理 8 阅读详情

一、故事开始

面试官:我今天主要问下性能方面,你之前有没有做过性能优化?

我:嗯…我做过功耗优化,比如耗电优化,流量优化。性能方面我做过卡顿优化,主要针对卡顿监控方面。

面试官: 那着重描述下卡顿方面吧,说下你是怎么做的。

我:嗯… 卡顿其实分为直观的和微观两个方向的,举个例子:

比如用户点击了登录,预期是得到登录成功/失败的反馈,可现在没有页面刷新,实际的刷新耗时超出了预期,这就是直观的卡顿。

比如用户在看股票,正常60秒刷新一次,可到了60秒,触发了刷新但是刷新处理逻辑耗时较长,导致新的数据在下一个60秒之前的第59秒才回来,用户基本无感知,主要说的是内部耗时的问题,这种情况可以粗略的理解为微观卡顿。

面试官:你不用说概念,直接说为什么会产生卡顿就行了。

我:好的面试官,我整体吹一…,啊不,我整体说一下,说的不对您及时补充。手动呲牙

首先,我认为卡顿产生的原因主要是某些逻辑处理时间超出了我们的预期阈值,这些耗时操作影响了页面的刷新,当刷新的频率和速度(60帧/s)低于我们的预期时,就会产生我们理解的卡顿。

其次,如果主线程耗时过长还可能产生ANR,当然ANR在不同场景下的耗时阈值不同。

最后,当然也有很多现实因素会影响用户体验,比如手机的配置,所处环境的网络质量等…

面试官: 嗯,那你怎么做到让App不卡顿?

我:我认为做到App不卡顿主要分为以下几种情况:

1.如果App整体都是自己开发,那自己写逻辑尽量保持简洁合规,主线程尽可能不做耗时操作,UI绘制层级尽量保持扁平,复杂数据处理尽量前置,或缓存等等.

2.如果项目多人合作开发,这个问题会演进为怎么治理这些卡顿。

3…

去过大厂面试的朋友就会知道大厂经常问这样的问题,主要是因为一旦发生卡顿就会被用户直观的感受到,而其他问题很难被及时的发现:比如内存占用高,耗费流量等。用户体验不好就很有可能卸载掉我们的 App,让公司白白付出高昂的用户成本,因此因为性能问题导致用户流失是我们开发人员的失职。

在这里特此分享这份,腾讯T4大佬目汇聚了上百篇业界知名性能优化文章整理的而成的《Android性能优化实战解析》,帮助大家从大厂性能优化项目中吸取更多经验,提升自身的技能知识。


需要的朋友可以滑到文末直接免费领取。

一线互联大厂性能优化实战

腾讯团队:

  • 腾讯Bugly:对字符串匹配算法的一点理解
  • 全民k歌适配arm64-v8a方案
  • 全民K歌内存篇2——虚拟内存浅析
  • 全民K歌内存篇1——线上监控与综合治理
  • 腾讯 Bugly:动态下发 so 库在 Android APK 安装包瘦身方面的应用

爱奇艺团队

  • 爱奇艺:安卓APP崩溃捕获方案——xCrash
  • Android篇 | 爱奇艺APP启动优化实践分享
  • 二维码扫描优化及爱奇艺APP的实践

字节团队:

  • 字节跳动:深入理解Gradle框架之一:Plugin, Extension, buildSrc
  • 字节跳动:二维码扫描优化
  • 头条 | 深入理解gradle框架之二:依赖实现分析
  • 头条| 开源 | Scene:Android 开源页面导航和组合框架
  • 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%
  • 抖音BoostMultiDex优化实践:Android低版本上APP首次启动时间减少80%(二)
  • 抖音包大小优化-资源优化
  • 今日头条 ANR 优化实践系列 - 设计原理及影响因素
  • 今日头条 ANR 优化实践系列 - 监控工具与分析思路
  • 今日头条 Android ‘秒’ 级编译速度优化
  • 抖音 Android 性能优化系列:Java 内存优化篇

百度团队:

  • 百度APP技术:Android H5首屏优化实践
  • 百度APP组件化之路
  • 百度APP网络深度优化系列《三》弱网优化

阿里团队

  • 支付宝客户端架构解析:Android 客户端启动速度优化之「垃圾回收」
  • 支付宝 APP 构建优化解析:通过安装包重排布优化 Android 端启动性能
  • 支付宝 APP 构建优化解析:Android 包大小极致压缩
  • 闲鱼如何在2个月内实现Android启动速度翻倍的?
  • 解决支付宝包体积优化的遗留问题:运行时获取dexpc

携程:

  • 携程:从智行 Android 项目看组件化架构实践
  • 携程Android 10适配踩坑指南

网易

  • 网易传媒技术团队:AOP技术在客户端的应用与实践
  • 网易大数据|互联网产品决策秘笈: AB测试
  • 网易新闻构建优化:如何让你的构建速度“势如闪电”?
  • 网易新闻客户端 H5 秒开优化


由于内容过多,在这里就不做全部的展示,以上就是《Android性能优化实战解析》的大概目录以及部分内容截图。需要的朋友点击文末优快云官方认证微信卡片免费领取。

最后

现在的时代背景下,初级移动开发人员很 “卷”,但优秀的高级工程师又比较稀缺,没有任何核心技能的工程师随时可能被“优化”掉。一定要打造自己的技术壁垒,让自己做到无可替代。

大家也没必要太过焦虑,找到适合自己的终身学习的方式以及那些中短期内不太会变的底层逻辑、跟随时代跳动的频率,去不断地迭代演进自己就好了。

Android开发蓝牙基础总结 首先要搞清楚一点,我们在 Android 中通过 SDK 获得的蓝牙广播包是经过底层的 SDK 给我们处理过的,是一个长度为 62 的字节数组。这个长度为 62 的字节数组是怎么来的呢? 想要搞清楚这个问题,首先我们要明白 iBeacon 向外发送的最原始的广播包是什么样的? 首先我们要搞清楚一点,蓝牙在向外发送数据的时候是分成两个部分的一个就是普通的广播包还有一个叫做应答包。这是蓝牙协议的规定内容,针对于所有的蓝牙设备(iBeacon 只是蓝牙设备的一种) 普通的广播包格式是定义好的 阅读详情

相关推荐

android平板适配!Flutter尽然还能有这种操作!附赠课程+题库

前言 金九银十面试季,相信大家肯定急需一套Android面试宝典,今天小编就给大家准备了我珍藏已久的Android高阶面试宝典,一份超级详细的Android面试必备知识点,供大家学习 ! 想必每一个安卓程序员都有追求大厂的决心,但是想要进入大厂,我们需要掌握哪些知识点呢?这里,我为大家梳理了一个整体的知识架构。整体包括Java、Android、算法、网络等。希望大家阅读之后,能帮助大家完善与整理自己的知识体系。祝大家面试顺利~~ 文末还有给大家分享我整理的Android面试专题及答案可以拿去参考下~ 注.

899

你是否了解APP耗电问题?深入探索 Android 电量优化,flutter插件推荐

3)、最后,把电量输送给电池,而整个降压的过程中会产生热能。 分类 1)、高压低电流快充方案:在充电过程中提升充电电压(7-20V)来提升充电功率。 2)、低压大电流快充方案:在电压一定情况下,增加电流,通常使用并联电路的方式进行分流。 3)、铝-石墨烯超级电池 超高耐用性和安全性,快充充电1.1秒就能充满电。 实验阶段。 3、寿命 通常使用充电循环次数衡量。 4、安全性 严格控制电池容量,例如 VOOC 就使用了各种安全检测技术。 5、电量和硬件 手机耗电是通过使用相.

m0_65146275的博客 2594

功耗优化方法

1、底电流调试(RockBottomCurrentOptimization) 底电流在手机飞行模式下调试。每个平台的底电流数据可能不一样,具体可以参考release出来的CurrentConsumptionData文档或者releasenote。一般情况下的底电流参考数据上限是: 512MRAM<1.5mA;1GRAM<2mA;2GRAM<2...

green1900的专栏 7347

android 面试算法题 实现单链表反转(1),面试官问技术问题不太会怎么办

T行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!(5)反转后得到的链表最后一个结点是否为null?考虑完以上问题后,就能够写出正确的代码了。(2)假设链表为单节点链表,该怎样处理?(3)怎样防止在反转过程中断链?(4)反转后head是否更新?实现自定义链表反转类。

2401_84103675的博客 646

从零搭建企业网络:使用Packet Tracer模拟多区域OSPF组网全过程

本文通过Cisco Packet Tracer模拟,详细演示了从零搭建一个典型企业多区域OSPF网络的完整流程。内容涵盖网络拓扑规划、IP地址设计、多区域划分原理,并提供了从设备初始化、接口配置到OSPF多区域核心配置与验证的详细步骤。文章旨在帮助网络学习者与IT支持人员通过动手实验,将理论知识转化为实际的配置与排障能力。

day7的博客 1028

面试问题 耗电量/性能优化

不要频繁的刷新页面,能刷新1行cell最好只刷新一行,尽量不要使用reloadData 懒加载,不要一次性创建所有的subview,而是需要时才创建. 重用 可以模仿UITableView和UICollectionView,不要一次性创建所有的subview,而是需要时才创建.完成了使命,把他放入到一个可重用集合中 图片处理 避免多余运算 cache,cache,cache缓存所有需要的 ...

翱翔在空中 313

自动驾驶轨迹规划算法——Apollo Lattice Planner

Apollo Lattice Planner是百度Apollo自动驾驶系统中的一种基于采样的实时轨迹规划算法。其核心思想是在离散化的状态空间中,对终端状态进行采样,并通过多项式曲线连接当前状态与候选终端状态,形成候选轨迹集,最后基于代价函数选择最优轨迹。该算法将车辆可达状态按纵向距离、横向偏移和速度等维度规则离散化,形成"格点"状态空间。 Lattice Planner通过三个主要步骤实现轨迹规划:1)终端状态采样,在规划时域内枚举多种驾驶意图;2)轨迹生成,使用五次多项式连接起点与各终

swaggytiger的博客 1623

性能优化面试官想听的是什么?别再说那些老掉牙的性能优化了

大厂技术高级前端Node进阶点击上方程序员成长指北,关注公众号回复1,加入高级Node交流群网上性能优化的文章太多了,都说如何如何请求优化代码优化之类的,所有人都知道的事,而且实...

程序员成长指北 330

STC15单片机实战项目软件开发第四讲 - 按键检测(状态机)

软件开发第四讲 - 按键检测(状态机) 一、工具链接 1、Keil c51 UV4 https://yunpan.360.cn/surl_yrIfYYmeRFk 2、STC-ISP下载软件 https://yunpan.360.cn/surl_yxH4CuUUvI3 二、学习板获取方式 方法1:自己设计PCB,自行打板焊接; 方法2:用群主设计的PCB,自行打板焊接; 方法3:向群主购买,淘宝链接...

硬件家园 3044

深入解析Dataloader中shuffle机制与随机种子对模型训练的影响

本文深入探讨了Dataloader中shuffle机制与随机种子对机器学习模型训练的影响。通过实际案例分析,详细解释了数据打乱顺序的必要性、随机种子的正确设置方法以及两者协同工作的原理,帮助开发者避免常见陷阱并提升模型训练效果。

weixin_29166013的博客 140

Android校招笔试:从Handler到性能优化,面试官到底在考什么?

在Android开发领域,校招笔试考察的往往不只是知识点记忆,更是工程直觉与源码理解能力。以消息机制为例,Handler、Looper与MessageQueue的协作原理,决定了开发者能否真正解决线程通信和界面卡顿问题;而Binder作为进程间通信的基石,则贯穿了AMS、WMS等系统服务的调用链。理解了这些核心机制,才能进一步深入启动优化、内存治理、ANR排查等性能优化场景。技术选型与原理认知,最终都会落到实际业务中图片加载、列表流畅度、网络框架设计等工程实践上。从基础概念到系统原理,再到应用场景,这条学习

weixin_34199335的博客 311

AHP层次分析法在项目风险评估中的实战应用(含Excel模板)

本文详细介绍了AHP层次分析法在项目风险评估中的实战应用。通过构建风险层次模型、利用判断矩阵量化主观判断,并结合Excel工具进行权重计算与一致性检验,将模糊的定性风险转化为清晰的量化排序。文章以新产品上线项目为例,提供了完整的分析流程和可操作的Excel模板,帮助项目经理高效识别并优先处理核心风险。

weixin_29061465的博客 570

面试总结 - 耗电优化

耗电优化 1.CPU处理; 2.网络请求; 3.定位; 4.图像渲染 1.1尽可能降低 CPU、GPU 功耗; 1.2少用定时器; 1.3 优化I/O操作: 尽量不要频繁写入小数据,最好一次性批量写入; 读写大量重要数据时,可以用 dispatch_io,它提供了基于 GCD 的异步操作文件的 API,使用该 API 会优化磁盘访问; 数据量大时,用数据库管理数据; 2.网络优化: 2.1减少、压...

宋卓的博客 549

【大语言模型 14】Transformer权重初始化策略:从Xavier到GPT的参数初始化演进之路

权重初始化是深度学习训练成功的隐秘基石,特别是在Transformer这样的深层架构中,合适的初始化策略能够决定模型的训练稳定性和收敛速度。本文从经典的Xavier和He初始化出发,深入解析Transformer特有的初始化策略,通过数学推导、代码实现和实验分析,揭示不同初始化方法对大语言模型训练的深层影响。我们将探讨为什么GPT系列模型采用特定的初始化方案,以及如何针对不同层设计最优的初始化策略。

熵数实验室 1685

库存管理系统项目部署方案(基于jdk8)

不需要安装到服务器,运维本地安装就行,主要是用来编译前端代码的。构建完成后将dist文件夹复制到服务器内。

程序员诚哥 2572

2019年最新Android面试精讲--带你复制年薪70W的神话

其实如果你技术深度足够,大必不用为就业而忧愁。每个行业何尝不是这样,最开始的风口,到慢慢的成熟。Android初级在2019年的日子里风光不再, 靠会四大组件就能够获取到满意薪资的时代一去不复返。**经过一波一波的淘汰与洗牌,剩下的都是技术的金子。就像大浪褪去,裸泳的会慢慢上岸。**而真正坚持下来的一定会取得不错成绩。毕竟Android市场是如此之大。从Android高级的蓬勃的就业岗位需求来看...

Android_SE的博客 732

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

史上最全的Android面试题集锦

每个 Activity 都包含一个 Window 对象,Window 对象通常是由 PhoneWindow 实现的。PhoneWindow:将 DecorView 设置为整个应用窗口的根 View,是 Window 的实现类。它是 Android 中的最基本的窗口系统,每个 Activity 均会创建一个 PhoneWindow 对象,是 Activity 和整个 View 系统交互的接口。

贵公子丶笔记 8526

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

干了六年Android开发现在裸辞失业了,再过2个月就30了,该怎么继续生活?

这是我在某论坛看到别人分享的故事,觉得可以展开聊一下,对于我们这些中年程序员,可以裸辞吗? 前言 首先介绍一下主人公的情况。目前所在的是一家小的创业公司,待了3年多,薪资一般吧,之前在一家中型上市企业也干了三年,因为想涨薪所以跳到现在这家小公司。 就在年前,公司年终总结,公司老板会和各组负责人找每个员工谈话。面试来的时候,公司承诺每年多次调薪,也有项目奖金,干了三年,调过两次薪,项目奖金一分没见到,单双周上班,他寻思这几年互联网发展也不太好,没有就没有吧。 公司上班,不说九九六吧,也是每天至少九个小时,各.

Android23333的博客 5万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Android Studio 最新最详细安装教程

一、安装说明 Android Studio(简称AS)是谷歌推出的一个Android集成开发工具,基于IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试。 AS能够在Linux、Windows、macOS上运行,支持Java、Kotlin、Flutter等语言开发。 在IDEA的基础上,Android Studio 提供: 基于Gradle的构建支持 Android 专属的重构和快速修复 提示工具以捕获性能、可用性

Android23333的博客 3万+

华为的薪酬体系整体框架,值得收藏

截止2020年底,华为全球员工共计近20万人。国内多数企业还停留在“配多少人,干多少活”的阶段,反观华为,实行的是基于岗位责任和价值贡献的分配体系,建立了“以岗定级、以级定薪、人岗匹配、易岗易薪”的薪酬体系。 华为的薪酬体系,也算是公开的秘密。根据华为公布的年报,2013-2017五年的薪酬统计如表1所示。 华为公司近五年的薪酬统计表 华为的薪酬已基本达到世界级水准,一直被视为“别人家的公司”。 华为的“撒钱”模式背后,是任正非独特的人才观。任正非在一次内部讲话中提到:什么是人才,我看最典型的华为人都不是

Android23333的博客 1万+

阿里钉钉Android实习面试也太太太太难了吧,对算法的要求堪比字节

本人研究生在读,在2月26日找了师兄内推阿里钉钉团队,28号接到了约1面的电话。幸好我提前准备了一个多月的样子,刷面试题、刷LeetCode(面了之后才觉得自己刷少了),对于我这样一个实习生来说题目还是有些偏难,不过在4月20号终于拿到意向书了,听内推人说阿里实习面试没有rank,可能单纯就是流程比较慢,漫长的等待和面试还是值得的呀。 钉钉1面,3月1日(电话面试,1个小时) 本科、研究生学过什么跟计算机相关的课? tcp、http协议相关;http1.1和2.0区别 堆排序的过程 Jav.

Android23333的博客 1万+

你的跳槽涨薪幅度是多少?

互联网从业十年,混的不算好,也不算太差12年,bat腾讯月薪12000,总收入15万15年职级3.1离职,总收入50万左右15年入职bat另一家,月薪30000,加上股票,总收入在75要,p7。涨幅50%16年不适应公司风格,离职,加入一家公墓基金公司,teamleader,年80左右,涨幅15%,好在855,不加班,各种福利18年,觉得自己还年轻,不能那么早养老,就跑路某二线互联网公司,teamleader,年120,涨幅50%左右,996,让我认识到自己已经不年轻19年入职某上市金融集团,年150,涨幅

Android23333的博客 1万+

现在网上流传的 35 岁很多人会失业,究竟是危言耸听,还是真实存在的?

昨天BOSS直聘上有个47岁的软件开发人员投简历,应聘android应用开发工程师,还是有点诧异的。 于是问他,这是个技术岗位,他是否偏重管理岗,项目经理什么的。 他说他偏技术,是技术经理偏重技术的。 我以为遇到个全才,毕竟95年毕业的本科生,211学校。 当年大学没有扩招,应该是天之骄子了。 工作25年了,经验应该很丰富从简历看,99年开始在一家日企工作到今年1月,已经21年了。 90年代日企应该是非常吃香的。 我估计他在里面工作21年,是想干到退休的,没想到被裁员,还是在47岁这个尴尬年龄,然后长达半.

Android23333的博客 1万+

2023 Android面试官 常问的问题以及答案(附最新的Android面试大厂必考174题 )

2023 Android面试官 常问的问题以及答案(附最新的Android面试大厂必考174题 )

Android23333的博客 9563

Android全新UI编程 - Jetpack Compose 超详细教程

1. 简介 Jetpack Compose是在2019Google i/O大会上发布的新的库。Compose库是用响应式编程的方式对View进行构建,可以用更少更直观的代码,更强大的功能,能提高开发速度(这一段是谷歌自己说的)。 说实话,View/Layout的模式对安卓工程师来说太过于熟悉,对于学习曲线陡峭的Jetpack Compose能不能很好的普及还是有所担心。 因为Jetpack Compose的内容比较多,我会分成多个文章来进行介绍。 内容包括常用UI组件的使用,Flow和Compose的结合.

Android23333的博客 7357
上一篇: 该如何成为Android开发高手?谷歌开源的这份《Android八大模块进阶指南》不容错过
下一篇: 插件化:大厂实战项目解说(含腾讯Shadow项目解析)
Agent学习路线
博客等级 码龄6年 1万+粉丝 1902原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值