面试公司:帆软
岗位:测试工程师
面试:二面
时长:1h
结果:结束一周后拿offer,但实际签三方要提前到公司参加2到3周的考核
面试问题
一、测试技术
1、用例设计方法:等价划分、场景法
1.1 等价类划分:三角形
1.2 场景法 :ATM--基本流,备选流
2、测试管理工具:jira,在工作中怎么对BUG进行跟踪维护
3、怎样测一个ATM?
4、性能测试,是否有用过?
二、C语言、数据结构和算法
1、全局变量加个static?
2、全局变量和局部变量的区别?当两者名字一样时调用时是优先局部变量还是全局变量?
3、堆栈、队列的区别?
4、怎样由两个堆栈组成一个队列?
5、快排的时间、空间复杂度?
6、在工作中由读过开发的代码吗?
三、数据库
1、说一下触发器,有什么作用
2、左外链接和右外链接
3、平时工作中用到什么数据库知识?
四、计算机网络
1、TCP和UDP的区别
2、QQ用的是TCP还是UDP?
3、既然QQ用的是UDP,那怎样保证数据消息传输可靠性呢?
4、如果只开放80端口,能否登录QQ?
5、如果不用VPN的情况下访问外国网站,那返回什么--404
6、fidder抓包返回的数据有哪些?
7、返回501是什么?200呢?
五、趣味问题
1、硬币能用来做什么
1.1 硬度
1.2 厚度
1.3 花型
1.4 颜色
问题解答
1、全局变量加个static?
答:被定义为全局静态变量。内存位置为静态存储区(静态存储区在整个程序运行期间都存在),未经初始化的全局静态变量会被程序自动初始化为0,全局静态变量在声明他的文件之外是不可见的。准确地讲从定义之处开始到文件结尾。任何声明为不带static属性的全局变量和函数都是公共的,可以被其它模块访问。如果局部变量和全局变量重名,局部变量会暂时覆盖掉全局变量。
局部变量:
创建在栈区(向下生长),生命周期存在于当前作用域中。
创建时若未初始化,则为随机值。
全局变量:
创建在static区,生命周期一直存在。
静态局部变量:
切断了外部链接属性。创建在static区。
创建时若未初始化,则为0。
全局变量和静态变量的存储是放在一块的,初始化了的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
全局静态变量:
切断了外部链接属性,创建在static区,生命周期一直存在。
创建时若未初始化,则为0。
extern:
有外部链接属性,即可检测到外部文件。
static:
切断外部链接属性,只能应用于内部文件。
2、堆栈、队列的区别?
答:堆栈是先进后出,队列是先进先出。栈的插入和删除操作只允许在表的尾端进行(在栈中成为“栈顶”),满足“FILO:First In Last Out”;队列只允许在表尾插入数据元素,在表头删除数据元素,满足“First In First Out”。
栈与队列的不同点:
(1).删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
(2).应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
(3).顺序栈能够实现多栈空间共享,而顺序队列不能。
3、怎样由两个堆栈组成一个队列?
假设有两个堆栈,分别是s1,s2,现在有数列“1,2,3,4,5”,要让这个数列实现先进先出的功能,也就是用两个堆栈组成一个队列,如何实现?
分析:
先将数列压入栈s1,数列在栈中由顶到底的元素为“5,4,3,2,1”,再将数列压入栈s2,数列在栈中由顶到底的元素为“1,2,3,4,5”,如此出栈,则是“1,2,3,4,5”。
必须注意,实现队列中的入队操作以及出队操作,并非如同上述操作那么直观。上述操作有一个前提,即两个栈都没有元素。而一般情况,s1和s2中都可能有元素或者没有元素。所以要抽象出更一般的入队以及出队操作。
入队操作:先将s2中的所有元素出栈,再压入s1中,将要进栈的元素压入s1。
出队操作:先将s1中的所有元素出栈,再压入s2,再从s2中出栈,则得到将要出队列的元素。
4、触发器的功能?
答:触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。参考:https://www.cnblogs.com/yank/p/4193820.html
5、QQ用的是TCP还是UDP?
答: UDP为主,TCP为辅
6、既然QQ用的是UDP,那怎样保证数据消息传输可靠性呢?
答:腾讯采用了上层协议来保证可靠传输:如果客户端使用UDP协议发出消息后,服务器收到该包,需要使用UDP协议发回一个应答包。如此来保证消息可以无遗漏传输。之所以会发生在客户端明明看到“消息发送失败”但对方又收到了这个消息的情况,就是因为客户端发出的消息服务器已经收到并转发成功,但客户端由于网络原因没有收到服务器的应答包引起的
什么情况下适合用UDP?
--类似于图像、声音等对可靠性要求没有那么高的业务可以用UDP,他们不需要准确存储对准确性无要求但要求速度快。类似于文本、程序、文件等要求可靠的数据最好就用TCP,但会牺牲一些速度。不管UDP还是TCP,最终登陆成功之后,QQ都会有一个TCP连接来保持在线状态。这个TCP连接的远程端口一般是80,采用UDP方式登陆的时候,端口是8000。 UDP协议是无连接方式的协议,它的效率高,速度快,占资源少,但是其传输机制为不可靠传送,必须依靠辅助的算法来完成传输控制。QQ采用的通信协议以UDP为主,辅以TCP协议。由于QQ的服务器设计容量是海量级的应用,一台服务器要同时容纳十几万的并发连接,因此服务器端只有采用UDP协议与客户端进行通讯才能保证这种超大规模的服务。参考:https://blog.csdn.net/pmt123456/article/details/55216555