一年后搬运本地笔记之----2019 校招帆软面试题

一、测试相关

  1. 用例设计方法:等价划分、场景法
    等价类划分:三角形, 场景法 :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:
切断外部链接属性,只能应用于内部文件。

  1. 堆栈、队列的区别?
    答:堆栈是先进后出,队列是先进先出。栈的插入和删除操作只允许在表的尾端进行(在栈中成为“栈顶”),满足“FILO:First In Last Out”;队列只允许在表尾插入数据元素,在表头删除数据元素,满足“First In First Out”。

栈与队列的不同点:
(1).删除数据元素的位置不同,栈的删除操作在表尾进行,队列的删除操作在表头进行。
(2).应用场景不同;常见栈的应用场景包括括号问题的求解,表达式的转换和求值,函数调用和递归实现,深度优先搜索遍历等;常见的队列的应用场景包括计算机系统中各种资源的管理,消息缓冲器的管理和广度优先搜索遍历等。
(3).顺序栈能够实现多栈空间共享,而顺序队列不能。

  1. 怎样由两个堆栈组成一个队列?
    假设有两个堆栈,分别是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中出栈,则得到将要出队列的元素。

  2. 触发器的功能?
    答:触发器是一种特殊类型的存储过程,不由用户直接调用。创建触发器时会对其进行定义,以便在对特定表或列作特定类型的数据修改时执行。参考:https://www.cnblogs.com/yank/p/4193820.html

  3. QQ用的是TCP还是UDP?
    答: UDP为主,TCP为辅

  4. 既然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

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值