ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

软考软件设计师备考攻略:知识点框架与下午题答题套路全解析

软考软件设计师备考攻略:知识点框架与下午题答题套路全解析 软考软件设计师这个证书我见过太多人把它当成“背背就能过”的考试结果上午题勉强过线下午题直接翻车。说实话软件设计师作为软考中级里报考人数最多的科目之一它的知识点覆盖面确实广但并不是没有规律可循。这篇文章不跟你讲虚的直接把我自己备考以及带团队新人备考时反复验证过的知识点框架、下午题答题套路、真题使用方法和避坑经验一次性说清楚适合零基础想入门、自学遇到瓶颈、或者正在纠结要不要报名的朋友参考。1. 上午题的知识版图先搭框架再填充细节上午的综合知识一共75道单选题覆盖计算机组成与体系结构、数据结构与算法、操作系统、数据库、计算机网络、软件工程、面向对象、信息安全、知识产权等十几个模块。很多人一上来就抱着官方教程从头啃啃到第三章就放弃了原因很简单没有分清主次。我的建议是先拿一套近两年的真题做一遍哪怕很多题不会也能直观感受到每个模块的题量和难度这个“摸底”动作比盲目看书重要得多。1.1 计算机组成与体系结构最容易拿分也最容易丢分这个模块的题目通常占5到7分特点是计算题相对固定理解了就能稳定得分。重点集中在数据表示原码、反码、补码、移码浮点数的阶码和尾数、校验码奇偶校验、海明码、CRC循环冗余校验、CPU组成运算器、控制器、寄存器、指令系统CISC与RISC对比寻址方式、流水线计算流水线周期、吞吐率、加速比以及存储体系Cache与主存的映射方式、虚拟存储器、磁盘调度算法。我见过很多人在海明码和CRC上栽跟头其实这两类题只要把公式和判定逻辑写熟是上午题里少有的“送分计算题”。比如海明码的校验位位数满足 2^k 大于等于 nk1这个不等式逢考必有。流水线题则要记住两种计算公式理论公式和实际公式考试时优先用理论公式计算如果选项里没有对应结果再代入实际公式。备考时不要贪多把历年真题里出现过的计算题型归类做一遍比看十遍教材有效。1.2 数据结构与算法重点中的重点但不用死磕偏题数据结构与算法在上午题中通常占6到10分是分值权重最高的模块之一。常考的知识点包括线性表顺序存储与链式存储的优缺点对比、栈和队列出入栈序列判断、循环队列、后缀表达式、树二叉树的性质、遍历序列反推、哈夫曼树和哈夫曼编码、二叉排序树、图邻接矩阵与邻接表、深度优先与广度优先遍历、最小生成树、拓扑排序、排序各种排序算法的比较次数、时间复杂度、稳定性、查找二分查找、散列表冲突处理以及基本的算法设计策略分治、动态规划、贪心、回溯。说句实话这块内容想拿满分并不容易但拿70%的分是完全可以做到的。我的策略是二叉树遍历和排序算法必须滚瓜烂熟因为这些题目出题方式相对固定属于投入产出比最高的部分。图相关的题如果时间紧张优先掌握最小生成树Prim和Kruskal算法和最短路Dijkstra的基本思想。算法策略题近年来出现频率不低需要理解每种策略的典型应用场景和代码特征而不是背算法本身比如动态规划通常涉及最优子结构和重叠子问题贪心则强调局部最优。1.3 程序设计语言与编译原理理解编译过程比背概念重要这一块大概占3到5分很多非科班考生觉得难其实考点非常固定编译过程的各个阶段词法分析、语法分析、语义分析、中间代码生成、目标代码生成特别注意词法分析对应正规式、语法分析对应上下文无关文法、有限自动机的状态转换、表达式语法树、传值与传引用值调用和引用调用的区别常结合程序运行结果考查、各种程序语言的特点例如脚本语言、逻辑式语言、函数式语言的典型代表。我提醒大家一个容易忽略的点上午题很喜欢考正规式。题目给一个正规式让你判断它能够匹配哪个字符串或者给出两个正规式让你判断是否等价。这类题不需要多高深的数学基础只要把闭包*、连接、选择|三个操作的含义搞清楚多刷几道真题基本就能拿分。另外传值与传引用这个考点几乎每年都出现建议把典型的函数调用程序例子亲手跑一遍弄清楚形参和实参在内存中的变化就再也不会错了。2. 操作系统、数据库与网络三大模块的性价比之王上午题中操作系统、数据库、计算机网络这三个模块加起来能占到20分左右而且知识点集中、历年真题重复率高属于“背了就有分”的板块。很多在职备考的人时间有限我建议优先攻这三个模块它们不像数据结构那样需要大量做题积累只要把核心概念理解清楚配合真题巩固提分速度非常快。2.1 操作系统进程、存储、文件三座大山操作系统模块常考4到6分核心内容可以概括为“进程管理、存储管理、文件管理、作业管理、设备管理”五块其中前两块是绝对重点。进程管理中的难点和重点集中在进程的三种基本状态及转换条件运行、就绪、阻塞注意阻塞和就绪是互斥的、信号量与PV操作、死锁的四个必要条件以及死锁避免算法银行家算法。PV操作题是经典题型通常会给出一个进程同步互斥场景让你判断信号量初值和P/V操作的先后顺序或者计算允许进入进程的最少资源数公式资源总数大于等于进程数乘以每个进程最大需求量减去进程数再加一。我建议大家把生产者消费者、读者写者这两类经典问题的信号量流程手写几遍理解了就不会怕。存储管理中最常考的是分页存储和虚拟存储。分页存储的重点是逻辑地址到物理地址的转换页号、页内地址、页表基址、页表项长度这几个概念必须拎清。虚拟存储的考点是页面置换算法最佳置换OPT、先进先出FIFO、最近最少使用LRU和时钟置换Clock考试会让你根据访问序列计算缺页次数或者判断某算法是否产生Belady异常。文件管理常考索引文件一级索引、二级索引、直接地址和间接地址能表示的单个文件最大长度计算这个题只要把磁盘块大小、地址长度和索引块能存的地址项数量算清楚即可。2.2 数据库系统关系代数和范式是必考压轴数据库模块一般占5到7分覆盖数据库三级模式结构外模式、模式、内模式以及两级映像的独立性、E-R模型与关系模式的转换、关系代数运算选择、投影、连接、并、交、差、SQL语句重点在查询和事务、函数依赖与范式判断、并发控制事务的ACID特性、隔离级别、封锁协议。很多人觉得关系代数和SQL是一回事其实考试角度完全不同。关系代数考查的是对运算语义的理解题目可能会给两个关系表让你选出等价的关系代数表达式或者给出表达式判断结果。这类题的破题关键是清楚每种运算的结果是“行选择”还是“列选择”连接操作要注意自然连接和等值连接的区别。范式判断几乎是每年必考解题套路固定先看是否满足第一范式属性不可再分再看是否存在部分函数依赖2NF再看是否存在传递依赖3NF再到多值依赖4NF。把函数依赖集画成依赖图一眼就能看出关系模式的最高范式级别。2.3 计算机网络协议与地址计算的双线并行计算机网络占3到5分重点是OSI七层模型与TCP/IP层次结构的对应关系、常见协议及其默认端口号HTTP 80、HTTPS 443、FTP 20/21、DNS 53、DHCP 67/68、SNMP 161/162等、IP地址的分类与子网划分、私有IP地址段10.0.0.0/8、172.16.0.0/12、192.168.0.0/16。IP地址计算题是下午题之外最能体现“算数能力”的部分其实核心就三步把IP地址和子网掩码都转成二进制做与运算得到网络地址已知主机位数算出可用主机数2的n次方减2判断两个主机是否在同一子网。这类题刷几道真题就能掌握千万别因为害怕“二进制”就跳过真算起来比很多理论题都简单。另外加密与数字签名、数字证书、病毒防治等基本信息安全内容也会考2分左右属于背概念就能拿分的内容建议考前集中过一遍。3. 软件工程与面向对象上午题与下午题的交汇点软件工程与面向对象是软件设计师考试最有特色的模块上午题中约5到8分下午题的UML题也依赖这块基础。它不像计算机组成那样需要大量计算核心是概念理解和模型识别但恰恰因为概念多、关系细很多人容易混淆。我建议把它当成一个整体来学后面下午题UML部分会轻松很多。3.1 软件生命周期与开发模型为什么出题人爱考“模型对比”软件开发模型包括瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型以及敏捷开发等。近几年的真题明显增加了敏捷开发的考查力度比如Scrum中的角色产品负责人、Scrum Master、开发团队、冲刺Sprint机制等。备考时可以把每种模型用一句话概括其核心特征再配上适用的场景瀑布模型适合需求明确的项目原型模型适合用户需求不清晰的项目螺旋模型强调风险分析喷泉模型适合面向对象开发。考试常见单选题是“以下哪种模型强调风险驱动”或者“某场景最适合采用哪种开发模型”把这些特点记牢就够了。软件维护类型修正性、适应性、完善性、预防性维护和软件过程改进CMMI的五个成熟度等级也常考难度不大。CMMI的五个等级从初始级到优化级每个等级关注的核心过程域需要稍微记忆一下一句话归纳就好一初始、二已管理、三已定义、四量化管理、五优化。3.2 UML图静态视图与动态视图的区分是基本功UML统一建模语言在上午题和下午题都是重头戏。上午题通常考图形识别和概念辨析比如“以下哪个图用于描述系统的行为强调对象之间的交互顺序”答案是顺序图。UML图分两大类结构图静态包含类图、对象图、组件图、部署图、复合结构图、包图和行为图动态包含用例图、活动图、状态图、顺序图、通信图、计时图、交互概览图。其中用例图比较特殊有的教材把它归类为行为图考试如果拿不准记住它的作用是描述系统功能与用户的关系即可。六种基本关系也是高频考点关联、依赖、泛化、实现、聚合、组合。最容易混淆的是聚合和组合聚合是“弱的拥有”关系菱形在整体一侧比如部门与员工部门没了员工还在组合是“强的拥有”关系比如人与心脏人没了心脏也不存在。下午题常让你根据一段需求描述判断类与类之间的关系类型这个辨析能力一定要练熟。3.3 设计模式GoF 23种并不需要全部死背设计模式在上午题通常考2到3分下午题也出现过让你识别模式的应用场景。23种设计模式按目的分为三类创建型5种工厂方法、抽象工厂、单例、建造者、原型、结构型7种适配器、桥接、组合、装饰器、外观、享元、代理、行为型11种模板方法、策略、命令、状态、观察者、中介者、迭代器、访问者、备忘录、解释器、责任链。我的经验是不需要背全23种的完整定义但必须能把“核心意图”和“典型场景”对应起来。比如看到“需要一个全局唯一对象”就想到单例看到“将算法封装成独立策略运行时切换”就想到策略看到“动态给对象增加职责”就想到装饰器。用场景反推模式比正向背诵效率高得多。近几次考试还出现了让考生在代码中识别模式的趋势比如给一段函数选模板方法模式这要求看懂代码在干什么所以复习时最好把工厂、策略、模板方法、观察者这几个高频模式的经典代码过一眼。4. 下午案例分析四大题型逐一拆解下午题是很多人最焦虑的部分150分钟做5道大题满分75分45分及格。我身边每年都有上午考了60多分、下午差一两分没过的人非常可惜。下午题其实比上午题更好突击因为题型固定每年就是数据流图、数据库设计、UML建模、C语言算法和偶尔的Java参考题这几种。下面按题型说清楚每类题的答题思路和易错点。4.1 数据流图DFD先找实体再补数据流数据流图题通常给一段软件系统的文字说明和一张不完整的0层图让你补充外部实体、数据存储或者缺失的数据流。做题顺序非常重要我总结的步骤是先读题干把外部实体人、设备、外部系统全部找出来通常在文字说明里会有“用户”、“管理员”、“银行系统”这类词。找数据存储注意题目里出现“存储在XX表中”、“记录XX数据”等表述时对应图中的数据存储。补数据流这是最难的环节。技巧是对每个加工检查输入和输出是否匹配题目描述一条数据流缺失往往是题目中明说但图中缺失的“传递关系”。补全数据流时一定要看清方向箭头从数据源指向加工表示输入从加工指向数据存储表示写入。答题时最好在草稿纸上先把题目中的谓语动词圈出来比如“提交”、“查询”、“生成”、“保存”这些动词往往就是数据流名称的来源。数据流不能直接在两个数据存储之间或两个实体之间流动这是判分点之一必须注意。4.2 数据库设计ER图与关系模式的转换要形成条件反射数据库设计题一般包含三个小问补充E-R图实体和联系、将E-R图转换为关系模式、判断关系模式满足第几范式并说明理由。这里最容易失分的是联系类型判断和主键确定。E-R图中实体间的联系分为1:1、1:n、m:n三种。转换为关系模式时有固定规则如果联系为1:n可以将联系并入n端实体对应的关系模式也可以通过单独的关系模式表示但m:n联系必须转换成独立的关系模式其主键由两端实体的主键共同组成。转换完成后还要检查每个关系模式是否存在部分函数依赖或传递依赖判断其属于第几范式。答卷时范式说明要写清楚理由比如“存在部分函数依赖所以不满足第二范式”只写“不符合2NF”不给分必须说明“为什么不符合”。4.3 UML建模题用例图与类图的补全套路UML题通常会给出需求描述和一张不完整的类图或用例图让你补充类名、关系或方法。解答这类题的关键是把题干中描述“谁可以做什么”的句子转换成用例把“XX类拥有XX属性/方法”的句子转换成类的成员。对于类图补全先找名词往往是类名和属性再找动词往往是方法名最后分析类之间的关系。特别提醒题干中如果出现“每家企业有多个联系人和多个订单”这就是1对多关联关系如果出现“一个人有心脏心脏不能脱离人单独存在”这是组合关系如果出现“学生选课课程可被多个学生选择”这是多对多关联对应两个类之间的多重性约束1..*。填多重性数字时一定要看清是从哪个类往哪个类看方向反了答案就错了。用例图则要记住include包含和extend扩展关系包含是基本用例一定包含共同步骤扩展是可选行为箭头方向不要记反。4.4 C语言题链表、递归与排序填空的实战技巧下午题的最后一题通常是C语言程序填空部分年份提供Java题供选做但大部分考生选C分数约15分考查重点是链表操作、二叉树遍历、递归函数、经典排序算法快排、堆排和常见数据结构操作。真题热词里“2021年5月软件设计师下午题c语言题”被反复搜索说明这道题是很多人的分水岭。做这类题首先要读懂代码框架不要上来就填。先把主函数的流程走一遍确定程序要实现什么功能然后按以下策略填空链表题高频填的是指针移动语句比如p p-next、q (Node*)malloc(sizeof(Node))以及判断空表的条件p NULL。要特别注意头结点的作用很多题目使用带头结点的链表简化插入删除逻辑。递归题填的是递归出口和递归调用参数。比如二叉树求深度递归出口是if (bt NULL) return 0;递归表达式是max(depth(bt-left), depth(bt-right)) 1。这类题只要把握“递归出口 递归体”两大结构就能拿分。排序填空通常是补全循环边界和交换语句。比如快速排序中填while (low high a[high] pivot) high--;或者填递归调用quickSort(a, low, i-1)。建议把快速排序、直接插入排序、简单选择排序的代码默写三遍考场上可以直接套用。C语言题最忌讳的是“读一句填一句”因为上下文信息往往要看到后面才能理解。我一般先花5分钟通读全程序在草稿纸上写下程序的功能和关键变量含义再开始填空准确率会高很多。还有一个小技巧填空时注意括号配对和分号完整性有些空正误可以从语法层面判断出来。5. 真题怎么刷才能过把历年真题的价值榨干备考软件设计师最忌讳的两件事是只看书不刷题以及刷题只对答案不总结。真题的作用不只是检测水平更是通过反复练习形成“考点敏感度”。上午题考来考去就是那些知识点的变形下午题更是有固定的答题套路所以真题的利用方式决定了你的备考上限。5.1 历年真题的正确使用顺序我推荐三轮刷题法。第一轮是“模块刷题”按章节把近5年的上午题分类整理比如用一套真题把数据结构相关题目挑出来一次做完目的是吃透某一类知识点这个阶段不需要计时。第二轮是“整套模考”隔周做一套完整的真题上午150分钟做75道题下午150分钟做5道大题严格按考试时间执行训练答题节奏和精力分配。第三轮是“错题重做”把前两轮错题对应的知识点重新梳理再做同样的错题和相关变式题直到完全消化。关于下午题一定不能只在脑子里想思路必须动手写完整答案特别是数据库的SQL语句、关系模式转换、范式说明部分。很多考生失分不是因为不会而是因为“会但写不完整”比如范式判断题只写了结论没写理由这种失分完全可以靠动笔练习避免。5.2 高频考点与分值分布速查表根据近几年考试统计上午题的高频考点可以整理成一张速查表方便冲刺阶段快速回顾模块分值范围高频考点计算机组成5-7分补码、流水线、Cache、校验码数据结构与算法6-10分二叉树遍历、排序算法、图的基本算法程序设计语言3-5分正规式、传值与传引用、编译阶段操作系统4-6分PV操作、页面置换、索引文件数据库5-7分关系代数、范式判断、SQL计算机网络3-5分OSI层次、IP地址计算、协议端口软件工程4-6分开发模型、CMMI、UML、设计模式信息安全与法律2-4分加密算法、数字签名、著作权下午题的题型分布则相对固定第一题数据流图、第二题数据库设计、第三题UML建模偶尔和面向对象概念结合、第四题算法与C语言偶尔换成Java、第五题C语言或Java选做。近几年的趋势是下午题场景描述变长阅读量增加所以平时练习就要刻意训练快速提取关键信息的能力。5.3 考场时间分配与答题顺序上午75道单选题建议按“60秒一题”的节奏推进不会的题先标记跳过做完一遍后回头再想坚决不在难题上死磕超过3分钟否则后面会非常被动。下午题150分钟5道大题平均每题30分钟但建议把更多时间留给数据库题和C语言题各35分钟因为这两题分值重、需要动笔计算的内容多。数据流图题如果一时找不全数据流先做后面的题等思路理清了再回头补往往反而能想起来。下午题的答题顺序我推荐“先做数据库再做UML然后做数据流图最后做C语言”因为数据库和UML题型套路最固定容易稳定得分能建立信心。C语言题如果基础较弱最后做但至少要通读一遍代码把简单空填了。实在不会的空也不要空着下午题按点给分写上合理的程序语句有一定概率拿分但必须保证语法正确否则阅卷时可能倒扣分。6. 常见备考误区与避坑经验最后再唠叨几句真心话作为考过也带人考过的老油子我见过太多人把时间花在低效的复习方式上。最后把常见的误区整理出来每一条都是我和身边人踩过之后总结的教训希望能帮你少走弯路。6.1 只看书不刷题等于白复习软件设计师的知识点确实多官方教材有几百页但考试并不要求你背诵所有细节。只看书不做题最容易产生的错觉是“我都懂了”因为教材里每个知识点都讲得清清楚楚阅读时大脑会觉得顺理成章可真到考场看到题目选项往往发现四个选项长得都差不多根本辨别不出来。题感这种东西只能靠刷题练出来。我的建议是教材当作字典查阅真题当作主战场每天至少保证40分钟的做题时间。6.2 下午题不要光看解析必须手写答案下午题光“看懂答案”完全不够因为阅卷是按点给分很多答案表面上差不多实际写出来就差几个字分数就完全不同。特别是关系模式转换题图中转关系、合并关系的细节如果不在纸上完整写一遍根本不知道自己的丢分点在哪里。我可以负责任地说任何一个人把近5年下午题完整手写三遍下午题考不过都难。这个方法听起来笨但效果出奇的好。6.3 不要纠结冷门知识点高分不代表必须满分有些考生喜欢追偏题怪题比如纠结某些冷门设计模式的细节或者偏僻算法的复杂推导这对通过考试帮助不大。软件设计师的及格线是45分满分75分上午题和下午题双科都达到45分才算通过。这意味着上午题你允许错30题完全没必要追求满分。备考时把精力集中在高频模块和易得分点上遇到两三道完全不会的题直接跳过心态稳住反而更容易过。6.4 复习时间到底怎么安排在职备考的话我建议把整个周期控制在三个月左右。第一个月以教材和知识点梳理为主每天1到1.5小时第二个月进入真题模式每周两套卷子剩余时间刷模块题第三个月做错题重做和全真模考同时背诵软件工程、设计模式、信息安全等记忆型知识点。时间少的人可以压缩到两个月但不建议低于一个月因为知识面太宽速成风险很大。我个人在备考中最深的体会是软件设计师考试考的不是智商而是“在有限时间内有策略地获取及格分”的能力。这个能力完全可以通过科学的复习计划和平和的考试心态培养出来。最后再分享一个小技巧考前一天不要刷难题把高频公式和记不住的概念抄在几张纸上看一遍比如海明码公式、PV操作模板、UML关系符号对照表这些维护性动作比做新题有用得多。希望这份知识点梳理和备考思路能对你有所帮助考证这件事说难也难说简单也简单——把该做的事坚持做完结果一般都不会差。
返回列表