ARTICLE · 1238471
软件设计师 考前18页纸

软件设计师 考前18页纸
第5版教程(2025年启用)· 近5年真题高频 · 10月24日下午场
命题画像与今日下午时间表· 依据软考办2026年下半年批次安排通告
卷别 | 题量与分值 | 命题规律 |
基础知识 | 75题×1分=75分最长120分钟、最短90分钟及格45分 | 软件工程12—14分、面向对象10—12分、数据结构与算法9—11分为三大块;语言、硬件、操作系统、数据库各5—7分 |
应用技术 | 6题中做5题前4题必答,5/6二选一每题15分共75分 | 固定五题:DFD、数据库设计、UML、算法C语言、Java或C++;前三题套路极稳,是及格生命线 |
两科连考 | 14:30—18:30总作答240分钟 | 基础知识交卷后进入应用技术;开考2小时后可离场,结束前60分钟可交卷;两科须一次全过 |
今日提醒 | 10月24日下午第一批 | 无纸化机考、闭卷;带身份证+准考证;下午易困,进场前小憩;提前40分钟到场 |
使用说明 星级★★★必背/★★重点/★了解;括号内为真题热度。红色=必背关键词,蓝色=辨析与口诀,黄底=公式与关键数字第1—9章覆盖上午主体与结构化方法,第10—16章为下午五题专项(DFD、数据库、UML、算法、Java/C++),第17—18章收口网络与法规,末附七张速查表。
第1章 考情画像与两科策略· 开篇必读
1. 两科结构与时间(★★★|官方口径)
(1)基础知识75题×1分,最长120分钟、最短90分钟;交卷后进入应用技术,两科总作答240分钟。(2)应用技术为6道大题,前4题必答、后2题(Java与C++)二选一,每题15分,共5题75分。(3)本场次14:30开考、18:30结束,开考2小时后可离场,结束前60分钟可交卷。
▸下午场容易困,进场前小睡20分钟;答题时先做1、2、3题,把15分×3稳住再攻算法。
2. 基础知识分数地图(★★★|5年统计)
模块 | 分值 | 拿分要点 |
软件工程 | 12—14 | 生命周期模型、测试、CMM、进度计算 |
面向对象与UML | 10—12 | 类图关系、多重度、设计模式 |
数据结构与算法 | 9—11 | 复杂度、树与图、排序稳定性 |
程序设计语言 | 5—7 | 编译过程、文法、自动机、传参 |
计算机硬件 | 5—7 | 浮点数、流水线、Cache、可靠性 |
操作系统 | 5—7 | PV操作、死锁、页面置换、磁盘调度 |
数据库系统 | 5—7 | 关系代数、范式、SQL、并发 |
网络与信息安全 | 8—10 | 协议分层、子网、加密与防火墙 |
标准化与知识产权 | 3—4 | 期限与标准代号 |
专业英语 | 5 | 术语填空,靠积累 |
3. 应用技术五题结构(★★★|必知)
题号 | 题型 | 分值 | 拿分难度 |
第1题 | 数据流图DFD补全 | 15 | 低,套路固定 |
第2题 | 数据库设计(ER+关系模式) | 15 | 低,读图题 |
第3题 | UML建模(类图/用例/顺序图) | 15 | 低,套路固定 |
第4题 | 算法设计(C语言填空) | 15 | 高,目标8分 |
第5/6题 | Java或C+++设计模式 | 15 | 中,语法+模式 |
▸第1—3题合计45分,是及格的生命线;第4题填空答不全也要把能填的填满。
4. 下午题答题顺序(★★★)
(1)先做第1、2、3题(约70分钟),再做第5或第6题(约25分钟),最后攻第4题算法(约20分钟)。(2)语言选自己熟的:Java选手选第6题,C++选手选第5题,不要临场换。(3)每题先看小问分值,按分值分配字数,12分的问要写6条以上。
5. 两科保分策略(★★)
(1)上午目标50分以上:软件工程+面向对象+数据结构三块拿满,等于及格线的一半。(2)下午目标50分以上:前三题拿40分,语言题拿10分,算法题拿5分即可。(3)不追求全对,追求「会的不丢分」:计算题写公式,概念题写关键词。
6. 机考操作与时间刻度(★★)
(1)基础知识部分交卷后不可返回,做题时先易后难,遇到计算量大的标记跳过,最后统一处理。(2)应用技术界面提供题干与作答区,画图题用文字描述替代(如「实体A—联系R—实体B」),不必真画。(3)建议时间刻度:14:30—15:50基础知识,15:50—17:30前三题,17:30—18:00语言题,18:00—18:20算法题。(4)18:30系统自动收卷,最后15分钟务必检查每题是否有空问未答。
7. 上午高频陷阱清单(★★★)
(1)「稳定性」与「时间复杂度」分开记,快排平均最快但不稳定。(2)「耦合越低越好、内聚越高越好」,题目常把方向写反。(3)「验证=符合规格、确认=满足需求」,两个词的英文也要认识。(4)「原型法适合需求不清」而不是「适合大型项目」,大型高风险用螺旋。
第2章 计算机硬件与体系结构· 约6分
1. 数据表示与运算(★★★)
(1)原码、反码、补码:正数三者相同;负数补码为反码加1,补码可把减法变加法。(2)移码用于浮点数阶码,符号位取反,便于比较大小。(3)IEEE 754单精度:1位符号+8位阶码+23位尾数,共32位;双精度1+11+52共64位。
▸单精度偏移量127,双精度1023,这是浮点数题的第一考点。
2. CPU与寻址(★★)
(1)CPU由运算器、控制器、寄存器组组成;PC存下条指令地址,IR存当前指令。(2)寻址方式:立即、直接、间接、寄存器、寄存器间接、相对、变址、基址。(3)CISC与RISC:RISC指令少、定长、寄存器多、适合流水线。
3. 流水线(★★★|计算常考)
(1)执行时间=(k+n-1)×Δt,k为流水段数,n为指令条数。(2)吞吐率TP=n÷总时间;加速比=顺序执行时间÷流水执行时间。(3)流水线冲突:结构冲突、数据冲突、控制冲突,用停顿、旁路、分支预测缓解。
4. 存储体系与Cache(★★★)
(1)层次:寄存器—Cache—主存—外存;Cache解决速度差,虚拟存储解决容量差。(2)平均访问时间=h×Tc+(1-h)×Tm,h为命中率。(3)替换算法:随机、FIFO、LRU;写策略:写回(Write Back)与写直达(Write Through)。
5. 可靠性与校验(★★★)
(1)串联系统R=R1×R2×…×Rn;并联系统R=1-(1-R1)(1-R2)…。(2)海明码校验位满足2^k ≥ m+k+1,可纠1位错、检2位错。(3)CRC用生成多项式做模2除法,检错强不能纠错;奇偶校验只能检奇数位错。
▸m=8需k=4,m=16需k=5,m=32需k=6,直接背这三组。
6. 进制与编码(★★★)
(1)二进制转十六进制每4位一组,转八进制每3位一组;十进制转二进制用除2取余、逆序排列。(2)n位补码表示范围-2^(n-1)到2^(n-1)-1,8位补码范围是-128到127。(3)溢出判断:同号相加结果异号即溢出;进位与符号位进位不同也说明溢出。(4)汉字编码:国标码GB2312、机内码、区位码,输入码与字形码用途不同。
7. 总线与I/O(★★)
(1)数据总线宽度决定一次传输的位数,通常等于机器字长;地址总线宽度n决定最大寻址2^n个单元。(2)I/O控制方式:程序查询(CPU等待)、中断(CPU响应)、DMA(直接内存访问,CPU只在开始结束参与)。(3)DMA适合大批量数据块传输,如磁盘读写;中断适合随机事件。(4)总线按功能分数据总线、地址总线、控制总线,按位置分内总线、系统总线、外总线。
8. 性能指标(★★)
(1)主频=外频×倍频,主频越高不一定越快,还要看CPI与指令集效率。(2)MIPS=指令条数÷(执行时间×10^6),MFLOPS衡量浮点性能。(3)CPI=时钟周期数÷指令条数,执行时间=指令数×CPI×时钟周期。(4)基准测试程序比单一指标更能反映实际性能。
9. 校验码计算示例(★★★)
(1)数据位m=8时,需满足2^k ≥ 8+k+1,k=4满足(16≥13),校验位放在2的幂次位置。(2)海明码可纠正1位错、检测2位错;校验方程组异或结果为0说明无错。(3)CRC计算:被除数后补r个0,用生成多项式模2除,余数即校验码。(4)奇偶校验只能发现奇数个位错误,不能定位,因此不能纠错。
第3章 程序设计语言与编译· 约6分
1. 编译与解释(★★★)
(1)编译过程:词法分析—语法分析—语义分析—中间代码生成—优化—目标代码生成。(2)词法分析输出记号流,语法分析构建语法树,语义分析做类型检查。(3)解释器不生成目标代码,逐条解释执行,灵活但速度慢;编译执行速度快、可优化。
2. 文法与自动机(★★★|每年必考)
(1)文法四元组:非终结符集Vn、终结符集Vt、产生式P、开始符号S。(2)乔姆斯基分类:0型短语文法、1型上下文有关、2型上下文无关、3型正规文法。(3)正规式与有限自动机等价:DFA无ε边且转移唯一,NFA可有ε边,二者可相互转换。
▸正规式只能描述3型语言;题目给DFA求正规式,先按路径列方程再化简。
3. 参数传递与作用域(★★★)
(1)传值:单向,形参改变不影响实参;传地址:双向,形参改变影响实参。(2)传名:相当于宏替换,可能重复求值产生副作用。(3)作用域分静态(词法)与动态,静态看定义位置,动态看调用链。
4. 语言特性与运行(★★)
(1)静态类型在编译期检查,动态类型在运行期确定。(2)强类型不允许隐式类型转换;弱类型允许,易出错。(3)程序运行时的内存分区:代码区、静态区、栈(局部变量)、堆(动态分配)。
5. 表达式与树(★★)
(1)中缀转后缀用栈:遇操作数输出,遇运算符按优先级出栈。(2)后缀表达式求值:遇操作数入栈,遇运算符取两个操作数计算后入栈。(3)语法树的后序遍历即后缀表达式,中序遍历可还原中缀。
6. 编译各阶段的产物(★★★)
(1)词法分析输出记号流,语法分析输出语法树,语义分析输出带语义标注的中间表示。(2)中间代码常见形式:四元式、三元式、逆波兰式、树;便于优化与移植。(3)优化分局部优化与全局优化,常见有常量合并、公共子表达式提取、循环不变式外提。(4)符号表贯穿全过程,记录标识符的类型、作用域、地址等信息。
7. 程序设计语言分类(★★)
(1)按范式分:命令式(C、Pascal)、面向对象(Java、C++)、函数式(Lisp、Haskell)、逻辑式(Prolog)。(2)按执行方式分:编译型、解释型、混合型(Java先编译为字节码再解释/JIT)。(3)动态语言(Python、JavaScript)类型在运行期确定,静态语言在编译期检查。(4)脚本语言通常解释执行、开发效率高、运行效率低。
8. 正规式与自动机转换(★★)
(1)正规式a(b|c)*表示以a开头、后接任意个b或c的串。(2)由正规式构造NFA:连接用串接、选择用分支、闭包用自环。(3)NFA转DFA用子集构造法,DFA最小化用划分法。(4)考试常见问法:给出自动机问接受什么串,或给正规式画自动机。
第4章 数据结构· 约9分
1. 线性表、栈与队列(★★★)
(1)顺序表随机访问O(1)、插入删除O(n);链表插入删除O(1)但查找O(n)。(2)栈后进先出,用于递归、表达式求值、括号匹配;队列先进先出,用于调度与BFS。(3)循环队列判满:(rear+1) mod n == front,牺牲一个单元。
2. 树的性质(★★★|计算必考)
(1)二叉树:第i层最多2^(i-1)个结点,深度为k最多2^k-1个结点。(2)叶子与度为2的结点关系:n0=n2+1,这是最高频的一个公式。(3)完全二叉树n个结点,深度为⌊log₂n⌋+1;顺序存储适合完全二叉树。
3. 二叉树与哈夫曼(★★★)
(1)遍历:前序根左右、中序左根右、后序左右根;已知中序+前序(或后序)可唯一确定树。(2)二叉排序树:左小右大,中序遍历有序;查找平均O(log n),最坏O(n)。(3)哈夫曼树带权路径长度最小,构造是每次取两个最小权值合并,可用于哈夫曼编码。
4. 图(★★★)
(1)存储:邻接矩阵适合稠密图,邻接表适合稀疏图;无向图边数最多n(n-1)÷2。(2)遍历:DFS用栈、BFS用队列;BFS可求无权图最短路径。(3)最小生成树:Prim适合稠密图O(n²),Kruskal适合稀疏图O(e log e)。(4)最短路径:Dijkstra不能处理负权,Floyd可处理负权但不能有负环。
5. 查找(★★★)
(1)顺序查找O(n);二分查找要求有序,O(log n),判定树深度为⌈log₂(n+1)⌉。(2)哈希查找平均O(1),冲突处理:开放定址(线性探测、二次探测)、链地址法。(3)装填因子α=记录数÷表长,α越大冲突越多。
6. 排序对比(★★★|每年2—3分)
排序 | 平均时间 | 最坏时间 | 空间 | 稳定 |
直接插入 | O(n²) | O(n²) | O(1) | 稳定 |
希尔 | O(n^1.3) | O(n²) | O(1) | 不稳定 |
冒泡 | O(n²) | O(n²) | O(1) | 稳定 |
快速 | O(nlog₂n) | O(n²) | O(log₂n) | 不稳定 |
简单选择 | O(n²) | O(n²) | O(1) | 不稳定 |
堆排序 | O(nlog₂n) | O(nlog₂n) | O(1) | 不稳定 |
归并 | O(nlog₂n) | O(nlog₂n) | O(n) | 稳定 |
基数 | O(d(n+r)) | O(d(n+r)) | O(n+r) | 稳定 |
▸稳定性口诀「插冒归基稳定,快希选堆不稳」;快排最坏出现在基本有序时。
7. 串与KMP(★★★)
(1)串的模式匹配朴素算法最坏O(n×m),KMP利用next数组避免主串回溯,达到O(n+m)。(2)next数组含义是「模式串当前位置之前的最长相等前后缀长度」,next[1]通常取0。(3)求next的过程本质是模式串自己匹配自己,考试只考next值填写与匹配趟数。(4)串是特殊的线性表,元素为字符,子串个数为n(n+1)/2+1(含空串)。
8. B树与B+树(★★)
(1)B树是多路平衡查找树,每个结点含多个关键字与孩子指针,降低树高减少磁盘I/O。(2)B+树所有关键字都出现在叶子结点,叶子间用链表相连,适合范围查询与顺序遍历。(3)数据库索引多用B+树,因为范围扫描效率高、树高稳定。(4)哈希索引适合等值查询,不支持范围查询。
9. 排序过程与特征(★★★)
(1)快排一趟划分确定一个元素的最终位置,递归处理左右子区;基本有序时退化为O(n²)。(2)堆排序建初堆O(n),每次调整O(log n),总计O(nlog n),适合求前k大。(3)归并排序需要O(n)辅助空间,适合外部排序与链表排序。(4)基数排序按位分配收集,不比较关键字,适合整数与定长字符串。
10. 堆与优先队列(★★)
(1)大顶堆满足父结点不小于孩子,用于堆排序与求前k大。(2)插入与删除调整均为O(log n),取堆顶O(1)。(3)建初堆从最后一个非叶结点开始向下调整,总代价O(n)。(4)优先队列可用堆实现,广泛用于调度与Dijkstra算法。
11. 拓扑排序与关键路径(★★★)
(1)拓扑排序适用于有向无环图,用于确定任务执行顺序,结果不唯一。(2)AOE网中关键路径是源点到汇点的最长路径,决定总工期。(3)活动的最早开始时间取所有前驱最早完成的最大值,最晚开始时间反向推算。(4)关键活动的松弛时间为0,缩短非关键活动不能缩短工期。
第5章 操作系统· 约7分
1. 进程与PV操作(★★★|高频)
(1)进程三态:就绪、运行、阻塞;五态增加新建与终止。(2)P操作申请资源(S=S-1,小于0则阻塞),V操作释放资源(S=S+1,小于等于0则唤醒)。(3)互斥信号量初值1,同步信号量初值通常为0或资源数。
2. 死锁(★★★)
(1)四个必要条件:互斥、请求并保持、不可剥夺、循环等待,破坏任一即可预防。(2)银行家算法属死锁避免,判断是否存在安全序列。(3)死锁处理策略:预防、避免、检测与解除;鸵鸟策略是忽略。
3. 存储管理(★★★)
(1)分区、页式、段式、段页式;页式无外部碎片有内部碎片,段式便于共享与保护。(2)逻辑地址=页号+页内偏移,通过页表映射到物理块。(3)虚拟存储基于局部性原理,缺页中断由硬件与操作系统共同处理。
4. 页面置换与磁盘调度(★★★)
(1)OPT最优但不可实现,FIFO简单但可能Belady异常,LRU近似最优、开销大。(2)磁盘调度:FCFS、SSTF最短寻道、SCAN电梯、CSCAN单向扫描。(3)磁盘访问时间=寻道时间+旋转延迟+传输时间,寻道占主导。
5. 文件系统(★★)
(1)文件物理结构:连续、链接、索引;索引结构支持随机访问。(2)空闲空间管理:位示图、空闲链表、成组链接。(3)目录是文件控制块的集合,多级目录解决重名,绝对路径与相对路径区别在起点。
6. 设备与作业管理(★★)
(1)SPOOLING技术用磁盘缓冲把独占设备虚拟为共享设备,典型是打印池。(2)缓冲目的:缓和CPU与I/O速度差、减少中断、提高并行度。(3)作业调度算法:FCFS、短作业优先、优先级、响应比高者优先。
7. 进程调度算法(★★★)
(1)先来先服务FCFS简单但平均等待时间长,对短作业不利。(2)短作业优先SJF平均等待最短,但长作业可能饥饿;最短剩余时间优先是其抢占版。(3)时间片轮转RR适合分时系统,时间片过大退化为FCFS,过小切换开销大。(4)多级反馈队列兼顾响应与吞吐,优先级高时间片短,逐步降级。
8. 进程与线程(★★★)
(1)进程是资源分配单位,线程是CPU调度单位;同一进程的线程共享地址空间与文件描述符。(2)线程切换开销小于进程切换,因为不需要切换地址空间。(3)进程通信:共享存储、消息传递、管道、信号;线程通信靠共享变量与同步机制。(4)管程把共享资源与操作封装,配合条件变量实现同步,比PV更不易出错。
9. I/O软件层次与文件共享(★★)
(1)层次:用户层I/O—设备无关软件—设备驱动—中断处理—硬件。(2)设备无关层负责缓冲、分配、错误处理,驱动层负责具体寄存器操作。(3)文件共享用硬链接(同一inode)与软链接(路径指向)。(4)文件保护靠访问控制表ACL与权限位,备份靠转储与日志。
10. 页面置换计算(★★★)
(1)FIFO按进入内存的先后淘汰,可能出现Belady异常(分配帧增多缺页反而增多)。(2)LRU淘汰最久未使用的页面,需要记录访问时间,开销较大。(3)OPT淘汰将来最久不用的页面,缺页次数最少但无法实现。(4)计算题按引用串逐步画表,每次标记命中或置换,最后统计缺页次数与缺页率。
第6章 数据库系统· 约6分
1. 关系模型与代数(★★★)
(1)基本运算:并、差、笛卡尔积、选择、投影;导出运算:交、连接、除。(2)投影会去掉重复元组;自然连接按同名属性等值连接并去掉重复列。(3)关系完整性:实体完整性(主键非空)、参照完整性(外键)、用户定义完整性。
▸关系代数题先写属性列(投影),再写条件(选择),最后看是否要连接。
2. SQL语句(★★★)
(1)查询顺序:FROM→WHERE→GROUP BY→HAVING→SELECT→ORDER BY。(2)聚集函数COUNT/SUM/AVG/MAX/MIN,WHERE不能用聚集函数,过滤分组用HAVING。(3)外连接保留未匹配行,LEFT JOIN以左表为准;视图是虚表,可简化查询与控制权限。
3. 范式与规范化(★★★|每年必考)
(1)1NF属性不可再分;2NF消除非主属性对码的部分函数依赖;3NF消除传递函数依赖。(2)BCNF要求每个决定因素都包含码,消除了主属性对码的部分与传递依赖。(3)模式分解要满足无损连接与保持函数依赖,二者不一定同时满足。
▸判断口诀:先找候选键,再看非主属性依赖「部分」还是「传递」,逐级往上判。
4. 并发控制(★★★)
(1)事务ACID:原子性、一致性、隔离性、持久性。(2)并发问题:丢失更新、读脏数据、不可重复读、幻读。(3)封锁:排他锁X与共享锁S;两段锁协议保证可串行化;三级封锁协议分别解决不同问题。
5. 备份与分布式(★★)
(1)备份:完全、差量(自上次完全)、增量(自上次任意);日志备份支持时间点恢复。(2)分布式数据库透明性:分片透明、位置透明、复制透明、逻辑透明。(3)两阶段提交2PC:准备阶段与提交阶段,解决分布式事务一致性,但可能阻塞。
6. 三级模式与两级映像(★★★)
(1)外模式是用户视图,模式是全局逻辑结构,内模式是物理存储结构。(2)外模式/模式映像保证逻辑独立性,模式/内模式映像保证物理独立性。(3)数据的物理独立性指改变存储结构不影响逻辑结构与应用。(4)DBA负责模式定义与权限管理,用户通过外模式访问数据。
7. 关系代数典型题(★★)
(1)投影π取列,选择σ取行,连接⋈按条件合并两表。(2)除运算用于「查询选修了全部课程的学生」这类全称量词问题。(3)外连接保留未匹配元组,左外连接以左表为准,右外连接以右表为准。(4)关系代数与SQL可相互转换,考题常要求「用关系代数表示查询」。
8. 故障恢复(★★)
(1)恢复技术依赖转储(后备副本)与日志文件。(2)事务故障用UNDO回滚未提交事务;系统故障用UNDO+REDO。(3)介质故障用最近转储+日志重做,恢复到故障前一致状态。(4)检查点技术减少恢复时需要重做的日志量。
第7章 数据库设计专题(下午第2题)· 下午第2题
1. 设计四阶段(★★★)
(1)需求分析—概念结构设计(E-R图)—逻辑结构设计(关系模式)—物理结构设计。(2)概念设计独立于DBMS,逻辑设计把E-R转成关系模式,物理设计关注索引与存储。(3)题目通常给需求描述与不完整的E-R图,要求补全实体、联系、属性并转换。
2. E-R转关系模式规则(★★★|必背规则)
(1)每个实体转为一张表,实体的码即主键。(2)1:1联系可合并到任一端,把另一端的码作为外键。(3)1:n联系合并到n端,把1端的码作为外键。(4)m:n联系单独成表,两端码组合为主键,并加入联系自身的属性。
▸「多端加外键、多对多单独建表」是阅卷给分点,写反就丢分。
3. 答题步骤(★★★)
(1)第一步通读需求,圈出名词(实体)与动词(联系)。(2)第二步补全E-R图:实体矩形、联系菱形、属性椭圆,标注1:1、1:n、m:n。(3)第三步写关系模式:表名(属性…),下划线标主键,注明外键。(4)第四步按需做规范化检查,指出是否满足3NF并说明理由。
4. 常见扣分点(★★)
(1)主键漏标或标错,外键未注明参照关系。(2)多对多联系忘记单独建表,导致数据冗余。(3)属性放错位置:把联系属性放到实体表里。(4)关系模式未写全属性,或把派生属性冗余存储。
5. 物理设计与索引(★★)
(1)物理设计内容:存储结构、索引设计、分区、冗余与聚簇。(2)聚簇索引决定数据的物理顺序,一张表只能有一个;非聚簇索引是独立结构。(3)索引加快查询但降低插入更新速度,写多读少的表要慎建索引。(4)在频繁出现在WHERE、JOIN、ORDER BY的列上建索引,选择区分度高的列。
6. 完整性约束落地(★★)
(1)主键约束唯一且非空,可用自增或序列生成。(2)外键约束保证参照完整性,删除父表数据要考虑级联删除或置空。(3)检查约束(CHECK)限制取值范围,默认值约束简化插入。(4)业务规则尽量用约束在数据库层保证,应用层校验作为补充。
7. 反规范化(★★)
(1)反规范化是为提升查询性能而有意引入冗余,如增加冗余列、派生列、汇总表。(2)代价是写入一致性维护成本上升,需要触发器或应用层保证。(3)适用读多写少、关联查询频繁的报表场景。(4)规范化为减少冗余,反规范化为提升性能,二者要权衡。
第8章 软件工程基础· 约13分
1. 生命周期模型(★★★)
(1)瀑布模型阶段串行、文档驱动,适合需求明确;缺点是后期变更代价大。(2)原型模型快速确认需求;螺旋模型以风险分析为核心,适合大型高风险项目。(3)增量与迭代分批交付;V模型强调测试与开发阶段对应;喷泉模型面向对象、迭代无缝。
2. 进度与关键路径(★★★|计算必考)
(1)PERT图用箭头表示活动,结点表示事件;关键路径是总工期最长的路径。(2)松弛时间=最晚开始-最早开始,关键路径上松弛时间为0。(3)Gantt图直观展示进度但不显示依赖关系,PERT能显示依赖与关键路径。
3. 风险管理(★★)
(1)风险三要素:发生概率、影响程度、触发条件。(2)应对策略:规避、转移、减轻、接受(消极);开拓、分享、提高、接受(积极)。(3)风险暴露=概率×影响,用于排序与制定应对优先级。
4. 质量与评审(★★)
(1)质量模型ISO 9126/25010六特性:功能性、可靠性、易用性、效率、可维护性、可移植性。(2)评审类型:正式审查、走查、同行评审;评审要控规模(每次不超过200行)。(3)质量保证是过程导向,质量控制是产品导向;缺陷发现越晚修复成本越高。
5. 软件测试(★★★)
(1)黑盒:等价类、边界值、因果图、错误推测、场景法。(2)白盒:语句、判定、条件、判定/条件、条件组合、路径覆盖,强度递增。(3)阶段:单元—集成—确认(验收)—系统—回归;α测试在开发方,β测试在用户方。
6. 维护与CMM(★★)
(1)维护四类:改正性、适应性、完善性、预防性,其中完善性占比最高。(2)可维护性指标:可理解性、可测试性、可修改性。(3)CMM/CMMI五级:初始、已管理、已定义、量化管理、优化。
7. 需求工程(★★★)
(1)五活动:需求获取、需求分析、需求定义(规格说明)、需求验证、需求管理。(2)获取方法:访谈、问卷、观察、原型、联合应用开发JAD、文档分析。(3)需求规格说明书要可验证、无二义、可跟踪,是验收的依据。(4)需求变更要走变更控制流程,评估影响后由变更控制委员会决策。
8. 开发文档(★★)
(1)可行性研究报告、项目开发计划、需求规格说明书、概要设计说明书。(2)详细设计说明书、数据库设计说明书、测试计划与测试报告、用户手册。(3)文档是软件配置管理的一部分,要版本控制与基线管理。(4)文档质量看完整性、一致性、可理解性与可维护性。
9. 挣值与进度压缩(★★★)
(1)PV计划值、EV挣值、AC实际成本;CV=EV-AC、SV=EV-PV。(2)CPI=EV÷AC、SPI=EV÷PV,小于1说明超支或滞后。(3)进度压缩方法:赶工(加资源、增成本)与快速跟进(并行、增风险)。(4)关键路径上的活动压缩才有效,非关键路径压缩不缩短总工期。
10. 配置管理(★★)
(1)配置项是需受控的工作产品,包括代码、文档、数据、工具。(2)基线是经评审通过的配置项集合,变更必须走变更控制。(3)版本控制工具:Git、SVN;变更记录要可追溯。(4)配置审计分功能配置审计与物理配置审计。
第9章 结构化分析与设计· 约5分
1. 结构化方法(★★★)
(1)核心思想:自顶向下、逐步求精、模块化、抽象。(2)分析阶段产出数据流图与数据字典,设计阶段产出模块结构图。(3)结构化方法面向功能,面向对象方法面向问题域中的对象。
2. 耦合与内聚(★★★|每年必考)
(1)耦合由弱到强:非直接、数据、标记、控制、外部、公共、内容耦合。(2)内聚由高到低:功能、顺序、通信、过程、时间、逻辑、偶然内聚。(3)设计目标:高内聚、低耦合;内容耦合与公共耦合最应避免。
▸只传简单参数的耦合是数据耦合(最理想);通过全局变量共享是公共耦合(较差)。
3. 模块结构图(★★)
(1)模块图元素:模块、调用、数据流(带空心圆箭头)、控制流(实心圆箭头)。(2)深度表示调用层次,宽度表示同一层模块数,扇入是被调用次数,扇出是调用下级个数。(3)设计原则:扇入大、扇出小(一般3—4),深度与宽度适中。
4. 数据字典(★★★)
(1)数据字典定义数据流图中每个数据流、数据项、数据存储与加工。(2)符号:=定义、+与、[ ]或、{ }重复、( )可选。(3)数据字典与DFD必须保持一致,是需求规格说明书的核心内容。
5. 结构化与面向对象对比(★★)
(1)结构化以功能与数据流为中心,自顶向下分解;面向对象以对象与类为中心,自底向上抽象。(2)结构化在需求变化时改动面大;面向对象封装变化,扩展性好。(3)结构化产出DFD与模块图,面向对象产出用例图、类图与交互图。(4)大型项目常用面向对象分析设计,嵌入式与数据处理仍常见结构化方法。
6. 模块设计启发式规则(★★)
(1)改进软件结构,提高模块独立性;模块规模适中(一般不超过100行)。(2)深度、宽度、扇入、扇出适当,扇入大说明复用性好。(3)模块作用域应在其控制域内,减少控制耦合。(4)力争降低模块接口复杂度,设计单入口单出口模块。
第10章 数据流图专题(下午第1题)· 15分大题
1. 四种基本元素(★★★|必背)
(1)外部实体:系统之外的人、组织或系统,用矩形表示,命名用名词。(2)加工(处理):把输入转为输出,用圆角矩形或圆表示,命名用「动词+名词」。(3)数据存储:数据的静态存储,用开口矩形或双横线表示,命名用名词。(4)数据流:数据在元素间流动,用带箭头的线表示,命名用名词,不能是动词。
▸数据流命名错误是最常见的改错点:写成「输入订单」是错的,应为「订单」。
2. 分层与平衡原则(★★★)
(1)顶层图只有一个加工(整个系统),标出全部外部实体与系统间输入输出流。(2)0层图把顶层加工分解为若干子加工,父图的输入输出流必须在子图中出现,称父子平衡。(3)每个加工可继续分解,但一般不超过三层;分解后内外数据流要守恒。
3. 找缺失数据流的四步法(★★★|拿分核心)
(1)第一步看清题目要求补哪几类:外部实体到加工、加工到数据存储、加工之间。(2)第二步逐个加工读描述,按「这个加工需要什么数据才能完成」找输入。(3)第三步按「这个加工产生什么结果」找输出,落到实体或存储。(4)第四步检查每个数据存储:有写无读、有读无写都要补。
4. 常见错误类型(★★★)
错误类型 | 表现 | 修改方法 |
黑洞 | 加工只有输入没有输出 | 补输出流到实体或存储 |
奇迹 | 加工只有输出没有输入 | 补输入流来源 |
父子不平衡 | 父图流未在子图出现 | 补流或改方向 |
数据流命名错 | 用动词或含义模糊 | 改为名词性短语 |
实体直接连实体 | 绕过加工 | 经加工中转 |
存储与实体直连 | 跳过加工 | 经加工中转 |
5. 书写规范(★★)
(1)答案写成「起点→终点:数据流名称」的形式,阅卷按三段给分。(2)同一条流不要重复画,双向流要分成两条单向流。(3)数字标号要与图中已有编号连贯,不改变原图结构。
6. DFD编号与画法(★★★)
(1)加工编号按层级:顶层为0,0层图为1、2、3…,子图为1.1、1.2,编号体现分解关系。(2)外部实体一般不编号,数据存储用D1、D2编号,数据流不编号。(3)画图时同一实体可重复出现(右下角加斜线表示重复),避免长线交叉。(4)父图与子图的输入输出流必须完全对应,这是「平衡」的判定标准。
7. 常见四类问法(★★★)
(1)「补充外部实体」:从题干找系统之外的人或系统,通常2—4个。(2)「补充数据存储」:找需要长期保存的数据,如订单表、客户表、库存表。(3)「补充数据流」:按加工缺输入或缺输出补齐,写清起点终点与流名。(4)「指出错误并改正」:从黑洞、奇迹、不平衡、命名不规范四类里找。
8. 数据字典与一致性(★★)
(1)DFD中出现的每个数据流、数据项都应在数据字典中有定义。(2)数据字典用「=、+、[ ]、{ }、( )」描述组成关系。(3)数据字典与DFD不一致是需求评审的常见问题。(4)加工说明(小说明)描述加工的处理逻辑,常用结构化语言、判定表、判定树。
第11章 面向对象与UML· 约11分
1. 基本概念(★★★)
(1)对象=属性+操作,类是对象的抽象,对象是类的实例。(2)三大特性:封装(隐藏实现)、继承(复用与扩展)、多态(同一消息不同响应)。(3)消息是对象间交互的方式;接口定义契约不含实现。
2. 类间关系(★★★|每年必考)
(1)依赖:临时使用,虚线箭头;关联:长期结构关系,实线。(2)聚合:整体与部分可分离,空心菱形;组合:整体与部分同生共死,实心菱形。(3)泛化:继承关系,实线空心三角箭头;实现:类实现接口,虚线空心三角箭头。
3. UML图分类(★★★)
类别 | 图种 | 用途 |
结构图 | 类图、对象图、构件图、部署图、包图、组合结构图 | 静态结构与组成 |
行为图 | 用例图、活动图、状态图、顺序图、通信图、时序图、交互概览图 | 动态行为与交互 |
▸用例图归行为图,类图归结构图,这是最常考的一个分类判断。
4. 用例图关系(★★★)
(1)包含include:公共行为抽取,箭头指向被包含用例,必执行。(2)扩展extend:可选或条件触发,箭头指向被扩展用例,不一定执行。(3)泛化:参与者之间或用例之间的继承关系。
5. 多态与重载(★★)
(1)重载是同一类中方法名相同、参数不同,编译期绑定。(2)重写(覆盖)是子类重定义父类方法,运行期动态绑定。(3)多态依赖继承与重写,通过父类引用调用子类实现。
6. 4+1视图(★★★)
(1)逻辑视图关注功能与类结构,进程视图关注并发与同步。(2)开发视图(实现视图)关注模块组织与包结构,物理视图(部署视图)关注硬件映射。(3)用例视图(场景)贯穿其余四个视图,用于验证与串联。(4)不同涉众关注不同视图:用户看用例、开发看逻辑与开发、运维看部署。
7. 包图、构件图与部署图(★★)
(1)包图描述包与包之间的依赖,用于组织大型系统的命名空间。(2)构件图描述可替换的软件单元及其接口与依赖,强调「可部署的部件」。(3)部署图描述物理节点与构件的部署关系,反映硬件拓扑。(4)三者都是结构图,不含时间维度。
8. 抽象类与接口(★★★)
(1)抽象类可有属性与已实现方法,接口通常只定义行为契约。(2)一个类只能继承一个父类,但可实现多个接口。(3)接口利于解耦与多实现,抽象类利于代码复用。(4)设计原则是「面向接口编程」,依赖抽象而非具体实现。
9. 分层架构与对象持久化(★★)
(1)典型分层:表现层—业务逻辑层—数据访问层—数据层,层间通过接口调用。(2)分层优点是可替换与可测试,缺点是调用层次多、性能开销。(3)对象持久化方案:ORM映射、DAO模式、仓储模式。(4)领域模型与数据模型不一定一致,需要映射与转换。
第12章 UML专题(下午第3题)· 15分大题
1. 类图多重度判定(★★★|送分点)
(1)多重度标在关联线两端:1表示恰好一个,0..1表示零或一个,*表示多个,1..*表示至少一个。(2)读法:从A端看B的数量,看题干描述「一个订单包含多个订单项」→ 订单1对订单项1..*。(3)组合与聚合要判断生命周期:整体销毁部分是否随之销毁。
2. 用例图填空(★★★)
(1)先找参与者:使用系统的人或外部系统,通常在题干以角色出现。(2)再找用例:用户要完成的业务目标,命名用「动词+名词」。(3)判断关系:公共必做的用include,可选附加的用extend。
3. 顺序图填空(★★★)
(1)顺序图横向是对象、纵向是时间,消息按时间从上到下排列。(2)消息类型:同步消息(实心箭头)、异步消息(开放箭头)、返回消息(虚线箭头)。(3)填空先看已有消息序列,按业务步骤推导缺失的对象名或消息名。
4. 状态图与活动图(★★)
(1)状态图描述单个对象的状态迁移,包含状态、事件、守卫条件、动作。(2)活动图描述业务流程或算法流程,含分岔与汇合(并发)、判定(分支)。(3)状态图强调「对象在什么条件下变成什么状态」,活动图强调「先做什么后做什么」。
5. 顺序图与通信图(★★★)
(1)顺序图按时间纵向排列,强调消息先后;通信图按对象链接布局,强调对象间关系。(2)二者语义等价,可以相互转换,顺序图更适合表达时序逻辑。(3)顺序图有生命线与激活条,激活条表示对象处于执行状态。(4)组合片段:alt条件分支、loop循环、opt可选、par并发。
6. 状态图细节(★★)
(1)状态图元素:初始状态(实心圆)、状态(圆角矩形)、迁移(箭头)、终止状态(同心圆)。(2)迁移标注格式:事件[守卫条件]/动作。(3)状态图适合描述对象生命周期,如订单从待支付到已完成的全过程。(4)活动图的分岔与汇合表示并发,判定菱形表示分支。
7. UML图选择判断(★★★)
(1)问「系统有哪些功能、谁使用」→用例图。(2)问「类之间关系与多重度」→类图;问「对象间消息顺序」→顺序图。(3)问「对象状态如何变化」→状态图;问「业务流程或算法步骤」→活动图。(4)问「软件如何部署到硬件」→部署图。
8. 协作与交互建模(★★)
(1)协作图(通信图)强调对象之间的链接与消息编号,编号体现顺序。(2)顺序图强调时间轴,通信图强调空间结构,二者可互转。(3)交互概览图用于表达多个交互之间的控制流。(4)建模时先定参与者与边界对象,再定控制对象与实体对象。
9. 用例图常见错误(★★)
(1)把系统内部功能当参与者:参与者必须是系统之外的角色。(2)include与extend方向画反:箭头都由「扩展/包含方」指向「被包含/被扩展方」。(3)用例命名用名词或内部步骤名,应为「动词+名词」的业务目标。(4)把界面元素当用例,用例应是用户可感知的完整业务价值。
第13章 设计模式· 约4分
1. 23种模式分类(★★★|每年3—4分)
类别 | 模式 |
创建型5 | 工厂方法、抽象工厂、单例、建造者、原型 |
结构型7 | 适配器、桥接、组合、装饰、外观、享元、代理 |
行为型11 | 职责链、命令、解释器、迭代器、中介者、备忘录、观察者、状态、策略、模板方法、访问者 |
2. 创建型模式(★★★)
(1)工厂方法:一个产品族一个工厂方法,子类决定实例化哪个类。(2)抽象工厂:一个工厂创建一系列相关产品,适合产品族切换。(3)单例:私有构造+静态实例+公有获取方法,注意线程安全。(4)建造者:分步构建复杂对象;原型:克隆现有对象,避免重复初始化。
3. 结构型模式(★★★)
(1)适配器:转换接口使不兼容的类协同工作;装饰:动态增加职责,比继承灵活。(2)代理:控制对对象的访问,可做远程、虚代理、保护代理。(3)外观:为子系统提供统一入口;桥接:抽象与实现分离,两个维度独立变化。(4)组合:树形结构统一处理整体与部分;享元:共享细粒度对象节省内存。
4. 行为型模式(★★★)
(1)观察者:一对多依赖,状态变化自动通知,是发布订阅的基础。(2)策略:封装可互换的算法族,消除大量if-else。(3)模板方法:父类定义骨架、子类实现步骤;状态:状态改变行为改变。(4)职责链:请求沿链传递;命令:把请求封装为对象,支持撤销与排队。
5. 判别技巧(★★★)
(1)题干出现「动态添加功能、层层包装」→装饰;出现「统一入口、简化调用」→外观。(2)出现「算法可替换、消除分支」→策略;出现「状态变化引起行为变化」→状态。(3)出现「全局唯一实例」→单例;出现「创建一族产品」→抽象工厂。
▸上午题常给场景选模式,记住「装饰加功能、代理控访问、适配转接口、外观简化面」。
6. 设计原则SOLID(★★★)
(1)单一职责:一个类只负责一件事;开闭原则:对扩展开放、对修改关闭。(2)里氏替换:子类可替换父类而不破坏语义;接口隔离:接口要小而专。(3)依赖倒置:依赖抽象不依赖具体实现。(4)设计模式是这些原则的具体落地手段,考试常把原则与模式对应起来考。
7. MVC与模式组合(★★)
(1)MVC中模型用观察者通知视图更新,控制器用策略切换处理逻辑。(2)常用组合:抽象工厂+单例管理产品族;装饰+工厂动态包装对象。(3)代理+工厂可做延迟加载;职责链+命令可做审批流。(4)组合模式常与迭代器配合遍历树形结构。
8. 反模式(★★)
(1)上帝类:一个类承担过多职责,难以维护与测试。(2)意大利面代码:控制流混乱、无结构;复制粘贴编程导致缺陷扩散。(3)过早优化、过度设计都是反模式,违背简单实用原则。(4)重构是消除反模式的手段,重构不改变外部行为。
9. 三个易混模式对比(★★★)
(1)适配器改变接口让两者能协作,装饰保持接口但增强功能,代理保持接口但控制访问。(2)装饰可多层嵌套,代理通常一层;适配器对象与原接口不同。(3)外观是简化多个子系统的调用,不与单个对象接口一致。(4)桥接是两个维度的组合,装饰是一个维度的增强。
第14章 算法设计与分析· 约9分
1. 复杂度分析(★★★)
(1)常见阶:O(1)<O(log n)<O(n)<O(nlog n)<O(n²)<O(n³)<O(2^n)<O(n!)。(2)循环看嵌套层数,递归用递推公式或主定理,二分与折半是log级。(3)空间复杂度看辅助空间,递归还要算栈深度。
2. 分治法(★★★)
(1)三步:分解、解决、合并,子问题相互独立且规模缩小。(2)典型:二分查找、归并排序、快速排序、大整数乘法、最近点对。(3)归并排序合并过程需要额外O(n)空间,快排原地但最坏O(n²)。
3. 动态规划(★★★|下午第4题常考)
(1)适用条件:最优子结构+重叠子问题,用表格保存中间结果避免重复计算。(2)步骤:定义状态—写状态转移方程—确定初值与边界—按序填表—回溯最优解。(3)典型:0-1背包、最长公共子序列、矩阵连乘、最大子段和、最长递增子序列。
▸区分DP与分治:子问题重叠用DP,子问题独立用分治;DP一定要写状态转移方程。
4. 贪心法(★★★)
(1)每步取当前最优,不回溯,要求贪心选择性质与最优子结构。(2)典型:活动安排、哈夫曼编码、单源最短路径Dijkstra、最小生成树Prim/Kruskal。(3)0-1背包不能用贪心(要DP),分数背包可以用贪心。
5. 回溯与分支限界(★★)
(1)回溯是深度优先搜索解空间树,不满足约束就剪枝回退。(2)典型:N皇后、图着色、子集和、迷宫问题。(3)分支限界用广度优先+限界函数剪枝,适合求最优解。
6. 策略判断法(★★★)
(1)看到「把问题分成规模更小的同类子问题再合并」→分治。(2)看到「子问题重叠、需要记录表格」→动态规划;看到「每步取局部最优不回退」→贪心。(3)看到「搜索解空间、不满足就回退」→回溯;看到「用限界函数剪枝求最优」→分支限界。(4)看到「每次与中间元素比较」→二分;看到「按权值最小合并」→哈夫曼。
7. 递归与迭代(★★)
(1)递归代码简洁但栈开销大,深度过大可能栈溢出。(2)尾递归可优化为迭代;树与图的遍历天然适合递归。(3)递归转迭代常用显式栈保存状态。(4)递归算法复杂度可用递推式或递归树求解。
8. 时空权衡(★★)
(1)用空间换时间:哈希表、缓存、DP表格、索引。(2)用时间换空间:压缩存储、流式处理、重复计算。(3)考试常问「该算法的时间复杂度与空间复杂度」,要分开写。(4)递归的空间复杂度包含调用栈深度。
9. 查找与排序选型(★★)
(1)数据量小用插入或冒泡,实现简单;数据量大用快排或归并。(2)要求稳定选归并或插入;要求原地且平均最快选快排。(3)求前k大用堆;外部排序用归并;整数范围小用计数或基数排序。(4)查找静态表用二分,动态表用二叉排序树或哈希。
第15章 算法专题(下午第4题)· 15分大题
1. 题目结构与分值(★★★)
(1)给一段C语言函数与说明,通常3—4个空,另问算法策略与时间复杂度。(2)填空多为基础语法:变量初始化、循环边界、数组下标、返回值、条件判断。(3)策略判断看特征:有表格为DP,有交换划分为分治或快排,有剪枝为回溯。
2. 填空技巧(★★★|提分关键)
(1)先通读函数说明,明确输入输出与变量含义,再逐空看上下文。(2)循环边界看数组长度与下标范围,注意是<还是<=、是n还是n-1。(3)累加与比较操作注意初始值:求和初始0,求最大初始最小或首元素。(4)看不懂算法就先填语法型空(如i++、return、数组赋值),保证基础分。
3. 高频算法原型(★★★)
(1)最大子段和:cur=max(a[i], cur+a[i]),ans=max(ans, cur)。(2)最长公共子序列:相等取左上+1,否则取上、左较大值。(3)0-1背包:逆序枚举容量,dp[j]=max(dp[j], dp[j-w]+v)。(4)二分查找:while(low<=high),mid=(low+high)/2,按比较结果收缩。
4. 复杂度填写(★★)
(1)一重循环O(n),二重嵌套O(n²),折半O(log n)。(2)DP看状态数与转移代价,通常O(n²)或O(n×W)。(3)递归式T(n)=2T(n/2)+O(n)对应O(nlog n)。
5. 真题算法清单(★★★)
(1)近5年考过:最大子段和、最长公共子序列、0-1背包、矩阵连乘、归并排序、快速排序。(2)也考过:二分查找变体、图的深度优先遍历、拓扑排序、Dijkstra、N皇后。(3)字符串类:KMP、最长回文子串、字符串编辑距离。(4)备考重点是读懂代码而非默写,理解状态与边界即可。
6. 填空高频语法(★★★)
(1)数组下标:i<n 或 i<=n-1,注意题目数组是否从1开始。(2)字符串比较用strcmp或equals,赋值与判等符号不要混。(3)返回值:递归出口return、函数末尾return结果。(4)指针与引用:*p取值、&取地址,C语言题常填这两个符号。
7. 第4题时间分配(★★)
(1)总时限20—25分钟,超过就先去检查前三题。(2)先填语法空(初始化、循环、返回),再攻逻辑空。(3)策略与复杂度两问几乎必答,各写一句就能得2—4分。
8. 代码阅读方法(★★)
(1)先读函数注释与参数说明,明确输入输出与返回含义。(2)找循环与递归结构,判断算法类型;找数组与表格,判断是否DP。(3)代入小规模数据手工执行一遍,验证对空缺的理解。(4)填空后回读整段代码,检查变量是否未初始化、下标是否越界。
第16章 Java与C++程序设计(第5/6题)· 15分大题
1. 题型结构(★★★)
(1)给出一段用某设计模式实现的代码框架,挖5个空左右。(2)考点集中在:继承与接口、抽象方法实现、对象创建、方法调用、集合使用。(3)选Java还是C++取决于熟练度,二者考查的设计模式相同。
2. Java语法要点(★★★)
(1)类继承extends、接口实现implements,接口方法默认public abstract。(2)抽象类不能实例化,含抽象方法的类必须声明abstract。(3)关键字:this当前对象、super父类、static静态、final不可变、@Override重写。(4)集合:List有序可重复、Set不可重复、Map键值对;遍历用for-each或Iterator。
3. C++语法要点(★★★)
(1)虚函数virtual实现多态,纯虚函数=0使类成为抽象类。(2)构造函数与析构函数,析构函数应为virtual以避免内存泄漏。(3)继承public/protected/private,public继承保持接口。(4)对象创建用new/delete或栈对象,注意指针与引用传参差别。
4. 设计模式实现考点(★★)
(1)单例:私有构造、静态成员、静态getInstance。(2)工厂方法:抽象产品接口+具体产品类+工厂创建方法。(3)观察者:主题维护观察者列表,通知时遍历调用update。(4)策略:抽象策略接口+具体策略类+上下文持有策略引用。
5. Java集合与异常(★★)
(1)List:ArrayList随机访问快,LinkedList插入删除快。(2)Set不可重复,HashSet无序、TreeSet有序;Map中HashMap常用、TreeMap按key排序。(3)异常:try-catch-finally,finally必执行;受检异常必须处理或声明抛出。(4)自定义异常继承Exception或RuntimeException。
6. C++模板与STL(★★)
(1)模板template<class T>实现泛型,编译期实例化。(2)STL容器:vector动态数组、list链表、map红黑树、set集合。(3)迭代器遍历容器,算法如sort、find配合使用。(4)引用传参避免拷贝,const引用只读传参。
7. 代码填空技巧(★★★)
(1)先看类图或框架说明,确认哪个类是抽象产品、哪个是具体实现。(2)注意访问修饰符与返回类型,父类引用指向子类对象是常见填法。(3)抽象方法在子类必须实现,填空多半是方法签名与return语句。(4)不确定时按「类型匹配」原则填,保证编译通过即可得分。
8. 语言题填空套路(★★★)
(1)父类引用指向子类对象:Product p = new ConcreteProduct()。(2)抽象方法实现:方法签名与父类一致,返回类型兼容,访问权限不更严。(3)集合存放对象用泛型:List<Product> list = new ArrayList<>()。(4)C++中虚函数声明virtual,纯虚函数=0,子类用override重写。
第17章 计算机网络与信息安全· 约9分
1. 协议分层(★★★)
(1)OSI七层与TCP/IP四层对应,常考各层协议与设备归属。(2)应用层:HTTP 80、HTTPS 443、FTP 20/21、SMTP 25、POP3 110、DNS 53、DHCP 67/68。(3)传输层:TCP可靠面向连接,UDP不可靠无连接但快。
2. IP与子网(★★★)
(1)IPv4地址32位,分类A/B/C;私有地址10/8、172.16/12、192.168/16。(2)子网可用主机数=2^主机位-2,子网数=2^借位数。(3)CIDR与路由聚合:把多条连续网段合并为一条更短前缀的路由。
3. 加密与认证(★★★)
(1)对称加密AES/DES速度快,密钥分发难;非对称RSA/ECC解决密钥分发与签名。(2)数字签名用私钥签、公钥验,保证完整性与不可否认性。(3)哈希MD5(128位)、SHA-1(160位)、SHA-256(256位),用于完整性校验与口令存储。
4. 攻击与防护(★★)
(1)常见攻击:DDoS、SQL注入、XSS、CSRF、ARP欺骗、木马病毒。(2)防火墙包过滤与状态检测,DMZ放置对外服务器。(3)病毒特性:传染性、潜伏性、破坏性、隐蔽性、可触发性。
5. 网络命令(★★)
(1)ping测连通性,tracert/traceroute看路径,netstat看端口与连接。(2)ipconfig/ifconfig看地址配置,nslookup/dig查DNS解析。(3)arp查看地址映射,route查看路由表。
6. 网络设备与拓扑(★★)
(1)集线器工作在物理层共享带宽,交换机工作在链路层按MAC转发,路由器工作在网络层按IP转发。(2)三层交换机兼具路由功能,用于核心层高速转发。(3)拓扑:星型易维护、总线型已淘汰、环型有自愈、网状可靠但成本高。(4)局域网技术:以太网、令牌环、FDDI,当前以以太网为主。
7. 安全协议与等级保护(★★)
(1)HTTPS=HTTP+TLS,默认443;SSH用于安全远程登录,默认22。(2)IPSec用于网络层VPN,SSL VPN用于应用层远程接入。(3)等保2.0分五级,三级以上需每年测评,核心思想是一个中心三重防护。(4)常见安全设备:防火墙、IDS/IPS、WAF、堡垒机、网闸。
8. 网络故障排查(★★)
(1)顺序:物理链路—网卡与地址—网关与路由—DNS—应用端口。(2)命令:ping测连通、tracert看路径、netstat看端口、nslookup查DNS。(3)常见原因:IP冲突、掩码错误、网关不可达、VLAN划分错误、ACL拦截。(4)排查要「先近后远、先软后硬、先单点后全局」。
9. 子网划分例题(★★★)
(1)192.168.1.0/24划分为4个子网,需借2位,掩码变为/26即255.255.255.192。(2)每子网可用主机62台,子网地址间隔64:0、64、128、192。(3)广播地址是每个子网的最后一个地址,不能分配给主机。(4)CIDR聚合把连续网段合并,如192.168.0.0/24与1.0/24合并为/23。
第18章 标准化、知识产权与英语· 约7分
1. 标准分级与代号(★★★)
(1)层级:国家标准、行业标准、地方标准、团体标准、企业标准。(2)国标代号:GB强制、GB/T推荐、GB/Z指导;国际标准ISO、IEC、IEEE。(3)标准复审周期一般5年,标准可等同(IDT)、修改(MOD)、非等效(NEQ)采用国际标准。
2. 知识产权期限(★★★|每年1—2分)
(1)著作权:自然人作品终生加死后50年,法人作品首次发表后50年;软件著作权同样适用。(2)专利:发明20年、实用新型10年、外观设计15年,自申请日起算。(3)商标:注册有效期10年,可无限续展。
3. 侵权与归属(★★)
(1)职务作品:一般归作者,单位有优先使用权;主要利用单位物质技术条件且单位担责的,单位享有著作权。(2)委托开发:合同约定优先,未约定归受托方。(3)侵权判定看「接触+实质性相似」,合理使用与法定许可不构成侵权。
4. 专业英语(★★)
(1)5道填空,考计算机术语与短文理解,不必专门背单词但要看懂句式。(2)高频词:algorithm、database、protocol、compile、encryption、interface、virtual、concurrent。(3)先做有把握的,剩余按词性与上下文排除。
5. 标准化组织(★★)
(1)国际:ISO国际标准化组织、IEC国际电工委员会、ITU国际电信联盟、IEEE、IETF。(2)国内:国家标准化管理委员会、工业和信息化部行业标准。(3)标准类型:基础标准、方法标准、产品标准、安全标准、管理标准。(4)企业标准应严于或等于国家标准,不得低于强制性标准。
6. 知识产权案例判断(★★★)
(1)单位职工为完成本职工作创作的作品属职务作品,单位有优先使用权。(2)委托开发未约定归属时,著作权归受托方,委托方有使用权。(3)购买正版软件只获得使用权,不得复制分发或反编译。(4)侵权判定看接触与实质性相似,独立创作且无接触不构成侵权。
7. 标准与法规补充(★★)
(1)强制性标准必须执行,推荐性标准被合同引用后具有约束力。(2)标准实施后一般5年复审一次,确认继续有效、修订或废止。(3)软件产品登记与著作权登记是自愿行为,但登记证书可作为初步证据。(4)开源许可证分宽松型(MIT、Apache)与传染型(GPL),商用要注意合规。
附录一 下午五题答题模板· 照模板不断点
题号 | 答题动作 | 必写要素 |
第1题DFD | 定实体→定存储→补流→查平衡 | 起点→终点:数据流名 |
第2题数据库 | 圈名词→补ER→转关系→标主外键 | 表名(属性)、主键下划线 |
第3题UML | 定参与者→定用例→判关系→填多重度 | include/extend、1..* |
第4题算法 | 读说明→填语法空→判策略→写复杂度 | O(nlog n)、DP、贪心 |
第5/6题语言 | 看接口→找抽象方法→填实现 | extends/implements、virtual |
附录二 公式与数字速查· 计算题靠它
项目 | 公式/数值 |
海明码校验位 | 2^k ≥ m+k+1 |
流水线时间 | (k+n-1)×Δt |
串联/并联可靠性 | R1×R2 / 1-(1-R1)(1-R2) |
Cache平均访问时间 | h×Tc+(1-h)×Tm |
二叉树叶子数 | n0=n2+1 |
完全二叉树深度 | ⌊log₂n⌋+1 |
二分查找判定树深度 | ⌈log₂(n+1)⌉ |
子网主机数 | 2^主机位-2 |
沟通渠道数 | n×(n-1)÷2 |
单精度浮点 | 1+8+23=32位 |
附录三 易混概念对照· 选择题雷区
概念对 | 一句话区别 |
重载 / 重写 | 同类同名不同参 / 子类重定义父类方法 |
聚合 / 组合 | 可分离 / 同生共死 |
验证 / 确认 | 符合规格 / 满足需求 |
α测试 / β测试 | 开发方现场 / 用户实际使用 |
Gantt / PERT | 看进度 / 看依赖与关键路径 |
依赖 / 关联 | 临时使用 / 长期结构 |
白盒 / 黑盒 | 看内部逻辑 / 看输入输出 |
视图 / 表 | 虚表 / 实存数据 |
附录四 常用模式场景对照· 看到场景选模式
场景描述 | 对应模式 |
系统需要唯一配置或连接池 | 单例 |
需要创建一系列相关产品 | 抽象工厂 |
不兼容接口需要协同工作 | 适配器 |
动态给对象增加职责 | 装饰 |
为复杂子系统提供统一入口 | 外观 |
控制对对象的访问(权限、远程、延迟) | 代理 |
一对多通知、状态联动 | 观察者 |
算法族可互换、消除分支 | 策略 |
状态改变导致行为改变 | 状态 |
请求沿链传递、逐级审批 | 职责链 |
算法骨架固定、步骤可变 | 模板方法 |
整体与部分统一处理(树形) | 组合 |
附录五 下午题常见问法与得分点· 按点作答
常见问法 | 作答要求 |
补充外部实体/数据存储 | 写名称+类型,数量与题干对应 |
补充数据流 | 起点→终点:流名称,三段齐全 |
E-R转关系模式 | 表名(属性)、主键下划线、注明外键 |
说明实体间联系类型 | 写1:1、1:n或m:n并给理由 |
补充类图多重度 | 写1、0..1、*、1..*,与题干语义一致 |
说明算法策略 | 写分治/DP/贪心/回溯+一句理由 |
求时间复杂度 | 写O(...),必要时说明空间复杂度 |
补充代码空缺 | 保证语法正确、类型匹配、逻辑完整 |
附录六 必背数字清单· 考前最后一遍
考点 | 数字/结论 |
海明码校验位 | m=8需k=4,m=16需k=5 |
流水线执行时间 | (k+n-1)×Δt |
二叉树叶子 | n0=n2+1 |
二分查找判定树深度 | ⌈log₂(n+1)⌉ |
单精度浮点 | 1+8+23=32位 |
子网可用主机 | 2^主机位-2 |
发明专利/实用新型/外观设计 | 20年/10年/15年 |
著作权(自然人) | 终生加死后50年 |
商标注册 | 10年,可续展 |
标准复审 | 一般5年一次 |
及格线/总时长 | 每科45分/240分钟 |
下午题 | 6题做5题,每题15分 |
常用端口 | HTTPS 443、SSH 22、DNS 53 |
排序稳定性 | 插冒归基稳定,快希选堆不稳 |
附录七 高频易错提醒· 避开这些坑
易错点 | 正确表述 |
快排最坏时间 | O(n²),出现在基本有序时 |
最差耦合 | 内容耦合,其次公共耦合 |
组合与聚合 | 组合同生共死,聚合可分离 |
include与extend | 都是箭头指向被包含/被扩展方 |
m:n联系 | 必须单独建表,两端码为主键 |
白盒覆盖最强 | 路径覆盖 |
CMM五级顺序 | 初始、已管理、已定义、量化、优化 |
验证与确认 | 验证符合规格,确认满足需求 |















































































