- 面试题(除个别外)及部分解析答案来自牛客网https://www.nowcoder.com/exam/interview/
- 以下所述内容并不是百分之百正确,仅供参考。
-
16 手写代码:合并两个排序数组
- Merge
- 1 先将两个数组排序
- 2 循环比较,小的填入第三个数组
- 3 最后剩下的部分数组写进第三个数组
- https://blog.csdn.net/weixin_28872169/article/details/86215815
- https://blog.csdn.net/yuzhao727/article/details/123466865
// python
// merge two sort arrays // 先把两个数组从大到小排序,然后再循环比较,小的加到新数组中
//# 功能:对两个列表排序 //# input:两个列表 //# output:不去重的合并列表、合并后去重的列表 def merge_two_arrays(list_a, list_b): if not list_a: return list_b if not list_b: return list_a list_c = [] list_a.sort() list_b.sort() len_a = len(list_a) len_b = len(list_b) i=0 j=0 while i<len_a and j<len_b: if list_a[i]<=list_b[j]: list_c.append(list_a[i]) i+=1 elif list_a[i]>list_b[j]: list_c.append(list_b[j]) j+=1 if i == len_a: list_c.extend(list_b[j:]) break if j == len_b: list_c.extend(list_a[i:]) break list_d = sorted(set(list_c)) // 合并后去重 return list_c, list_d //# 功能:对两个列表排序 //# input:两个列表 //# output:合并前去除两个元素之间相同的元素比如以下两个列表中的2, //# 但不去除各自里重复的数字,比如4 def merge_two_arrays_no_same_element(list_a, list_b): if not list_a: return list_b if not list_b: return list_a list_c = [] list_a.sort() list_b.sort() len_a = len(list_a) len_b = len(list_b) i=0 j=0 while i<len_a and j<len_b: if list_a[i]<list_b[j]: list_c.append(list_a[i]) i+=1 elif list_a[i]>list_b[j]: list_c.append(list_b[j]) j+=1 else: list_c.append(list_a[i]) // 当两个列表元素相同时,只加一次,两者都前进 i+=1 j+=1 if i == len_a: list_c.extend(list_b[j:]) break if j == len_b: list_c.extend(list_a[i:]) break return list_c if __name == '__main__': list01 = [2,4 1,7,3,9,6,8] list02 = [99, 7, 0, 4, 24, 8, 55, 76, 4, 2] result = merge_two_arrays(list01, list02) result1 = merge_two_arrays_no_same_element(list01, list02) print(result[0]) // [0, 1, 2, 2, 3, 4, 4, 4, 6, 7, 7, 8, 8, 9, 24, 55, 76, 99] print(result[1]) // [0, 1, 2, 3, 4, 6, 7, 8, 9, 24, 55, 76, 99] print(result1) // [0, 1, 2, 3, 4, 4, 6, 7, 8, 9, 24, 55, 76, 99]
-
17 TCP和UDP的区别
- TCP: Transmission Control Protocol 传输控制协议 运输层 基于字节流 点对点
- UDP: User Datagram Protocol 用户数据报(数据报文)协议 运输层 基于数据报文 点对多
- 以上从字面上可以区分出TCP和UDP
- 对于安全性而言,TCP更可靠。
- 对于效率性而言,UDP更快速。
- TCP用于传输保密性更高,但量不大的数据。登录账号、发送邮件等
- UDP用于传输保密性不高,但量很大的数据。加载音乐、视频等
- 来源:https://www.cnblogs.com/williamjie/p/9390164.html
-
牛客网解题思路:
- 1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
- 2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
- 3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
- 4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
- 5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
- 6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
-
18介绍单元测试、集成测试、系统测试、验收测试、回归测试
- 单元测试:是测试工作中的最小测试单位,小到一个功能函数,大到一个模块。基于代码来开展。
- 集成测试:是在单元测试的基础之上,把若干个单元集成到一起,测试单元之间的逻辑和数据交换等。
- 系统测试:在集成测试之后,对整个系统展开的测试。这时候就要着眼于系统整体来开展测试,比如安全性、性能、兼容性等。
- 验收测试:在上线前,阿尔法测试前的一次测试,主要测试系统的业务流程,是否运行正常。
- 回归测试:是以前的版本出现bug,修改bug之后(在新版本中)进行的测试。
-
牛客网解析参考:
- 1 单元测试
- 是最小的软件设计单元模块的测试,确保单元模块的编码正确,根据《过程设计描述》进行白盒测试,静态测试代码的风格规则、程序设计和结构、业务逻辑,及早发现解决错误。
- 2 集成测试
- 是与模块接口相关的测试。按照《设计》中的描述,把通过单元测试的单元模块组合起来,通过自顶向下或自底向上的方式测试。
- 自顶向下:首先集成主模块,然后再按照深度优先或广度优先集成到整个结构。
- 自底向上:从原子模块(最基本的单元模块)开始向隶属于的父模块集成,不使用测试桩。
- 3 系统测试
- 是在系统实际运行环境中进行的测试。按照《系统整体需求说明书》进行黑盒测试,覆盖所有与系统相关的部件。测试与系统相关的所有依赖资源,包括软件、硬件、外部设备、数据、支持软件和接口等。
- 4 回归测试
- 是把老版本出现的bug再重新在新版本中测试,确保bug已被修改。理论上,当产生了新版本时,都需要进行回归测试。
- 5 验收测试
- 是《系统开发生命周期方法论》的一个阶段,包括Alpha和Beta测试。前者是用户在开发者控制的环境中进行,后者是用户在用户环境中进行。后者用户把问题报告给开发者,开发者做最后的修改,发布最终的软件。
-
19 测试和开发需要怎么合作才能使软件的质量得到更好的保障?
- 及时沟通,不让问题落地,合作共赢。工作不是一个人的独角戏,而是一项社会化的活动。在工作期间,就是职场的角色,尽量把生活中的色彩暂时放在一边。
- 双方多交换意见,对一些工作的时间节点达成一致时,就要尽力按时做到。没有哪一方应该为对方的过错、拖沓兜底。
- 熟悉各自独立的工作内容和两方需要合作的工作内容,明确职责,是自己的工作积极完成,不是自己的不接,分清状况。否则,为了完成不是自己的那些工作耽误自己进度,连累的就是整体。任何事项尽量落实到个人。
-
参考牛客解析:
- 结合W模型和V模型展开叙述
- 1 按照W模型结合,同步进行。尽早发现缺陷,降低开发成本
- 来源:黑马测试bilibili1024系列230视频截图
- V模型的不足之处
- 忽略对需求分析、系统设计的验证。
- 来源:黑马测试bilibili1024系列229视频截图
-
20 自动化测试有什么意义,都需要做些什么?
- 自动化测试的意义就是自动化,代替人工执行一些大量的、重复的测试活动。降低出错率,节省出来的时间和人力又可以投入到其他更复杂的测试活动中去,是对传统手工重复简单测试活动的优化。
- 自动化测试需要根据测试计划编写测试脚本,搭建自动化测试环境,并根据执行结果制定测试报告。测试脚本和环境也需要人员维护。
-
参考牛客网解析:
- 意义:
- 1 对新版本自动执行回归测试
- 2 执行传统人工测试很难做到的测试,例如压力测试、并发测试。
- 3 充分利用资源,节省人力物力时间,提高工作效率......
- 做什么:
- 1 判断项目适不适合开展自动化测试;
- 2 如果适合,进行需求分析,制定测试计划;
- 3 搭建测试框架,设计测试用例;
- 4 执行,评估。
标签:面试题,数组,集成系统,list,UDP,TCP,len,测试 From: https://www.cnblogs.com/annyanny/p/16705260.html