前些天接到某公司的测开面试电话说要聊一聊,想想聊聊也没啥,就当长见识吧。结果半个多小时下来发现自己还是挺“受伤”的,也算有所收获吧。也印证了毫无准备的打战除非自身足够强大,不然就是会失败的。
但是还是挺感谢这个电话的,让我知道了自己的不足:
1、我没有利用好自己的优势,如果不是优势之前的经历或许不值得提太多,不然就是给自己挖坑。
2、看到了自己基础的薄弱,对于技术没有刨根问底,也没好好去研究掌握,随着工龄的增长,浅尝则止注定走不远吧。
3、分析问题可能还是不够全面,只考虑了怎么解决某个问题,而没有想到怎么多种情况,或者说当时回答的时候没有注意这个回答方向。
无论怎么说,吃一堑,长一智,没有做好就总结争取下次做的更好一点吧。
下面说说面试的内容,随便查一下网上的解答,回答的不好就学学咯。
1、RecyclerView和ListView的区别
1)缓存机制不同
层级不同:
RecyclerView比ListView多两级缓存,支持多个离ItemView缓存,支持开发者自定义缓存处理逻辑,支持所有RecyclerView共用同一个RecyclerViewPool(缓存池)。
2)布局效果、常用效果与API等不同
详细解答参考:https://www.jianshu.com/p/cd8244d1c19a
2、技术选型的依据
这个就是带过的说到,并没有具体谈,但是我感觉挺有必要的,面对现在各种自动化技术的发展是用appium,还是Airtest,遍历工具用哪个等等。为什么要用,效率的提升怎么看出来的。感觉是一个可以思考的地方。
3、原生monkey的原理
网上搜到这两个感觉有点知识点,平时没有太注意原理,光知道用也没想着怎么改改源码啥的:
https://blog.csdn.net/qq_18456543/article/details/76340389
https://www.cnblogs.com/season-xie/p/6376467.html
4、monkey和monkeyRunner区别
主要是一个是adb shell 命令触发随机事件进行点击,monkeyrunner是通过API触发执行,可以制定执行步骤,控制输入等等。
参考这个:https://www.cnblogs.com/huainanhai/p/11790025.html
5、appium和uiautomator的关系或者Airtest和uiautomator的区别
我回答了前面这个,我说的是uiautomator是底层自动化实现,appium最终也是通过这个实现自动化的,但是没说具体,还是参考网上答案吧。
这个答案比较简洁一点:https://www.jianshu.com/p/0920ca6b4c64
这个详细一点:https://www.cnblogs.com/aliceyang/p/11959387.html
6、Android进程间通信方式
哈哈,这个丢人了,忘记了。我想说AIDL,没想起来名字,然后说错了一个还胸有成竹的样子,真的是很久没有接触android的知识了,如果要面试也得刷刷android的面试题。
答案参考:https://blog.csdn.net/nnmmbb/article/details/89702950
7、内存溢出与内存泄露的区别及内存泄漏的原因
这个大概说了区别,原因和我说的不太一样呢,真是白学了,补课起来。
内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。
内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory leak会最终会导致out of memory!
详细答案参考:https://www.cnblogs.com/william-dai/p/10901653.html
8、性能数据收集的方式,举例帧率计算的原理
我说了dumpsys和top方式,但是面试官说这些本身也会有内存损耗,我问了还有啥方式,哈哈,有点搞笑吧,后面我也想到solo pi里面通过android 的API调用获取,但是没具体了解也没回答好。
帧率计算的原理答案参考:https://www.jianshu.com/p/940b3129a6db
很多android的优化文章参考:https://www.jianshu.com/p/38bf169ffdc6
9、一个长方形切分若干个等面积的正方形的,长方形切割完,正方形个数越少越好,要怎么切?
主要考思路,不同情况下是怎么处理的,如果是整数求最大公约数,如果是小数的话得另做处理。主要思路是递归。面试官说网上很多答案,我好像没搜到,哈哈。
10、为什么转做测试开发?
这个问题我也在想怎么回答比较好呢,我是说为了职业发展走得更长远,感觉可以再说一下自己喜欢的是什么,符合“喜欢+前景+钱途”应该就是我们选择的原因了。其实,我也不确定这样回答的好不好。
还有一些问题可能没记住,主要是针对我安卓开发经验及现在做的工作问了一些问题,其实很多东西我现在都没用了,如果真的是想换工作的话简历还是得好好更新一下。针对你自己做的,比较有价值的说说,而且要对你写的东西了解,不然人家一深入提问就懵了,面试可能就失败了,比如此刻的我。。。。总结结束!希望接下来自己学习不要总是浅尝则止,多多刨根问底吧。然后算法还是得系统的学习一下,理论不懂也说不出个关键来。最后偶尔学学英语的你还是要自信的speak english! 继续加油吧!
源自公众号 学习向前看