前言
前几天去参加了一场面试。面试的题目大多很基础,有一道关于埋点的问题,面试官问我如果不用第三方SDK进行埋点,自己埋点的话,如何减少埋点对业务代码的入侵。
当时没想太多,就说创建一个 BaseView 类,在这个类中进行埋点的操作,然后使需要进行埋点操作的 View 继承这个 Base 类。后来想想,这个方案其实存在很多问题,因为让每个需要埋点的 View 去继承 BaseView 类,说明 View 需要自定义,会耗费很多的时间和精力,对于自带的 Button 等控件的埋点,这种方法又无法实现。所以说,其实在这个问题上,我答的不是很好,但可能之前的几个问题答得不错,面试官也没说什么,就说行,然后继续问下面的问题。
对于埋点,减少业务代码入侵这个问题,我回来想了想,或许用代理模式来实现,会是一个很好的选择。
就我身边的例子来说,很多开发者会存在以下3个问题:
- 对性能优化的流程不是很清晰。 初步定为一个疑似瓶颈点后,就兴高采烈地吭哧吭哧开始干,最终解决的问题其实只是一个浅层次的性能瓶颈,真实的问题的根源并未触达;
- 对性能瓶颈点的分析思路不是很清晰。 UI、网络、内存…这么多的性能指标,我到底该关注什么,应该从哪一块儿开始入手?
- 对性能优化的工具不了解。 遇到问题后,不清楚该用哪个工具,不知道通过工具得到的指标代表什么。
在大厂的面试中,性能优化也是经常会被问到的题目,用来考察是否有实际的线上问题处理经验。比如:
- ui优化除了在布局上处理,还有其他方式没?
- 启动优化时除了在application的oncreate的方法中使用异步线程加载部分资源外,还有什么方式?
- 为什么jvm设置了标记和回收算法,在标记的同时也做回收不行么?为什么?
- 通过jvm的标记回收算法,你能想到这种优化方式能如何使用到自己的项目中,请举例说明
- 性能优化的本质是什么?请说一下你的理解!
学习分享
在当下这个信息共享的时代,很多资源都可以在网络上找到,只取决于你愿不愿意找或是找的方法对不对了
很多朋友不是没有资料,大多都是有几十上百个G,但是杂乱无章,不知道怎么看从哪看起,甚至是看后就忘
如果大家觉得自己在网上找的资料非常杂乱、不成体系的话,我也分享一套给大家,比较系统,我平常自己也会经常研读。
2021最新上万页的大厂面试真题
七大模块学习资料:如NDK模块开发、Android框架体系架构…
只有系统,有方向的学习,才能在段时间内迅速提高自己的技术。
这份体系学习笔记,适应人群:
**第一,**学习知识比较碎片化,没有合理的学习路线与进阶方向。
**第二,**开发几年,不知道如何进阶更进一步,比较迷茫。
**第三,**到了合适的年纪,后续不知道该如何发展,转型管理,还是加强技术研究。如果你有需要,我这里恰好有为什么,不来领取!说不定能改变你现在的状态呢!
由于文章内容比较多,篇幅不允许,部分未展示内容以截图方式展示 。如有需要获取完整的资料文档的朋友点击我的【GitHub】免费获取。
%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)】免费获取。