面试复习题--Android高阶性能优化

28 篇文章 0 订阅
5 篇文章 0 订阅

1、优化方向

    CPU优化:提高计算效率

   GPU优化:可以减少GPU的UI过度绘制工作,提升绘制效率;针对自定义的View,可使用clipRect减少DrawCall次数,比如绘制重叠的两个图片时,底图被覆盖的区域完全可以不用绘制。状态的存储与恢复:如果内存不足,而恰好我们的Activity置于后台,不幸被重启,或者用户旋转屏幕造成Activity重启,我们的View应该也能尽可能的去保存自己的属性。

   网络优化:数据压缩,业务合并,业务优先级分层

   内存优化:内存抖动,内存泄露

   包体积:资源压缩,动态加载,andres优化,国际版app bundle

  耗电优化:

尽可能减少网络调用:缓存数据并在下次需要时从缓存中检索数据。
尽可能避免唤醒锁:唤醒锁是一种机制,用于指示您的应用程序需要让设备保持开启状态。
谨慎使用AlarmManager:错误使用AlarmManager 很容易耗尽电池。
批处理网络调用:如果可能,您应该批处理网络调用,以便您可以防止设备每秒唤醒。
移动数据和 Wifi 的不同逻辑:您应该为移动数据和 wifi 编写不同的逻辑,因为一个逻辑可能针对移动数据进行优化,而其他逻辑可能针对 wifi 进行优化。
检查所有后台进程:您应该检查所有后台进程。
谨慎使用 GPS:不要频繁使用,仅在实际需要时使用。
使用 WorkManager:正如官方文档所说,WorkManager 是一个 API,它可以轻松安排可延迟的异步任务,即使应用程序退出或设备重新启动,这些任务也有望运行。WorkManager API 是所有先前 Android 后台调度 API(包括 FirebaseJobDispatcher、GcmNetworkManager 和 Job Scheduler)的合适且推荐的替代品。WorkManager 将其前身的功能整合到一个现代、一致的 API 中,该 API 可以追溯到 API 级别 14,同时还考虑到电池寿命。
  安全优化:网络安全,存储安全,代码防反编译,防止app崩溃,进程间数据安全

   app架构优化:

可替换,可监控,可回退,热更新,动态

2、优化方法论

    所见才请求;数据缓存;内存复用;具体场景算法比较验证;合理估算容量,减少重复数据容器扩容;网络路径复用;多app桶数据复用;所见才绘制;合理使用线程,复用线程,控制线程数量;选择合适的网络协议,对于日志等考虑自定义的udp;

3、优化通用工具

    BlockCanary;leakCanary;IoCanary ;AS profiler ;Systrace;adb命令;simplperf;

4、底层优化

   linux cGroup,LMk,LMKD ,对于Vsync进行分析,

   

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Golang是一种新兴的程序设计语言,被广泛应用于网络开发、云计算等领域。50k的高阶面试题对于不少求职者来说是一道难题,需要具备深厚的编程基础和实践经验,所以需要在以下几个方面下功夫: 1. 熟练掌握Golang的语法和特性,包括但不限于变量、函数、结构体、接口、包、并发等。透彻理解Golang的设计理念和哲学,掌握其优秀的并发性能和简洁的语法结构。 2. 掌握Golang的标准库和第三方库,并深入了解其内部实现和使用方法。掌握Golang的常用框架和工具,如Beego、Gin、Echo等,能够在实际工作中熟练使用。 3. 掌握Golang的性能优化和高可用架构设计,能够对应用程序进行优化,包括优化算法、内存管理、并发控制等方面。同时了解分布式系统、消息队列、容器化等技术,为应用程序提供高可用性和弹性。 4. 具备实际应用经验,能够解决实际工作中出现的各种问题。理解业务需求和用户体验,并能够为其提供创新的解决方案。 总之,要成为一名合格的Golang工程师,需要具备深厚的编程背景和实践经验。不断学习和深入掌握Golang的特性和应用场景,才能在高阶面试中获得成功。 ### 回答2: Golang 50K高阶面试题主要包括了Go语言的基础概念、并发编程、内存管理、网络等多个方面的考察。以下是对其中一些难点的简要解答。 并发编程: Go语言天生支持并发编程,因此并发编程是其核心优势之一。与其它编程语言不同,Go语言提供了一些内置的原语,如goroutine和channel,以便于编写并发代码。Goroutine是一个轻量级的线程,可与其他goroutine一起运行,而channel是用于在goroutine之间进行通信的并发安全的数据结构。通过这些特性,Go语言为开发并发程序提供了显着的便利。 内存管理: Go语言的内存管理是自动化的,开发者无需手动进行内存分配及释放。Go的垃圾回收机制可以自动检测不再使用的变量并将其回收,以便于再次利用。同时,Go语言还支持指针操作,但使用指针时需注意指针的生命周期以及指针空间的释放等问题,以免引起内存泄漏或者指针悬空等问题。 网络编程: Go语言提供了内置的网络库,能够轻松地进行TCP/IP和HTTP等协议的编程。与其它语言比较,Go语言提供了更高层次的API,使得开发网络应用变得更加简单,开发人员可以用更少更简洁的代码来实现同样的功能。 总的来说,Golang 50K高阶面试题主要考察了面试者在Go语言开发中的实际应用及其优势,特别是在并发编程、内存管理和网络编程等方面的应用。如果您希望在面试中表现更出色,需要熟练掌握Go语言的基本语法及其特性,并具有实际的项目经验。 ### 回答3: 首先,Golang 是一种高效、简洁、快速的编程语言,它在一定程度上成功地解决了传统语言的缺点,如并行编程的困难和内存泄漏等问题。而对于 Golang 高阶面试题,我们需要了解一些关键知识点。 首先是 Golang 的并发处理。Golang 的并发是基于 Goroutine 和 Channel 实现的,Goroutine 是轻量级线程,可以实现高度并发。而 Channel 是用来在 Goroutine 之间传递数据的通信机制。在面试中,常被问到如何确保 Goroutine 安全并实现并发。这时我们需要回答一些并发编程的关键问题,如共享资源、锁的使用和死锁避免等。 其次是 Golang 的内存管理。Golang 通过自动垃圾回收技术来实现内存管理和防止内存泄漏,而在面试中,常被问及如何避免内存泄漏,如何手动管理内存等问题,需要对 Golang 内存管理和垃圾回收机制有深入了解。 还有一些其他关键的问题,如异常处理和数据结构等,都需要我们进行深入学习和思考。在备战 Golang 的高阶面试时,除了掌握上述知识点外,还需要实践经验和多思考,不断完善自己的编程技能和能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值