2016年网易笔面试真题及答案——软件测试工程师面试秘籍(42)

发表于:2022-2-09 09:21

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:G. li    来源:51Testing软件测试网原创

  3.9.15  2016年网易测试工程师笔试和面试真题及答案
  试题1.白盒测试使用的测试方法包括哪些?
  答案:白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试法、符号测试法、路径覆盖法以及程序变异法。

  试题2.Linux操作系统中kill -9表示的意义是什么?
  答案:kill命令的格式为kill -signal pid。其中,pid是进程号,可以用ps命令查看;signal是发送给进程的信号,数字9(或TERM)表示“无条件终止”。 

  试题3.说明黑盒测试中各方法的不同点。
  答案:黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。
  等价类划分法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例的方法。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的、常用的黑盒测试用例设计方法。
  错误推测法是基于经验和直觉推测程序中所有可能存在的错误,从而有针对性地设计测试用例的方法。
  边界值分析法是选择等价类的边界的测试用例设计方法。边界值分析法不但重视输入条件的边界,而且必须考虑输出域的边界。它是对等价类划分法的补充。
  正交试验设计法就是使用已经做好的正交表格来安排试验并进行数据分析的一种方法,目的是用最少的测试用例达到最高的测试覆盖率。

  试题4.对于逻辑表达式A&&B||C,要设计几组测试用例?
  答案:6组。具体设计如下。
  A=true,B=true,C=true。
  A=false,B=true,C=true。
  A=false,B=false,C=true。
  A=false,B=false,C=false。
  A=true,B=false,C=false。
  A=true,B=true,C=false。

  试题5.对于5枚硬币,要求两两接触,应如何排放?画图说明。
  答案:答案如图3.15所示。
图3.15  试题5的答案

  试题6.有100人参加答题,第1题有81人答对,第2题有91人答对,第3题有85人答对,第4题有79人答对,第5题有74人答对。答对3题及以上的人视为及格,至少有多少人及格?
  分析:相当于总共答了100道×5=500道。答对的题有81道+91道+85道+79道+74道=410道,因此答错的题有500道?410道=90道。
  题目问至少多少人及格,那么当不及格的人最多时,即符合题意。
  答错3道即为不及格,因此不及格的人数最多为90÷3=30,及格的人数至少有100?30=70。
  答案:至少有70人及格。

  试题7.选择你熟悉的语言,求字典的交集和并集。
  答案:利用Python实现。
a = set(xrange(1000))  
b = set(xrange(500, 1500))  
union = a | b  
inter = a & b 

  试题8.用Python随机产生一段英文字母。
  答案:代码如下。
import random
for i in range (11):
      for j in range(10):
            ij = random.randint(65, 90) + random.randint(0, 1) * 32
            print(chr(ij) ,end=' ')
      print()

  试题9.编写关于纸杯的测试用例。
  答案:从外观上,测试纸杯的容量、形状、高矮等。
  从性能上,测试气味大小、是否可以装100℃水、是否可以装0℃水等。
  从功能上,测试是否可以装水、碱性饮料、酸性饮料等。

  试题10.数据库的左连接与右连接的区别是什么?
  答案:左连接(left join)返回左表中的所有记录和右表中连接字段相等的记录。
  右连接(right join)返回右表中的所有记录和左表中连接字段相等的记录。

  试题11.针对一个网页的HTTP请求,如何验证格式和数据?怎样设计相应的测试用例?
  答案:对于HTTP请求,现在有很多现成的在线测试工具。根据网页请求类型(GET或者POST类型),通过在线测试工具验证格式和数据。测试用例根据参数分类来设计。

  3.9.16  2017年滴滴出行面试真题及答案
  试题?1.内存页式管理方式中,首先淘汰在内存中空闲(未被修改或读取)时间最长的帧,这种替换策略是(    )。
  A.先进先出(FIFO)B.最近最少使用(LRU)法
  C.优先级调度D.轮转法
  答案:B。

  试题2.进程P1依次申请资源S1,申请资源S2,释放资源S1,进程P2依次申请资源S2,申请资源S1,释放资源S2,若系统并发执行进程P1和P2,系统(    )。
  A.必定产生死锁B.可能产生死锁
  C.不会产生死锁D.无法确定是否会产生死锁
  答案:B。

  试题3.关于引用和指针,下面说法不正确的是(    )。
  A.引用和指针在声明后都有自己的内存空间
  B.引用必须在声明时初始化,而指针不用
  C.引用声明后,引用的对象不可改变,对象的值可以改变,指针可以随时改变指向的对象及对象的值
  D.空值NULL不能引用,而指针可以指向NULL
  分析:引用没有自己的内存空间,但指针有自己的内存空间。
  答案:A。

  试题4.关于排序,下面说法不正确的是(    )。
  A.快速排序算法的时间复杂度为O(Nlog2N),空间复杂度为O(log2N)
  B.归并排序是一种稳定的排序,堆排序和快速排序均不稳定
  C.序列基本有序时,快速排序退化成冒泡排序,通过直接插入元素排序速度最快
  D.归并排序算法的空间复杂度为O(N),堆排序算法的空间复杂度为O(log2N)
  分析:归并排序和堆排序算法的空间复杂度均为O(1),归并排序算法的时间复杂度为O(1)。
  答案:D。

  试题5.用二进制来编码字符串“abcdabeaa”,要求根据编码,能够解码回原来的字符串,二进制字符串的长度至少为(    )。
  A.17B.18C.19D.29
  分析:按照哈夫曼编码解码。
  答案:C。

  试题6.TCP关闭过程中,主动关闭方不可能处于的状态是(    )。
  A.FIN_WAIT_1B.FIN_WAIT_2C.CLOSE_WAITD.TIME_WAIT
  答案:C。

  试题7.已知二叉树的前序序列为BCDEFAG,中序序列为DCFAEGB,则后序序列为(    )。
  A.DAFEGCBB.DAEGFCBC.DAFGECBD.DAEFGCB
  答案:C。

  试题8.请选择下面程序的输出。(    )
#include <iostream>
using namespace std;
unsigned intGetTestNum(){
    static unsigned inta= 0;  
    staticunsigned int b= 1;  
    int c= a + b;
    a = b;
    b = c;
    return c;
}
int main(int argc, char* argv[]) {
    for(int i= 0; i < 9; i++) {
        GetTestNum();
    }   
    cout << GetTestNum()<< endl;
}

  A.1B.144C.89D.55
  分析:static修饰的值在运行期间只有一个副本。
  答案:C。

  试题9.图3.16描述了某子程序的处理流程,现要求用白盒测试对子程序进行测试。根据白盒测试常用的几种覆盖标准(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖(条件组合覆盖)、路径覆盖),从可供选择的答案中分别找出满足相应覆盖标准的最小的测试数据组并简述各种测试方法。条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中的每个条件的所有可能结果至少出现一次。请选择能够满足条件覆盖的选项。(    )
图3.16  某小程序的处理流程

  A.x=3 y=3 z=0; x=1 y=2 z=1
  B.x=1 y=2 z=0; x=2 y=1 z=1
  C.x=4 y=2 z=0; x=3 y=3 z=0; x=2 y=1 z=0; x=1 y=1 z=1
  D.x=4 y=2 z=0; x=1 y=2 z=1; x=2 y=1 z=0; x=1 y=1 z=1
  E.x=4 y=2 z=0
  F.x=4 y=2 z=0; x=1 y=1 z=1
  答案:A。

  试题10.在以下代码中,如果x=254,则函数返回值为(    )。
int func(int x){ 
     int countx= 0; 
     while(x) 
     {
          countx++;
          x= x&(x-1); 
     }
     return countx; 
}

  A.6B.7C.8D.0
  分析:x = x&(x-1)表示求x的二进制表达式有多少个1;若改成x =x|(x-1),则表示求x的二进制表达式有多少个0。
  答案:B。

  试题11.在进程状态转换时,(    )是不可能发生的。
  A.等待态→运行态B.运行态→就绪态
  C.运行态→等待态D.就绪态→运行态
  分析:正在运行的进程遇到I/O请求就会阻塞(等待);阻塞(等待)的进程得到I/O设备就会转换成就绪状态;在CPU的调度下,会给就绪状态的进程分配时间片;分配到时间片后就会执行进程。对于正在执行的进程,如果它的时间片用完了,就会转换成就绪状态。
  答案:A

  试题12.如果i=5,那么a=(++i)--之后,a和i的值分别是(    )。
  A.6,6B.5,6C.6,5D.5,5
  分析:(++i)的值为6,i的值变为6;(++i)--的值为6(先赋值再减1),i的值变为5。
  答案:C。

  试题13.DNS协议位于OSI 7层模型中的(    )。
  A.应用层B.网络层C.传输层D.会话层
  答案:A。

  试题14.下列算法中不属于稳定排序法的是(    )。
  A.插入排序法B.冒泡排序法C.快速排序法D.归并排序法
  答案:C。

  试题15.若以二叉树的根节点作为第1层节点,则第9层最多有(    )个节点。
  A.18B.256C.128D.64
  分析:满二叉树的每层节点个数是2k?1,所以有28=256。
  答案:B

  试题16.下列描述中,正确的一共有(    )个。
  (1)const char *p是一个常量指针,p的值不可修改。
  (2)在64位系统下,若char*p="abcdefghijk",则sizeof(p)为12。
  (3)内联函数会检查函数参数,所以调用开销显著大于宏。
  (4)重载是编译时确定的,虚函数是运行时绑定的。
  A.1B.2C.3D.4
  分析:指针指向的值不可修改,p的值可以修改,因此(1)不正确。
  对于32位编译器,32位系统下指针占用4字节;对于64位编译器,64位系统下指针占用8字节,因此(2)不正确。
  内联函数的调用开销不大于宏,因此(3)不正确。
  只有(4)是正确的。
  答案:A。

  试题17.关于Linux文件系统的软链接文件和硬链接文件,下面描述不正确的是(  )。
  A.软链接文件可以指向另外一个文件系统的文件
  B.硬链接文件会增加被指向文件的引用计数
  C.删除被指向文件时,对应的软链接文件会失效
  D.删除被指向文件时,对应的硬链接文件会失效
  答案:D。

  试题18.下列描述中,错误的是(  )。
  A.文件系统I/O自带缓冲区,以减少对磁盘文件的访问,提高系统性能
  B.通过select和epoll能同时监听处理多个I/O事件
  C.使用Linux进程间通信(Inter-Process Communication,IPC)中的pipe机制,从生产者写入数据到消费者消费数据,依次要经过生产者用户空间到生产者内核控件的复制,生产者内核空间到消费者内核空间的复制,消费者内核空间到消费者用户空间的复制
  D.C标准I/O库自带缓冲区,以减小fread()或fwrite()等带来的系统开销
  答案:C。

  试题19.以下函数的作用是(    )。
int func(int num, int i) { 
    int tmp = ~((1 << (i + 1)) -1); 
    return num & tmp;
 }

  A.检查num的第i位是否为0
  B.将num的位数据取反
  C.将num的最高位到第i位(包含i位)清零
  D.将num的第i位到第0位(包含第0位)清零
  答案:D。

  试题20.滴滴出行平台的出租车、快车、专车等业务都是基于地理位置的服务,乘客下单后,附近的司机很快能够收到订单。图3.17所示是简化版的分单模型设计。
图3.17  简化版的分单模型设计

    乘客创建订单时,会将订单信息写入订单池;若取消订单,则删除。司机出车时,将司机信息写入司机池;收车时,删除。
    订单分配模块会拉取订单和司机的信息,其中包含地理位置信息。根据位置进行匹配,最终为司机分配距自己5km内的订单。
  请根据以上信息,分析该系统中各模块的功能及特点,简述对该系统进行功能和性能测试的方法。
  答案:订单池模块的功能如下。
    包含用户的基本信息,如用户名、用户电话、所在位置、可选车的类型(出租车、私家车或其他车型)等。
    允许多用户同时登录,用户间互不影响。
    创建订单时需要填写上车的位置、目的地地址、预约时间及车型,在规定时间内可取消订单。
    订单创建后,将信息传递给订单分配模块。若成功取消订单,则订单池中的订单信息被删除。
  特点:允许多用户同时登录,具有数据写入、删除和传递功能。
  司机池模块的功能如下。
    包含司机的基本信息,如司机名、司机电话、所在位置、所开车的类型(出租车、私家车或其他车型)和车牌号、是否空车等。
    允许多用户同时登录,用户间互不影响。
    接受订单后,在司机池写入出车信息;订单完成后,在司机池写入收车信息。
  特点:允许多用户同时登录,具有数据写入、删除和传递功能,与订单池类似。
  订单分配模块的功能是拉取订单和司机的信息,其中包含地理位置信息。根据位置进行匹配,最终为司机分配距自己5km内的订单。
  特点:该模块是订单池和司机池的控制和分配中心,负责两者信息的匹配与调度。
  测试包括功能测试与性能测试。
  首先,进行功能测试。
  关于登录模块,测试用例如下。
    对输入(账号和密码)进行等价类和边界值分析相结合的用例测试,检测用户和司机能否成功登录。
    测试登录界面的风格与整体是否相融合、有无错别字等。
    单击文本框,能成功选中,并且鼠标指针由箭头转换为在相应文本框中开始位置的竖线光标。
  关于订单模块,测试用例如下。
    订单界面包含需求说明书上的所有功能按钮,且链接正常,可成功转到相应界面。
    测试用户的上车位置信息是由GPS定位还是手动输入。
    填写完所有信息后,“订单创建”按钮高亮,单击后出现“订单已创建成功,正等待司机接收”的提示信息。
    司机接受订单后会弹出相应提示,告知用户司机的一些基本信息,如司机当前所在位置、到达所需时间等。
    订单提交后,能在司机接受前取消订单。
  关于司机模块,测试用例如下。
    登录后可选择出车或收车状态。
    可以成功接受订单,接受订单后可获得用户的一些基本信息,如名字、电话、所在位置及目的地地址等。
  关于订单分配模块,测试用例如下。
    可以获取订单池和司机池的订单与出车信息。
    可以根据位置对两边的信息进行匹配,并给司机分配订单。
    订单被司机接受之后,向用户反馈司机的信息。
  然后,进行性能测试。
    测试由登录界面进入系统要多久。
    测试订单池最多能容纳多少个用户的订单,司机池最多能容纳多少个司机的信息。
    测试在同一时刻,最多允许多少个用户登录。
    测试用户登录后,能在系统中保持多长时间。
    测试是否支持网页登录。

查看《软件测试工程师面试秘籍》全部连载章节
版权声明:51Testing软件测试网获得人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号