阿里巴巴--测试开发工程师--一面(2021/3/3)
-
做一个简单的自我介绍(介绍的时候有些卡壳)
- 姓名-学校-公司-工作经验-负责的项目-做什么-平时日常生活
-
你觉得做的有挑战或者是一个完备的项目
- 我讲的是搭建imobile自动化测试框架,以及对自动化框架的优化,(UiAutomator描述卡壳),opencv优化:做差、腐蚀、膨胀来对图像降噪,最后做了一个二值化
- 介绍下超图公司,我觉得用几句简单的话来描述超图还是对面试挺重要的。业务上主要分为基础软件、应用软件和云服务,我目前做的就是基础软件这部分业务的工作,地图和 导航里的最优路径分析(最近设施分析),主要还是介绍下 分析和展示上面来
-
你觉得平常工作应该测试的重点是什么(从风险的角度,可能出现问题而引起公司的损失,包括一些公共地图的法律问题),从这块来分析来说明测试的重点,是性能还是某些功能还是什么方面;
- 我觉得从风险角度来看,就是保证用户不流失,那么怎么来保证用户不会流失呢,我觉得可以从以下方面来测试:
- 一是最基础的功能,可能用户用某一个软件,虽然软件的功能很多,但是大部分时间内用的功能数量不会增加,我们会针对这些最基础的功能,规划各种场景的测试
- 基础功能保证正确性后,会对这些功能在规划性能测试
- 客户想来用的功能一定要保证质量,三维方面我们软件相比于其他产品很有优势,在这块我们也会规划各种的专项测试,联动客户整套的使用逻辑来保证质量
- 我觉得从风险角度来看,就是保证用户不流失,那么怎么来保证用户不会流失呢,我觉得可以从以下方面来测试:
-
从项目跳出来,来看整个产品的测试比较重要的点和测试的难点(我提到了文档,那么在没有文档的情况下怎么做测试,平时在工作上是怎么沟通的,有什么想法来解决)
- 这个问题,后续我在继续思考思考
- 第二点,没有文档,这个本来就是一个很大的产品缺陷,他会导致用户无法使用,测试期间没有文档,我会对照着功能列表以及产品的backlog来规划测试用例,并且测试期间遇到的问题会反馈给产品的文档开发工程师,也会给他说一些使用产品上需要注意的东西,来帮助完善文档。文档上也是我们测试需要关注到的
-
每一次迭代会引发产品的变更,那么测试用例的结果有可能发生改变,你是怎么做的
- 首先每次一个完整的流程测试完,都会有变化,比如数据突然增加,就回去人工核对,查看不通过的原因,当然每一条不通过的原因都会在日志里记录,回去看那些记录,然后来判断是图像对比还是程序崩溃 或者 功能发生错误,会重现那个功能来定位是否是缺陷
-
ArrayList和LinkedList的区别
- ArrayList使用数组的方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,他们都允许直接按序号索引元素,但是随机插入和删除元素要涉及到数组元素的移动、拷贝等操作,所以相对比较索引数据快而插入慢。LinkedList使用双向链表来存储数据,如果随机索引的话会使用到Node方法,底层是通过二分来实现的,但是插入顺序的时候只需要记录本条数据的前后即可,所以插入数据较快。对于顺序操作,LinkList不一定比ArrayList慢,对于随机操作的add和remove,ArrayList不一定比LinkList慢(ArrayList底层由于是动态数组,因此并不是每次add和remove的时候都需要创建新数组)
-
HashMap和HashTable的区别
-
1.安全性
Hashtable是线程安全,HashMap是非线程安全。HashMap的性能会高于Hashtable,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用
Collections.synchronizedMap()
方法来获取一个线程安全的集合(Collections.synchronizedMap()
实现原理是Collections定义了一个SynchronizedMap
的内部类,这个类实现了Map接口,在调用方法时使用synchronized
来保证线程同步2.是否可以使用null作为key
HashMap可以使用null作为key,不过建议还是尽量避免这样使用。HashMap以null作为key时,总是存储在table数组的第一个节点上。而Hashtable则不允许null作为key
3.继承了什么,实现了什么
HashMap继承了AbstractMap,HashTable继承Dictionary抽象类,两者均实现Map接口
4.默认容量及如何扩容
HashMap的初始容量为16,Hashtable初始容量为11,两者的填充因子默认都是0.75。HashMap扩容时是当前容量翻倍即:
capacity
2
,Hashtable扩容时是容量翻倍+1即:capacity
(2+1)
6.底层实现
HashMap和Hashtable的底层实现都是
数组
+链表
结构实现7.计算hash的方法不同
Hashtable计算hash是直接使用key的hashcode对table数组的长度直接进行取模
HashMap计算hash对key的hashcode进行了二次hash,以获得更好的散列值,然后对table数组长度取模
-
讲讲HashMap
-
在浏览器中输入URL到页面出现,都经过了什么过程
- 1.DNS解析
- 2.TCP连接
- 3.发送HTTP请求
- 4.服务器处理请求并返回HTTP报文
- 5.浏览器解析渲染页面
- 6.连接结束
-
MySQL和MongoDB的区别
-
一、关系型数据库-MySQL
1、在不同的引擎上有不同的存储方式。
2、查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。
3、开源数据库的份额在不断增加,mysql的份额也在持续增长。
4、缺点就是在海量数据处理的时候效率会显著变慢。二、非关系型数据库-MongoDB
非关系型数据库(nosql ),属于文档型数据库。先解释一下文档的数据库,即可以存放xml、json、bson类型系那个的数据。这些数据具备自述性,呈现分层的树状数据结构。数据结构由键值(key=>value)对组成。
1、存储方式:虚拟内存+持久化。
2、查询语句:是独特的MongoDB的查询方式。
3、适合场景:事件的记录,内容管理或者博客平台等等。
4、架构特点:可以通过副本集,以及分片来实现高可用。
5、数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。
6、成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。三、MongoDB优势与劣势
优势:
1、在适量级的内存的MongoDB的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。
2、MongoDB的高可用和集群架构拥有十分高的扩展性。
3、在副本集中,当主库遇到问题,无法继续提供服务的时候,副本集将选举一个新的主库继续提供服务。
4、MongoDB的Bson和JSon格式的数据十分适合文档格式的存储与查询。
劣势:
1、 不支持事务操作。MongoDB本身没有自带事务机制,若需要在MongoDB中实现事务机制,需通过一个额外的表,从逻辑上自行实现事务。
2、 应用经验少,由于NoSQL兴起时间短,应用经验相比关系型数据库较少。
3、MongoDB占用空间过大。
-
- 数据库的索引(MySQL的)