简介:面向备考软考高级系统分析师的学习者,这份2023年真题回忆版以docx单文档整理,聚焦综合知识、案例分析与论文写作三大科目的考点复盘,帮助读者在冲刺阶段定位薄弱环节并理解命题思路。压缩包内共1个docx文件,体积约15KB,轻便易读,适合快速查阅、打印标注和按知识点摘录。内容覆盖信息系统与战略规划、页式存储淘汰、数据库自然连接与无损分解、系统可用性计算、PV操作、死锁资源公式、MD系列摘要算法、配置库区分、Docker与虚拟机对比、NoSQL特点及可行性分析等,既保留题目线索,也提示对应知识点,便于对照教材查漏补缺。已有3161人学习,可作为真题演练后的复盘材料,用于梳理高频概念、补充案例答题角度,并为论文素材积累提供参考,尤其适合时间有限、需要快速过一遍重点的考生。
1. 三科一张图:系统分析师真题回忆版到底在考什么
2023 年这套系统分析师真题回忆版,最值得先看的不是某道题的答案,而是考点在三科之间的分布:综合知识把页式存储、数据库、工程计算、加密摘要、开发模型、配置管理铺成一张网;案例分析挑状态图找错、容器与虚拟机对比、NoSQL 这类要动笔比划的题;论文题则把可行性分析这种「看着都会、写起来就空」的题目摆到台面上。多数人的复习顺序是三科分开刷,结果同一批知识点在三个科目里各错一次。省力的做法是先画出这张地图,分清哪些点只出选择题、哪些点会升级成案例、哪些点必须能撑起两千字的论文骨架。真题回忆版的价值从来不在背答案,而在于看清同一个知识点怎么换马甲。
2. 存储、数据库与知识产权:页式淘汰顺序、自然连接与合理使用
2.1 页式存储的内存淘汰:先看状态位,再排访问位和修改位
页表项里通常有这么几个字段:页号、物理块号、状态位(存在位/中断位)、访问位、修改位,外加辅存地址。做淘汰类题目时,判断是有严格先后顺序的,不是三项一起看。状态位为 0 表示这一页根本不在内存里,压根不参与淘汰候选,这一点最容易在紧张时被忽略;只有状态位为 1 的页,才进入「访问位 + 修改位」的四象限排序。
| 状态位 | 访问位 | 修改位 | 处理方式 |
|---|---|---|---|
| 0 | 任意 | 任意 | 不在内存,直接排除 |
| 1 | 0 | 0 | 首选淘汰,换出代价最小 |
| 1 | 0 | 1 | 次选,需写回磁盘 |
| 1 | 1 | 0 | 再次,最近被访问过 |
| 1 | 1 | 1 | 最后考虑 |
改进型 Clock 算法的扫描逻辑也建立在这张表上:第一轮找(0,0)直接换出;找不到就把访问位清零,第二轮找(0,1)换出并写回;还找不到就再扫一轮。题目若只问「优先淘汰哪一类」,答案就锁定在状态位为 1、访问位 0、修改位 0 这一格,不要顺手把不在内存的页写进去。
2.2 数据库三连问:自然连接、视图与分布式数据库
自然连接比笛卡尔积高效,并不是一句口号。笛卡尔积先把两张表的行数相乘物化出来,再靠 WHERE 过滤,一万人和十万条成绩相乘就是一亿行的中间结果;自然连接按同名属性直接匹配,能走索引或哈希,结果集规模通常小几个数量级。写 SQL 时两者的差别非常直观:
-- 笛卡尔积再过滤:中间结果 m*n 行,数据量一大就爆内存 SELECT * FROM student, score WHERE student.sno = score.sno; -- 自然连接:按同名属性 sno 匹配并去掉重复列,可直接利用连接列上的索引 SELECT * FROM student NATURAL JOIN score;参数说明:NATURAL JOIN依赖两张表存在同名同类型的列,列名不一致时要退回JOIN ... ON或USING(sno)。考试里问「哪种效率高、为什么」,答「自然连接减少了无效元组、可利用公共属性上的索引」就够。
视图是外模式的落地形式,作用是把底层表的列和行藏起来,只暴露需要的部分,同时带来逻辑独立性:表结构改了,视图可以不动。分布式数据库要解决的核心问题是数据怎么分布、副本怎么保持一致、分布式事务与并发控制怎么做,以及站点自治和故障恢复,答题时别只写「数据分散存储」这半句。
2.3 无损分解与合并规则:两条容易并排记混的结论
Armstrong 公理里有三条基本规则——自反、增广、传递,合并规则是推论:由 x→y 和 x→z 可以推出 x→yz;分解规则反过来,由 x→yz 推出 x→y 和 x→z。这套东西是函数依赖的推理工具,判断的是「依赖集能不能化简」,不直接回答分解有没有丢信息。
无损分解的判据是另一个东西:关系 R 分解成 R1、R2 后,若 R1∩R2→R1−R2 或 R1∩R2→R2−R1 成立,则这个分解是无损的。换句话说,公共属性得能决定其中一边的全部属性。回忆版把「x→y、x→z 得 x→yz」写在无损分解标题下,严格说这是合并规则,考场上要按题目问的到底是「依赖推理」还是「分解质量」分别作答,别把两条结论互相套用。
2.4 知识产权:哪些权利没有期限,地域性怎么理解
不受时间限制的主要是著作人身权里的署名权、修改权和保护作品完整权,这三项跟着作者走,不因时间流逝而消失;发表权和财产权是有保护期的。地域性也确实存在,一国授予的知识产权原则上只在该国范围内有效,跨国保护靠国际公约和双边协定互认,所以「有无地域差异」的答案是「有」。合理使用这块,个人学习、研究、欣赏他人已发表作品不算侵权,但一旦涉及出版、发行、商业传播就越界了。
标准化部分通常考标准的层级和强制性:国家标准、行业标准、地方标准、企业标准,其中保障人身健康和生命财产安全的那类属于强制性标准,其余多为推荐性。这类题分值不高,但属于「看一眼就能拿」的分,复习时别整段跳过。
3. 工程计算题:最短工期、死锁资源数、决策五准则与 PV 填空
3.1 最短工期与最少人数:看并行峰值,不是算总工作量
「每人可以干任一岗位、一个岗位只需一人、最少多少人可以不延期」这类题,本质是求时标网络图上同一时刻并行任务数的最大值,而不是把总人天除以总工期。总工作量除以工期得到的是平均人力,平均值往往会低估峰值需求,项目照样延期。
举个最小例子:A 无前置、工期 3 天;B 前置 A、工期 2 天;C 前置 A、工期 4 天;D 前置 B、工期 2 天;E 前置 C 和 D、工期 3 天。
| 任务 | 前置 | 工期 | 时间区间 |
|---|---|---|---|
| A | 无 | 3 | 第 0–3 天 |
| B | A | 2 | 第 3–5 天 |
| C | A | 4 | 第 3–7 天 |
| D | B | 2 | 第 5–7 天 |
| E | C、D | 3 | 第 7–10 天 |
关键路径是 A→C→E,总工期 10 天。第 3–5 天 B 和 C 并行,第 5–7 天 C 和 D 并行,峰值是 2,所以最少 2 人。解题步骤固定:先排每个任务的最早开始和最早结束,再按时间轴数并行数取最大值。题目若加了「某人只能做某类岗位」的约束,就退化成带约束的分配问题,要按岗位分别数峰值再相加。
3.2 死锁最少资源数:n×(w−1)+1 是怎么来的
n 个进程、每个进程最多需要 w 个资源,系统至少要有 n×(w−1)+1 个同类资源才不会发生死锁。推导很直白:最坏情况下每个进程都拿到了 w−1 个,还差一个就能跑完,此时系统里一共被占住 n×(w−1) 个资源,所有进程互相干等,这就是死锁的边缘状态;只要再多一个资源,必有一个进程能凑齐 w 个、执行完并释放,链条就解开了。
套数字时注意两个参数别对调:n 是进程数,w 是单个进程的最大需求量,不是资源总数。例如 5 个进程、每个最多要 3 个资源,答案就是 5×2+1=11。如果题目给了资源总数反求进程数,就把公式倒过来解不等式,取整数上界。
3.3 不确定型决策五准则:一张收益矩阵走完五种算法
决策矩阵给定时,五个准则各有各的算法,考场上最容易在「后悔值」上算错方向。下面用三方案三状态的收益值演示(单位任意,只比大小):
| 方案 | 需求高 | 需求中 | 需求低 |
|---|---|---|---|
| A 扩建 | 60 | 20 | −10 |
| B 新建 | 80 | 15 | −20 |
| C 维持 | 30 | 25 | 5 |
乐观主义取每个方案的最大收益再取最大:max(60, 80, 30)=80,选 B。悲观主义取每个方案的最小收益再取最大:max(−10, −20, 5)=5,选 C。折中主义取 α=0.6,A 为 0.6×60+0.4×(−10)=32,B 为 0.6×80+0.4×(−20)=40,C 为 0.6×30+0.4×5=20,选 B。等可能原则按状态数平均:A 约 23.3,B 为 25,C 为 20,选 B。
后悔值要先算出每列的最优值(60、25、5),再用列内最大值减去本方案收益得到后悔矩阵:A 为 0、5、15,最大 15;B 为 0、10、25,最大 25;C 为 30、0、0,最大 30。最后取「最大后悔值里的最小者」,min(15, 25, 30)=15,选 A。注意后悔值法是先取列最大值再相减,方向反了整题作废。
3.4 PV 操作配前趋图:箭头起点 V、终点 P
前趋图里每条有向边对应一个信号量,初值为 0,边起点的进程执行完后对该信号量做 V,边终点的进程开始前做 P。一个进程有多个前驱,就在开头 P 全部相关信号量;有多个后继,就在结尾 V 全部相关信号量。用 A→B、A→C、B→D、C→D 这组关系示意:
import threading # 每条前趋边配一个信号量,初值 0 表示事件尚未发生 s_ab = threading.Semaphore(0) s_ac = threading.Semaphore(0) s_bd = threading.Semaphore(0) s_cd = threading.Semaphore(0) def task_a(): # A 的加工逻辑 s_ab.release() # V(s_ab):A 完成,允许 B 开始 s_ac.release() # V(s_ac):A 完成,允许 C 开始 def task_b(): s_ab.acquire() # P(s_ab):等待 A 完成 # B 的加工逻辑 s_bd.release() # V(s_bd) def task_c(): s_ac.acquire() # P(s_ac):等待 A 完成 # C 的加工逻辑 s_cd.release() # V(s_cd) def task_d(): s_bd.acquire() # P(s_bd):D 依赖 B s_cd.acquire() # P(s_cd):D 也依赖 C # D 的加工逻辑参数说明:Semaphore(0)表示初值为 0,先 P 会阻塞,直到有人 V;acquire()对应 P 操作,release()对应 V 操作。填空题的横线若出现在进程体第一行,填 P;出现在最后一行,填 V;一个进程前面有几条入边就要填几个 P,少填一个就漏了同步条件。顺序写反是这个知识点最常见的出错方式,箭头方向一定对着图看。
3.5 可用性公式与 IP 网段判断:两个纯计算送分点
系统可用性 = 平均无故障时间 ÷(平均无故障时间 + 平均故障修复时间)。代入 MTBF=990 小时、MTTR=10 小时,可用性就是 990/1000=0.99,也就是两个九。题目若给的是「每年停机不超过多少分钟」,就反过来用不可用率 1−A 乘以总时长。
IP 网段判断用子网掩码做按位与。以 192.168.10.70/26 为例,前缀 26 位意味着掩码最后一段是 256−2^(32−26)=192,块大小 64,网段起点落在 0、64、128、192 上,70 落在 64 这一段,所以网段是 192.168.10.64/26,可用主机范围 65 到 126。换成 192.168.10.130/26,就落在 128 那一段。记住「块大小 = 256 − 掩码末段」这一句,比每次展开二进制快得多。
4. 架构与安全:开发模型、配置库、摘要算法与状态图找错
4.1 开发模型选型:出现「每个阶段都发布可操作产品」就选增量
模型题的陷阱在于几个词长得很像,答题时抓特征词最快。
| 模型 | 核心特征 | 典型适用场景 |
|---|---|---|
| 瀑布 | 阶段线性推进、文档驱动、回退代价高 | 需求稳定、约定明确的项目 |
| 原型 | 快速构建可运行版本,用于澄清需求 | 需求模糊、用户说不清要什么 |
| 增量 | 分批交付,每个增量都是可运行、可操作的产品 | 希望尽早见到可用版本、可分模块交付 |
| 螺旋 | 风险驱动,每圈先做风险分析,周期长成本高 | 大型、高风险、需求会演进的项目 |
| 喷泉 | 面向对象、各阶段无缝重叠、迭代推进 | 面向对象开发的项目 |
题干里「每一个阶段都发布一个可操作的产品」指向增量模型,因为增量的定义就是每次交付一个能用的子集;螺旋模型每转一圈重点在风险分析和原型验证,不保证每圈都交付可操作产品。这两者被混着考的频率很高,记住「交付看增量、风险看螺旋」这一组关键词即可。
4.2 配置管理三库:按「谁能改」来记最稳
开发库、受控库、产品库这三个名字太像,硬背容易串。换个记法:按修改权限分三档,谁有权改、改之前要走什么流程,一目了然。
| 配置库 | 别称 | 修改权限 | 存放内容 |
|---|---|---|---|
| 开发库 | 工作库 | 开发人员可随时修改 | 个人或小组正在做的配置项 |
| 受控库 | 基线库 | 需走变更申请、经审批后才能改 | 已通过评审、进入基线的配置项 |
| 产品库 | 发行库 | 原则上不可修改,只读 | 对外发布的最终版本 |
配置管理题还常问基线和变更控制:基线是经过评审、被正式确认的配置项集合,变更要走申请、评估、审批、实施、验证、归档这条链,审批角色通常是变更控制委员会。这三档权限是选择题的高频点,也是案例题里问「某文档应该放哪个库」的判断依据。
4.3 摘要算法家族与网络安全分层:先分清「摘要」和「加密」
MD2、MD4、MD5、MD6 都属于信息摘要算法,输出定长、过程不可逆、不需要密钥。MD2 面向 8 位机,MD4 面向 32 位机,MD5 输出 128 位摘要、实现简单但抗碰撞性已被攻破,MD6 支持可变长度输出、面向更大规模的数据处理。它们的典型用途是完整性校验、口令加盐后存储、数字签名里先摘要再签名,而不是拿来加密传输内容——摘要不可逆,加密可逆,这是两者的根本区别。
网络安全按层次铺开,答题时按层写比堆名词得分稳:
| 层次 | 主要保障手段 |
|---|---|
| 物理层 | 机房与线路的物理防护、防窃听防破坏 |
| 链路层 | 链路加密、端口与 MAC 绑定、VLAN 隔离 |
| 网络层 | 防火墙访问控制、IP 层加密与认证 |
| 传输层 | 传输层安全协议、端口控制 |
| 应用层 | 身份认证与授权、邮件与网页安全协议 |
| 用户层 | 安全意识培训、账号与权限管理 |
4.4 状态图找错:三类问题按顺序扫一遍
状态图描述的是一个对象在生命周期内的状态变迁,元素包括状态、迁移、事件、监护条件、动作、初态和终态。找错时按三步扫:先看初态和终态有没有缺、有没有多;再看每条迁移上的事件是否齐全、事件是否真的能触发目标状态;最后看有没有不可达状态、有没有只有入边没有出边的死状态。
| 对比项 | 数据流图 | 状态图 |
|---|---|---|
| 关注点 | 数据在加工、存储、外部实体之间的流动 | 单个对象的状态变化与事件响应 |
| 核心元素 | 加工、数据流、数据存储、外部实体 | 状态、迁移、事件、监护条件 |
| 常见错误 | 父子图不平衡、缺数据流、加工无输出 | 缺初态终态、事件缺失、状态不可达 |
回忆版里出现的「补充数据存储、补充数据流、补充加工名称」是数据流图的补充套路,不是状态图的答题模板。案例题里两种图经常前后脚出现,看清题目问的是哪张图再下笔,答串了基本拿不到分。
4.5 Docker 与 NoSQL:容器比的是什么,非关系型数据库取舍在哪
容器和虚拟机的差别在隔离层次:虚拟机靠 Hypervisor 虚拟出硬件,每台都带一套完整操作系统,启动以分钟计、镜像以 GB 计;容器共享宿主机内核,靠命名空间隔离视图、靠控制组限制资源,启动秒级、镜像常是几十 MB。隔离强度上虚拟机更强,密度和启动速度上容器占优。
# 拉取精简版镜像,体积小、启动快 docker pull nginx:alpine # 后台运行容器,把宿主机 8080 端口映射到容器 80 端口 docker run -d --name web -p 8080:80 nginx:alpine # 查看正在运行的容器 docker ps # 进入容器内部执行交互式 shell,便于排查 docker exec -it web sh参数说明:-d让容器在后台运行,--name指定容器名便于后续操作,-p 宿主端口:容器端口做端口映射,-it分配交互式终端。案例题常问「容器和虚拟机的区别」以及「给一条命令启动并映射端口」,把这两块记住就能拿分。
NoSQL 按数据模型分四类:键值型(如内存缓存类产品)、文档型、列族型、图数据库。和关系数据库相比,它的优势在水平扩展、模式灵活、高并发写入和海量数据读写;代价是事务能力弱、一致性模型通常是最终一致、复杂关联查询不方便。答题时按「模式、扩展方式、事务与一致性、查询能力、适用场景」五个维度对照着写,比单说「NoSQL 快」有说服力得多。
5. 易漏点复盘:五个最容易丢分的地方
5.1 页式淘汰把「状态位为 0」的页也排进候选
易漏点:题目问优先淘汰哪类页,答案写成「访问位 0、修改位 0」,把状态位不参与淘汰这个前提丢了。
为什么漏:背口诀时把三个位压成一句「两个 0 优先」,状态位被当成附加条件,甚至被误解成「不在内存所以最该换出」。实际上不在内存的页换出没有意义,它本来就不占内存。
怎么补:答题前先在草稿上写一条判断链——状态位 0 直接划掉,剩下的按(访问位, 修改位)排序。改进型 Clock 的两轮扫描也照这条链写,第一轮找(0,0),第二轮找(0,1)。
5.2 增量模型和螺旋模型记反
易漏点:题干说「每个阶段都发布可操作的产品」,答成螺旋模型;或者说「强调风险分析」,答成增量模型。
为什么漏:两个模型都带迭代色彩,教材里的描述又都出现「循环」「反复」这类词,只记轮廓不记特征词就会串。
怎么补:给每个模型绑一个不可替代的关键词——增量绑「可操作产品」,螺旋绑「风险分析」,原型绑「需求澄清」。做题时先在题干里找这个词,找到再选,不要凭整体印象。
5.3 配置库三档权限记混
易漏点:把受控库说成「可以随便改」,或者把产品库说成「授权后可改」。
为什么漏:日常开发只有代码仓库和分支的概念,三库的说法在实践里没有直接对应物,纯靠文字记忆很容易糊。
怎么补:按「谁能改」记一条线:开发库谁都能改,受控库要审批,产品库谁都不能改。再补一句「受控库装的是基线,产品库装的是发行版」,两条一起记,选择题基本不会错。
5.4 可行性分析只写经济和技术两条
易漏点:论文题要求写可行性分析的分类,只写经济可行性和技术可行性,篇幅撑不起来,分类也不全。
为什么漏:这两个是最常被提的,复习时顺手就记住了,剩下的几条因为名字抽象被跳过。真到写论文时才发现没东西可写。
怎么补:把六类做成一张表,每类配一句能直接写进论文的话。
| 分类 | 落点 |
|---|---|
| 经济可行性 | 建设成本、运行成本与建成后收益的对比 |
| 技术可行性 | 技术风险、现有人员与技术积累、软硬件条件是否够 |
| 法律可行性(社会可行性) | 是否与法律法规、政策相抵触 |
| 用户使用可行性 | 从使用者角度评估系统是否可操作、可接受 |
| 管理可行性 | 与现有管理机制是否一致、改革推得动推不动 |
| 运行可行性 | 用户使用的方便程度、运维是否可持续 |
论文里按「背景—六类逐条分析—结论」的结构铺开,每类写三四句结合模拟项目的话,篇幅自然就够了。
5.5 无损分解与合并规则混为一谈
易漏点:题目问分解是否无损,考生拿「x→y、x→z 得 x→yz」
本文还有配套的精品资源,点击获取