测试技术面

面试特点

  1. 防止作弊或者高分低能;
  2. 综合考量面试者,除了答题结果,还有本人的外貌气质,言行状态等考核;
  3. 根据实际情况调整考题方向和深度,尽可能发掘面试者本身的特长和优势;
  4. 通过互动有效引导面试者一层层解析问题,看看真实实力在什么水平;

面试题

编程

  1. 有面值3元邮票100张,7元邮票50张,11元邮票50张;问:可以组合出多少种不同面值的邮资?(7分钟,写不出可以谈谈心,failed)
    思路:3层循环记录sum值,通过数组保存不重复sum值
  2. 有面值3元邮票100张,7元邮票50张,11元邮票50张;给定面值x,x>0,问是否可以凑出该面值?要求递归求解(10分钟)
    伪码:
boolean canPayIt(int remainPostage, oneCount, twoCount, fiveCount){
	#出口
	if(remainPostage < 0 || oneCount < 0 || twoCount < 0 || fiveCount < 0) return false;
	if(remainPostage == 0)return true;
	#递归
	return canPayIt(remainPostage-5, oneCount, twoCount, fiveCount-1) || canPayIt(remainPostage-2, oneCount, twoCount-1, fiveCount) || canPayIt(remainPostage-1, oneCount-1, towCount, fiveCount)
}

linux

  1. 写出10个常用的命令(2分钟)
  2. 查看文件的第100到200行,都有哪些方法?(5分钟)

数据库

有个student数据表,分别有字段:name 姓名,sex 性别,age 年龄(5分钟)

  1. 把你自己的信息插入到该数据表;
  2. 把所有学生的年龄加1;
  3. 删除掉所有年龄小于20岁,或者年龄大于25岁,且性别为男的数据;
  4. 查询女生在哪些年龄的人数是大于10人的,需要查询出年龄和其女生人数;
    select age, count(*) from student where sex = ‘女’ group by age having count(*) > 10;

测试

  1. 针对第2道编程题编写测试用例(7分钟)
  2. 淘宝手机客户端的搜索功能:进入首页,输入关键字,点击查询,出现商品列表。需要测试哪些方面?(10分钟)

其他

  1. 在tcp连接的三次握手中最后一次中丢包会发生什么情况?

服务器收到SYN包后发出SYN+ACK数据包,服务器进入SYN_RECV状态。
而这个时候客户端发送ACK给服务器失败了,服务器没办法进入ESTABLISH状态,这个时候肯定不能传输数据的,如果客户端开始发送数据,会收到服务器的RST包响应,从而知道服务器端发生错误。
不论客户端主动发送数据与否,服务器都会有定时器发送第二步SYN+ACK数据包,如果客户端再次发送ACK成功,建立连接。
如果一直不成功,服务器根据超时设置,在超时之后会给客户端发RST报文,进入CLOSED状态,这个时候客户端应该也会关闭连接。

  1. 为什么需要三次握手,而不是两次握手?

防止失效的连接请求报文段被服务端接收,从而产生错误。
二次握手时,如果网络拥塞,客户端发送的连接请求迟迟到不了服务端,客户端便超时重发请求,如果服务端正确接收并确认应答,双方便开始通信,通信结束后释放连接。此时,如果那个失效的连接请求抵达了服务端,由于只有两次握手,服务端收到请求就会进入ESTABLISHED状态,等待发送数据或主动发送数据。但此时的客户端早已进入CLOSED状态,服务端将会一直等待下去,这样浪费服务端连接资源。

  1. 操作系统中,虚拟内存使用的页面置换算法有哪几种,分别有什么特点?

1)先进先出页面置换算法(FIFO):
实现:创建一个 FIFO 队列(链表结构),来管理所有的内存页面。
缺点:缺页率会很高,实际中很少应用。
2)最近最久未使用置换算法(LRU):
实现:
计数器方式。在最简单的情况下,为每个页表条目关联一个使用时间域,并为 CPU 添加一个计数器。每次内存引用都会递增计数器,并将本次引用的页表的使用时间域更新为当前计数。需要替换时,需要搜索查找使用时间域最小的页表。
页码堆栈方式。每当页面被引用时,它就从堆栈中移除并放在顶部。这样,最近最少使用的页面总是在底部。
优点:缺页率较低。
缺点:需要硬件支持,更新的效率很低(如果每次引用都釆用中断以便更新时钟域或堆栈,那么它会使内存引用至少慢 10 倍,进而使用户进程运行慢 10 倍。)
3)第二次机会算法
实现:
许多系统都支持“引用位”。页表内的每个条目都关联着一个引用位。每当引用一个页面时(无论是对页面的字节进行读或写),它的页面引用位就被硬件置位。
第二次机会置换的基本算法是一种 FIFO 置换算法。然而,当选择了一个页面时,需要检查其引用位。如果值为 0,那么就直接置换此页面;如果引用位设置为 1,那么就给此页面第二次机会,清除其引用位标记,并继续如此来选择下一个 FIFO 页面。
优点:便于实现,并且是一种近似的LRU算法,缺页率比单纯的FIFO要低。
4)增强型第二次机会算法
通过将引用位和修改位作为有序对,可以改进二次机会算法。
有了这两个位,就有下面四种可能的类型:
(0,0):最近没有使用且没有修改的页面,最佳的页面置换。
(0,1):最近没有使用但修改过的页面,不太好的置换,因为在置换之前需要将页面写出。
(1,0):最近使用过但没有修改的页面,可能很快再次使用。
(1,1):最近使用过且修改过,可能很快再次使用,并且在置换之前需要将页面写出到磁盘。
当需要页面置换时,依次检查页面属于哪种类型,通过多次循环扫描来选择出最低类型中的第一个页面。
优点:为那些已修改页面赋予更高级别,从而降低了也页面置换中所需 I/O 的数量。

Kill Time

个人经历相关,如读学和选择等

理想,如理想中的QA是什么样子的?

你可能感兴趣的:(测试技术,探索)