复习之 笔试题知识点总结

依然范特西╮ 提交于 2019-11-27 02:55:30

1. 各种排序算法的优缺点

例题:对序列(12,18,22,38,39,49,79,89)进行排序,最不适合的算法是()

  1. 冒泡排序
  2. 快速排序
  3. 归并排序
  4. 插入排序

总结:

  1. 冒泡排序:优点:稳定; 缺点:慢,每次只能移动相邻两个数据。时间复杂度:O(n2)
  2. 选择排序:优点:移动数据的次数已知(n-1次);缺点:不稳定。时间复杂度:O(n2)
  3. 插入排序:优点:稳定,快;缺点:比较次数不一定,比较次数越少,插入点后的数据移动越多。时间复杂度:O(n2)
  4. 缩小增量排序/希尔排序:优点:快,数据移动少; 缺点:不稳定,d的取值是多少,应取多少个不同的值,都无法确切知道,只能凭经验来取。时间复杂度:O(nlogn)
  5. 快速排序:优点:快,数据移动少; 缺点:不稳定。时间复杂度:O(nlogn) 平均时间, O(n2) 最坏情况; 对于大的、乱序串列一般认为是最快的已知排序算法。
  6. 箱排序/桶排序:优点:快;缺点:数据范围必须为正整数并且比较小。时间复杂度:O(n); 需要 O(k) 额外存储空间
  7. 堆排序:优点:对于较大的序列,将表现出优越的性能。缺点:小规模的序列中不合适。时间复杂度:O(nlogn)
  8. 归并排序 (merge sort)— O(n log n); 需要 O(n) 额外存储空间

https://www.cnblogs.com/zhaoshuai1215/p/3448154.html

 

 

2. IP地址,子网掩码

ip地址由网络号 + 主机号组成。
划分子网后为 网络号+ 子网号 + 主机号
子网掩码用于掩盖网络号和子网号。
掩码一共有32位,而且是每8位为一组。/24代表是24位掩码,也就是掩码的前24位都是1,后8位都是0,所以转换成十进制就是255.255.255.0,一个标准的C类地址的掩码
 
例题:主机IP为200.15.13.13/23,其子网掩码是()
23 -》 11111111 11111111 11111110 00000000
答案:255.255.254.0
 
例题:总部给某分公司分配的网络地址是172.16.2.0/24,该分公司有三个部门,每个部门计算机不多于30台,在网络配置时,进行子网划分,可以使用的子网掩码是()
255.255.255.128
255.255.255.192
255.255.255.224
255.255.255.240
1.分公司分配的网络地址是172.16.2.0/24,子网掩码就是11111111.11111111.11111111.00000000,(24个1);
2.分公司3个部门,那么就用第25位和第26位来区分三个部门,11111111.11111111.11111111.00000000(00~11)
3.那么各个部门用来区分自己的子网掩码只剩下最后6位(27~32位)来表示了;
4.若用255.255.255.192,最后8位是11000000,只能表示11000000~11111111除去广播地址一共62台
5.若用255.255.255.224,最后8位是11100000,只能表示11100000~11111111除去广播地址一共30台
6.若用255.255.255.240,最后8位是11110000,只能表示11110000~11111111除去广播地址一共14台
答案: B C
 

 

3. 软件测试的四个阶段,单元测试、集成测试、系统测试、验收测试

一、单元测试 
单元测试是对软件中的最小可验证单元进行检查和验证。比如对Java中的类和方法的测试。

测试原则: 
1、尽可能保证测试用例相互独立(测试用例中不能直接调用其他类的方法,而应在测试用例中重写模拟方法); 
2、此阶段一般由软件的开发人员来实施,用以检验所开发的代码功能符合自己的设计要求。

单元测试的好处: 
1、尽早的发现缺陷; 
2、利于重构; 
3、简化集成; 
4、文档; 
5、用于设计。

单元测试的不足: 
1、不可能覆盖所有的执行路径,所以不可能保证捕捉到所有路径的错误; 
2、每行代码需要3~5行代码进行单元测试,存在投入与产出的平衡。

 

二、集成测试 
集成测试是在单元测试的基础上,把软件单元按照软件概要设计规格说明的规格要求,组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求。

集成测试包括BigBang、自顶向下、自底向上、核心系统集成、高频集成。

 

三、系统测试 
将经过集成测试的软件,作为计算机系统的一部分,与系统中其他部分结合起来,在实际运行环境下进行一系列严格有效的测试,以发现软件潜在的问题,保证系统的正常运行。

集成测试和系统测试之间的比较: 
1、测试内容:集成测试是测试各个单元模块之间的接口,系统测试是测试整个系统的功能和性能; 
2、测试角度:集成测试偏重于技术的角度进行测试,系统测试是偏重于业务的角度进行测试。

 

四、验收测试/确认测试
也称交付测试,是针对用户需求、业务流程进行的正式的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。

验收测试包括alpha测试和beta测试,alpha测试是由开发者进行的软件测试,beta测试是由用户在脱离开发环境下进行的软件测试。

 
 

4. list,set,map

 

List 是可重复集合,有序集合,可以存放重复的数据 (有序:存进是什么顺序,取出时还是什么顺序)
Set 是不可重复集合,这两个接口都实现了 Collection 父接口。
Map 未继承 Collection,而是独立的接口,Map 是一种把键对象和值对象进行映射的集合,它的每一个元素都包含了一对键对象和值对象,Map 中存储的数据是没有顺序的, 其 key 是不能重复的,它的值是可以有重复的。
 

List 的实现类有 ArrayList,Vector 和 LinkedList:

ArrayList 和 Vector 内部是线性动态数组结构,在查询效率上会高很多,Vector 是线程安全的,相比 ArrayList 线程不安全的,性能会稍慢一些。

LinkedList:是双向链表的数据结构存储数据,在做查询时会按照序号索引数据进行前向或后向遍历,查询效率偏低,但插入数据时只需要记录本项的前后项即可,所以插入速度较快。

 

Set 的实现类有 HashSet 和 TreeSet;都是线程不安全

HashSet:内部是由哈希表(实际上是一个 HashMap 实例)支持的。增删和查询效率都高,它不保证 set 元素的迭代顺序。哈希表本质是一个数组,只不过数组中的每一个元素又是单向链表。

TreeSet:TreeSet 使用元素的自然顺序对元素进行排序,或者根据创建 set 时提供的 Comparator 进行排序。

 

Map 接口有三个实现类:Hashtable,HashMap,TreeMap,LinkedHashMap;

Hashtable:内部存储的键值对是无序的是按照哈希算法进行排序,与 HashMap 最大的区别就是线程安全。键或者值不能为 null,为 null 就会抛出空指针异常。

HashMap:线程不安全,可以存null键和null值,不保证元素的顺序恒久不变,它的底层使用的是数组和链表,通过hashCode()方法和equals方法保证键的唯一性。

TreeMap:基于红黑树 (red-black tree) 数据结构实现,按 key 排序,默认的排序方式是升序。

LinkedHashMap:有序的 Map 集合实现类,相当于一个栈,先 put 进去的最后出来,先进后出。

 
 

5. 信号传输

  1. 单工数据传输只支持数据在一个方向上传输;在同一时间只有一方能接受或发送信息,不能实现双向通信。

  2. 半双工数据传输允许数据在两个方向上传输,在某时刻,只允许数据在一个方向上传输;
  3. 全双工数据通信允许数据同时在两个方向上传输,在同一时间可以同时接受和发送信息,进行双向通信;
 

6. UML图

 

 

用例图

描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。


类图
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。


对象图
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。


包图
包图用于描述系统的分层结构,由包或类组成,表示包与包之间的关系。


活动图
描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。


状态图
描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。


序列图(顺序图)
序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。


协作图
和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。


构件图(组件图)
描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件是软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。


部署图(配置图)
是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。部署图用于表示一组物理结点的集合及结点间的相互关系,从而建立了系统物理层面的模型。

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!