我将军

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

 

面试公司:帆软

岗位:测试工程师

面试:二面 

时长: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

 

posted on 2018-09-03 15:33  我将军  阅读(252)  评论(0编辑  收藏  举报