2019.3.26牛客网第一套试题知识点整理——顺丰科技2019秋招信息安全工程师笔试题

1 二叉排序树:左子树<根<右子树
2 排序算法的时间复杂度:
冒泡、选择、插入——n*n(冒泡与选择的区别:冒泡排序是每一次都可能要交换,选择是最后只交换一次)
快速、堆——nlogn(快速排序不适合有序程序比较高的序列,因为递归深度大)
快速排序的代码实现:

#include <iostream>
using namespace std;
int getIndex(int *array, int low, int high);
void quickSort(int *array, int low, int high);
void main()
{
	int a[50];
	int n,i,index;
	cin >> n;
	int len = n;
	for (i = 0; i < len; i++)
	{
		cin >> a[i];
	}
	quickSort(a, 0, len - 1);
	for (i = 0; i < len; i++)
	{
		cout << a[i]<<"   ";
	}
}

int getIndex(int *array, int low, int high)
{
	//初始化
	int key = array[low];
	while (low<high)
	{
		while(low < high &&array[high] >= key) //注意是循环不是选择
			high--;
		array[low] = array[high];
		while (low < high &&array[low] <= key)
		    low++;
		array[high] = array[low];
	}
	array[low] = key;
	return low;
}

void quickSort(int *array, int low, int high)
{
	
	if(low<high)
	{ 
	int index = getIndex(array,low,high);
	quickSort(array, low, index - 1); 
	quickSort(array, index+1, high);
	}
}

常见排序属性大全:
在这里插入图片描述
3 静态数据/成员
静态数据成员可以初始化,但只能在类体外进行初始化。
静态数据成员既可以通过对象名引用,也可以通过类名来引用。
静态数据成员并不是属于对象的,而是属于类的,但类的对象可以引用它。
静态成员函数是类的一部分,而不是对象的一部分。
非静态成员函数有this指针,而静态成员函数没有this指针。由此决定了静态成员函数不能访问本类中的非静态成员。

4软件测试
单元测试对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及编码和详细设计文档。
确认测试主要是检查已实现的软件是否满足需求规格说明书中确定了的各种需求。
集成测试的主要目的是检查软件单位之间的接口是否正确,主要是针对程序内部结构进行测试,特别是对程序之间的接口进行测试。
系统测试是基于软件需求说明书的黑盒测试,是对已经集成好的软件系统进行彻底的测试,以验证软件系统的正确性和性能等满足其规约所指定的要求,检查软件的行为和输出是否正确。
5 链表和数组
数组支持随机访问
数组地址连续需要估计空间
数组增删需要挪动元素,时间复杂度为O(n),链表增删不需挪动元素,时间复杂度为O(1)
数组从栈中分配空间,链表从堆中分配空间。(一个由c/C++编译的程序占用的内存分为以下几个部分:栈区(stack)\堆区(heap)\全局区(静态区)(static)\文字常量区\程序代码区)
6 操作系统——进程
甲乙丙3个进程对某类资源的需求分别是7个、8个、3个。且目前已分别得到了3个、3个和2个资源,若系统还至少能提供( )个资源,则系统是安全的。
解析:丙需要一个,等丙执行完会释放3个,此时甲最多获得6个,因而甲还需要一个才能够正常运行,所以一共需要两个
7 操作系统
32位处理器,计算机中的位数指的是CPU一次能处理的最大位数。
32位处理器是指处理器的()是32位的。答:所有总线,包括控制、数据、地址总线。
8 计算机网络——TCP&UDP
TCP通过慢启动和拥塞避免进行拥塞控制,UDP不需要拥塞控制
TCP通过进行滑动窗口机制进行流量控制,UDP没有
UDP缓冲区小于报文长度,则会丢失报文
DNS(域名解析)协议运行在UDP协议之上,使用端口号53
9 UML图
用例图:描述角色以及角色与用例之间的连接关系。说明的是谁要使用系统,以及他们使用该系统可以做些什么。一个用例图包含了多个模型元素,如系统、参与者和用例,并且显示了这些元素之间的各种关系,如泛化、关联和依赖。
类图:描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。
对象图:与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
包图:包图用于描述系统的分层结构,由包或类组成,表示包与包之间的关系。
活动图:描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
状态图:描述类的对象所有可能的状态,以及事件发生时状态的转移条件。可以捕获对象、子系统和系统的生命周期。他们可以告知一个对象可以拥有的状态,并且事件(如消息的接收、时间的流逝、错误、条件变为真等)会怎么随着时间的推移来影响这些状态。一个状态图应该连接到所有具有清晰的可标识状态和复杂行为的类;该图可以确定类的行为,以及该行为如何根据当前的状态变化,也可以展示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
序列图(顺序图):序列图是用来显示你的参与者如何以一系列顺序的步骤与系统的对象交互的模型。顺序图可以用来展示对象之间是如何进行交互的。顺序图将显示的重点放在消息序列上,即强调消息是如何在对象之间被发送和接收的。
协作图:和序列图相似,显示对象间的动态合作关系。可以看成是类图和顺序图的交集,协作图建模对象或者角色,以及它们彼此之间是如何通信的。如果强调时间和顺序,则使用序列图;如果强调上下级关系,则选择协作图;这两种图合称为交互图。
构件图(组件图):描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件是软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
部署图(配置图):是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。部署图用于表示一组物理结点的集合及结点间的相互关系,从而建立了系统物理层面的模型。
10 基于终端的防护:anti-virus、HIPS、EDR
11 动态包过滤类型的防火墙会根据现有的会话的流量内容自动调整过滤规则

猜你喜欢

转载自blog.csdn.net/weixin_43854189/article/details/88830827