前段时间,字节的朋友有个新项目,要我推荐靠谱的朋友,然后我就推荐了一个88年的同事老贾。
一面的时候,老贾各方面都挺好,问啥都会,后来聊到性能优化问题,答得也还行,至少勉强进了二面。
可好巧不巧,二面的时候问了个内存回收机制与GC算法,然后他就答不上来了,据说走的时候几乎落泪...唉!
后来跟字节的朋友聊起这件事,他告诉我其实老贾并不是个例,他提醒了我以后面试的几个点,在这里我也分享给大家:
-
当面试官向你问图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?
-
内存中如果加载一张500X500的png高清图片.应该是占用多少的内存?
-
WebView的性能优化 ?
-
Bitmap如何处理大图,如一张30M的大图,如何预防OOM?
-
内存回收机制与GC算法(各种算法的优缺点以及应用场景);GC原理时机以及GC对象
-
性能优化,怎么保证应用启动不卡顿? 黑白屏怎么处理?
-
……
如果是这样,我觉得我们大家先想清楚在年前这个时间段“自己想要什么”最为重要
当时跟朋友聊了半天,其实最重要的还是“性能优化”!
因为“性能优化”可以使我们APP“增加渲染机制,降低CPU耗时,减少卡顿,耗电优化、内存优化等等”。
作为一个程序员,性能优化是无法避开的事情,并且性能优化也是软件系统中最有挑战的工作之一,更是每个工程师都需要掌握的核心技能。
性能问题和Bug不同,后者的分析和解决思路更清晰,很多时候从应用日志即可直接找到问题根源,而性能问题,其排查思路更为复杂一些。
对App进行性能优化,是一个系统性的工程,对工程师的技术广度和技术深度都有所要求。 一个简单的应用,它不仅包含了应用代码本身,还和虚拟机、存储、网络等紧密相关,线上应用一旦出现了性能问题,需要我们从多方面去考虑。
但在实际的工作中,很多情况下只能看到症状,却完全不知道该从哪下手去排查和解决它。
与此同时,除了一些低级的代码逻辑引发的性能问题外,很多性能问题隐藏的较深,即便能够排查,排查起来也会比较困难,需要我们对应用的各个子模块、应用所使用的框架和组件的原理有所了解,同时掌握一定的性能优化工具和经验。
在大厂的面试中,性能优化也是经常会被问到的题目,用来考察是否有实际的线上问题处理经验。
-
ui优化除了在布局上处理,还有其他方式没?
-
启动优化时除了在application的oncreate的方法中使用异步线程加载部分资源外,还有什么方式?
-
为什么jvm设置了标记和回收算法,在标记的同时也做回收不行么?为什么?
-
通过jvm的标记回收算法,你能想到这种优化方式能如何使用到自己的项目中,请举例说明
-
性能优化的本质是什么?请说一下你的理解!
为了帮助大家搞清楚这些问题,我特别整理了一套系统全面的性能优化文档分享给大家。
如果你有需要查看可以直接去 我GitHub笔记文档中查看:https://github.com/733gh/GH-Android-Review-master
在这里我还分享一份由几位大佬一起收录整理的Android学习PDF+架构视频+面试文档+学习核心笔记,高级架构技术进阶脑图、Android开发面试专题文档,高级进阶架构文档
这些都是我闲暇还会反复翻阅的精品文档。可以有效的帮助大家掌握知识、理解原理。当然你也可以拿去查漏补缺,提升自身的竞争力。
大家可以去我 GitHub 项目文档中查阅:https://github.com/733gh/Android-T3
喜欢本文的话,不妨顺手给我点个赞、评论区留言或者转发支持一下呗~
网友评论