2021-06-01

阿里巴巴--测试开发工程师--一面(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的)

你可能感兴趣的:(2021-06-01)