——下午题高频考点与实战拆解)
1. 数据流图实战拆解数据流图DFD作为下午题的第一道大题几乎是每年必考的内容。这道题的特点是题型固定、套路明显只要掌握方法拿满分并不难。我当年备考时这道题的正确率一直保持在90%以上关键就在于摸清了出题人的思路。先说说高频考点。从近五年的真题来看数据流图主要考察四个核心点数据流图的基本元素识别外部实体、加工、数据存储、加工逻辑描述结构化语言/判定表/判定树、数据流图平衡原则父图与子图之间、子图内部平衡、缺失数据流补充。其中最后一项补充缺失数据流是丢分的重灾区很多考生在这里栽跟头。解题时有个很实用的技巧先看题目说明文字把所有名词用不同颜色的笔圈出来。外部实体通常是系统外的人或组织比如客户、财务部门数据存储往往带有表、库、档案等字眼加工则是动词短语像计算利息、验证身份。我习惯在草稿纸上先列个清单把三类元素分别归类这样答题时直接对应就行。关于数据流平衡原则有个容易忽略的细节父图中某个加工的输入输出流必须与子图中的总输入输出完全匹配。但子图内部可以有多余的数据流这是允许的。去年有个考生在考场上跟我争论这个问题结果真题果然考了这个知识点。建议重点练习2019年下半年和2021年上半年的真题这两次的题目特别典型。2. 数据库设计模式精讲数据库设计这道大题本质上是在考ER图和关系模式的转换能力。根据我的统计近三年这道题的命题规律非常明显第一问补全ER图中的联系类型1:1、1:n、n:m第二问补全关系模式属性第三问指认主外键第四问可能涉及规范化理论。ER图转关系模式有个万能口诀实体变表属性照抄多对多建新表一对多外键放多方。比如遇到学生选课这种n:m关系就要单独创建选课表而班级拥有学生这种1:n关系外键应该放在学生表里。这个技巧帮我节省了大量解题时间。主键判定也有诀窍首先找标识符如学号、身份证号如果没有就找能唯一标识实体的属性组合。有个易错点是弱实体的主键需要包含依赖实体的主键比如订单明细的主键应该是订单ID明细ID。我在2018年考试时就因为这个细节丢过分后来专门整理了弱实体的专题笔记。规范化理论虽然考得不多但突然出现时很容易让人措手不及。建议重点掌握1NF到3NF的判断标准1NF要求属性不可再分2NF要消除非主属性对码的部分函数依赖3NF则要消除传递依赖。遇到相关题目时先画出函数依赖图再分析比空想有效率得多。3. UML建模高频考点UML这道题可以说是下午题中变化最大的但仔细分析历年真题会发现还是有规律可循。用例图、类图和状态图是出现频率最高的三种图占了总题量的80%以上。特别是类图几乎每年必考。类图的解题关键是抓住名词变类动词变方法的原则。比如题目描述说用户提交订单那么用户和订单就是类提交就是方法。关联关系的判断要特别注意多重性1..*、0..1等这是常见的扣分点。有个实用技巧把题目描述中的每个句子拆分成主谓宾结构再对应到类图中。状态图的考查点比较集中主要是状态转换条件和触发事件。解题时要先确定核心状态比如订单的待支付、已发货等然后找出状态间的转换箭头。有个容易忽略的细节初始状态用实心圆表示终止状态是实心圆外加圆圈。这个知识点在2020年下午题中就考过。对于组合聚合关系的区分我总结了个生活化的判断方法整体消失后部分还能独立存在的是聚合比如汽车和轮胎部分必须随整体消失的是组合比如订单和订单项。考试时遇到拿不准的情况就用这个办法验证。4. 算法与数据结构解题策略算法题最大的特点是看起来难实则套路深。通过分析最近五年的真题我发现考查点主要集中在排序算法快速排序、归并排序、查找算法二分查找、树遍历前中后序和图算法DFS、BFS这几个经典算法上。解题时建议分三步走首先通读题目说明确定算法类型然后分析给出的代码框架理解变量含义最后聚焦填空位置结合上下文逻辑作答。有个很实用的技巧如果遇到递归算法填空重点看参数传递和终止条件如果是循环结构则要关注初始值和边界条件。时间复杂度的判断也有简便方法单层循环通常是O(n)嵌套循环是O(n²)分治算法多半是O(nlogn)。去年有道考快速排序时间复杂度的题很多考生写了O(n²)其实最坏情况才是这个复杂度平均情况应该是O(nlogn)。这个细节差异就是2分的差距。对于动态规划问题要特别注意状态转移方程的表述。如果题目中出现了最优解、最大值等字眼很可能是动态规划。解题模板一般是定义dp数组含义→初始化→确定遍历顺序→写状态转移方程。建议重点练习背包问题的各种变体这是高频考点。5. 面向对象程序设计要点面向对象编程题分为C和Java两个版本但考查的知识点完全相同。这道题的特殊之处在于题目会给出几乎完整的代码只需要在关键位置填空。从命题趋势看设计模式的应用越来越受重视特别是工厂模式、单例模式和观察者模式。解题时首先要看懂类图把握类之间的关系。继承关系看箭头方向关联关系注意多重性。有个实用技巧先看main函数或测试代码了解程序运行流程然后对照类图理清各个类的作用最后再着手填空。这样可以避免陷入代码细节。多态和接口的实现是常考难点。如果看到virtual、override或者implements关键字就要考虑多态的应用。在Java中接口方法的实现要特别注意Override注解在C中纯虚函数需要特别注意0的语法。这些细节在2022年的真题中都出现过。异常处理也是容易出题的点。Java要关注try-catch-finally结构C则要注意throw和catch的匹配。有个易错点finally块中的代码无论是否发生异常都会执行这个特性在资源释放的题目中经常考查。建议结合2019年下半年的真题重点练习这个知识点。