软件设计师 知识点拾遗 2024年上半年
软件设计师 知识点拾遗 2024年上半年
这一年的题说实话很玄乎…刚开始做的时候甚至觉得这套是网上的人瞎配的,因为题型跟做的前几年的一点都不一样,后来上网查了查也就这么一套题,就姑且当成真的吧…尤其是我做到最后发现阅读题跟21年的一模一样的时候更是觉得见鬼了…还有做的时候真是感觉很吃力,很多概念都没咋了解过,还一口气出了十几道的数据结构题…结果对完答案之后发现居然只错了15个,是最好的一次,数据结构也只错了一个,基本没复习过数据结构能做成这个样子也真是吃尽老本了…
上午题

离考试就剩三天了,鉴于目前的遗忘程度我觉得很有必要重新把所有排序算法的过程和时间复杂度全部复习一遍:
- 直接插入排序:首先,将数组分为已排序区间(初始仅含第一个元素)和未排序区间(剩余元素);然后,依次从未排序区间取出元素,与已排序区间的元素从后向前比较,若当前元素较小则后移已排序元素,直到找到合适位置插入,重复此过程直至未排序区间为空,最终完成排序。
- 折半插入排序:折半插入排序在直接插入排序的基础上优化了查找插入位置的步骤:首先将数组分为已排序区间(初始为第一个元素)和未排序区间,每次从未排序区间取出元素后,通过二分查找在已排序区间快速定位插入位置,然后统一后移该位置后的所有元素并完成插入。
- 简单选择排序:首先在未排序序列中遍历查找最小元素,然后将其与未排序区间的首个元素交换位置,使得已排序区间长度增加1。重复上述“查找最小值+交换”操作,直到未排序区间只剩一个元素时完成排序。
- 归并排序:归并排序采用分治思想:首先将数组递归地二分拆解为最小单元(单个元素),然后通过合并操作将相邻有序子序列逐层两两归并——每次合并时依次比较两个子序列的首元素,选取较小者放入新数组,直至所有元素有序。


没学过4NF,在这里研究一下:
- 1NF/2NF/3NF:仅处理函数依赖(X→Y),不涉及多值依赖。
- 1NF:所有属性必须是原子值,每一列具有唯一名称,且不允许重复组或数组结构。
- 2NF:所有非主属性必须完全依赖于整个候选键(不能仅依赖部分键)。需要注意的是,这并非要求第二范式中不能存在复合主键,而是要求非主属性不能依赖于复合主键其中的一个或一部分值,而是要完全依赖整个复合主键。
- 3NF:所有非主属性必须直接依赖于候选键,不能存在传递依赖。
- 4NF:在BCNF基础上,进一步消除非平凡多值依赖(多值依赖即在关系模式中,若属性集X确定一组属性集Y的值,且Y与剩余属性Z无关,则称X多值决定Y,记作X→→Y)。

CD选项不是很清楚:
- REVOKE:用于收回已授予的权限(如 REVOKE SELECT ON table FROM user)。
- DELETE:删除表中的数据行,与权限无关。
- DROP:删除数据库对象(如表、索引),不涉及权限回收。

这道题也是蒙对的
在数据库当中存在一个三级模式,这是数据库系统的核心架构,用于实现数据的逻辑独立性和物理独立性:
- 外模式:是面向用户的局部逻辑视图,定义不同用户或应用程序能看到的数据结构和权限。而外模式是通过视图实现的,那么也就不难发现视图对应的就是用户视图。
- 模式:模式是全局逻辑结构,描述数据库中所有数据的逻辑组织和关系,如表、字段和约束等。模式对应的是基本表,即数据库中真实存在的表。属于概念层的结构。
- 内模式:内模式描述数据在存储介质上的物理结构和存取方法,对应的是存储文件,显然是使用内部视图来实现。

这道题是靠依稀的印象蒙对的,再复习一下:
- 栈区:栈区是一块由编译器分配和释放的区域,函数调用时压栈,返回时弹栈。其中存放的有非静态局部变量、函数参数、返回地址等。
- 静态数据区:静态区的生命周期贯穿整个程序运行期,默认初始化为0。其中存储着全局变量、静态局部变量、常量等。
- 文本区:文本区的主要特点是只读性,这与其中存储着程序的可执行代码和字符串常量有关,如果对这些内容进行修改的话可能会导致段错误。
- 自由堆区:自由堆区的别名是动态内存区,从中可以发现这块区域的主要功能就是存储动态分配的内存,需要由程序员显式地分配和释放。


这道题也是蒙对的,其实我几乎不知道什么是解释器。
解释器是一种计算机程序,能够直接逐行读取、翻译并执行高级编程语言的源代码,而无需预先将其编译成机器码。它属于动态翻译执行的方式,与编译器(Compiler)的静态编译形成对比。解释器运行时需要实时翻译代码,而编译后的机器码可直接由CPU执行,因此解释器通常更慢。

这题没蒙对,有必要把数据在网络中的传输再过一遍了
- 应用层:数据的发出处,生成原始数据,添加应用层协议头。
- 传输层:数据被分割为段(TCP)或者数据报(UDP),添加传输层协议头。
- 网络层:段或者报被封装成数据包,添加IP头。
- 数据链路层:数据包被封装为帧,添加MAC头和帧尾。
- 物理层:数据转换为比特流,通过物理介质进行传输。
但其实此题跟这个知识点没什么关系,考察的主要是下面这个知识点:TCP通过序号对传输的字节流进行顺序标识,确保数据可靠、有序地传输。序号以字节为单位递增,因此正确答案是字节。


- C选项:VLAN是局域网技术,仅作用于同一物理网络内的逻辑隔离。内外网通信需依赖防火墙、NAT等安全设备,VLAN本身无法实现。
- D选项:VLAN不能阻止漏洞利用或恶意攻击(如ARP欺骗、DDoS),需结合其他安全措施(如ACL、IPS)。

数据的可靠性事实上指的并不是和数据安全有关的内容,而是要求数据在存储、传输或处理过程中不丢失、不损坏,且在需要时可完整恢复。那么这样一来最能保证数据可靠性的显然就是进行异地数据备份。

- 撞库:黑客利用已泄露的账号密码,批量尝试登录其他网站。
- 社工库:黑客整合多平台泄露数据形成的信息库,用于查询或进一步攻击。
- 拖库:黑客直接入侵网站服务器,盗取整个用户数据库。
- 洗库:对已盗取的数据库进行筛选、提炼。

浮点数的规格化是指尾数(Mantissa)的绝对值必须满足一定条件,以最大化精度,补码表示下,规格化数的尾数需满足:
- 正数:尾数最高位(符号位后第一位)必须为 1(即 0.1xxxx…)。
- 负数:尾数最高位必须为 0(即 1.0xxxx…)。

CRC码由数据位(n位)和校验位(k位)组成,校验位是通过生成多项式计算得出的冗余码。其标准格式为,原始数据位保持不变,校验位追加在数据位之后,即 n位数据 + k位校验。