注:因为实际开发与参考答案会有所不同,再者怕误导大家,所以这些面试题答案还是自己去理解!面试官会针对简历中提到的知识点由浅入深提问,所以不要背答案,多理解。
1.图片的三级缓存中,图片加载到内存中,如果内存快爆了,会发生什么?怎么处理?
参考回答:
首先我们要清楚图片的三级缓存是如何的
如果内存足够时不回收。内存不够时就回收软引用对象
2.内存中如果加载一张500X500的png高清图片.应该是占用多少的内存?
参考回答:
- 不考虑屏幕比的话:占用内存=500 * 500 * 4 = 1000000B ≈ 0.95MB
- 考虑屏幕比的的话:占用内存= 宽度像素 x (inTargetDensity / inDensity) x 高度像素 x (inTargetDensity / inDensity)x 一个像素所占的内存字节大小
- inDensity表示目标图片的dpi(放在哪个资源文件夹下),inTargetDensity表示目标屏幕的dpi
3.WebView的性能优化 ?
参考回答:
一个加载网页的过程中,native、网络、后端处理、CPU都会参与,各自都有必要的工作和依赖关系;让他们相互并行处理而不是相互阻塞才可以让网页加载更快:
- WebView初始化慢,可以在初始化同时先请求数据,让后端和网络不要闲着。
- 常用 JS 本地化及延迟加载,使用第三方浏览内核
- 后端处理慢,可以让服务器分trunk输出,在后端计算的同时前端也加载网络静态资源。
- 脚本执行慢,就让脚本在最后运行,不阻塞页面解析。
- 同时,合理的预加载、预缓存可以让加载速度的瓶颈更小。
- WebView初始化慢,就随时初始化好一个WebView待用
- DNS和链接慢,想办法复用客户端使用的域名和链接。
4.Bitmap如何处理大图,如一张30M的大图,如何预防OOM?
参考回答:避免OOM的问题就需要对大图片的加载进行管理,主要通过缩放来减小图片的内存占