TA的每日心情 | 擦汗 昨天 09:02 |
---|
签到天数: 1042 天 连续签到: 4 天 [LV.10]测试总司令
|
1、测试基础面试题
问:介绍一下测试中 v 模型,以及各个阶段测试的概念、应用场景。以及你认为其中最重要的测试是哪一项。
答:测试 v 模型:
V 模型中,前半段是项目需要 – 规格说明 – 概要设计 – 详细设计;后半段是验收测试 – 系统测试 – 集成测试 – 单元测试
单元测试:是最小单元的测试工作;以详细设计描述作为指南;对重要的控制路径进行测试并发现模块内的错误;通常情况下采用白盒测试;对业务逻辑、代码风格和规则、程序设计和结构进行静态测试。
集成测试:通过测试发现与模块接口有关的问题。
系统测试:以整体说明书作为指南;针对整个产品系统进行测试;验证系统是否满足需求规格的定义;还需要包含软件所依赖的硬件、外设、支持的某些软件及接口结合起来,在系统实际运行环境下来进行测试。
验收测试:根据测试计划和结果对系统进行测试和接收;确定产品是否能够满足合同或用户所规定需求的测试;包括 Alpha 测试和 Beta 测试(Alpha 测试,是用户在开发者场所来进行,在一个可控环境;Beta 测试,有软件的最终用户在一个或多个用户场所来进行)。
我认为最重要的一项:系统测试,系统测试能够对软件所有功能进行测试,能够覆盖所有联合的部件,能够验收系统是否满足了需求规格的定义。
2、语言类面试题(python)
问:“new” 和 “init"的区别。
答:1)用法不同:new是创建实例,在实例创建之前调用,是个静态方法;init是初始化实例,是在实例被创建之后调用,用于设置对象属性的一些初始值(因此new是在init前被调用。如果new创建的是当前类的实例,会自动调用init函数,通过 return 调用的new的参数 cls 来保证当前类实例,如果其他类的类名,那么返回的是其他类的实例,就不会调用当前类的init函数)。
2)传入的参数不同:new至少有一个参数 cls,代表当前类,此参数有实例化时有 python 解释器自动识别;init至少有一个参数 self,就是这个 new 返回的实例,init在 new 基础上完成一些初始化的操作。
3)new必须有返回值,返回实例对象,init不需要返回值。
3、操作系统类面试题(linux)
问:线程和进程的区别
答:进程是具有独立功能的一次运行活动,系统会给进程进行资源分配和调度。线程是进程的一个实体,是 CPU 调度和分派的基本单位,是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,但它可以同属一个进程的其他线程共享进程所拥有的全部资源(一个程序至少有一个进程,一个进程至少有一个线程)。
4、计算机网络类面试题
问:TCP 和 UDP 的区别,以及 TCP 三次握手,四次挥手
答:TCP(Transmission control protocol)和 UDP(user datagrame protocol)的区别:
1)TCP 是面向连接的(即传输数据前需要先建立连接),UDP 是无连接的。
2)TCP 是提供可靠服务,保证数据的无差错(seq、acl)、不丢失(重传机制)、不重复。UDP 是尽最大努力交付,不保证可靠性。
3)TCP 链接是点到点,UDP 支持 1 对 1,1 对多,多对 1 和多对多的通信。
4)UDP 没有拥塞机制,网络出现拥塞也不会影响源主机的发送速率(对实时应用很有用,如 ip 电话,会议视频等)。
5)TCP 报文头字节有 20 字节,UDP 是 8 字节,TCP 协议号是 6,udp 是 17。
TCP 三次握手和四次挥手。在 TCP 报文头中有几个关键字段:seq,ack,SYN,FIN,ACK。一般来说都是客户端向服务端发起连接或者中断连接请求。
三次握手:
客户端(setsend)-----SYN=1,seq=x------>服务器端(listen);
客户端(established)<-------SYN=1,ACK=1,seq=y,ack=x+1-----服务器端(receive);
客户端(established)-------ACK=1,seq=x+1,ack=y+1---->服务器端(established)。然后传递数据。
四次挥手:
客户端-----FIN=1,seq=x---->服务器端;
客户端<----ACK=1,seq=y,ack=x+1—服务器端;
客户端<----FIN=1,ACK=1,seq=w,ack=x+1----服务器端;
客户端-----ACK=1,seq=x+1,ack=w+1---->服务器端
5、数据库类面试题(sql,mysql)
问:什么是数据库事物
数据库事务是数据库管理系统执行过程中的一个逻辑单元,由一个有限的数据库操作序列构成。一个数据库事务通常包含了一个序列的对数据库的读/写操作,包含有一下两个目的:1、为数据库操作序列提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法;2 当多个应用程序并在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作相互干扰。
当事务被提交给 DBMS(数据库管理系统),则 DBMS(数据库管理系统)需要确保该事务中的所有操作都成功完成且其结果被永久保存在数据库中,如果事务中有的操作没有成功完成,则事务中的所有操作都需要被回滚,回到事务执行前的状态;同时,该事务对数据库或者其他事务的执行无影响,所有的事务都好像在独立的运行。
数据库事务拥有一下四个特性,被称之为 ACID 特性:
1)原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行。
2)一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束。
3)隔离性(Lsolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行。
4)持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中。
|
|