软件设计师
此笔记为渠某人为老婆编写,禁止转载
老公 | 老婆 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
2020下 | 2022下 | 2023上 | 2023下 | 2024上 | 2020下 | 2022下 | 2023上 | 2023下 | 2024上 | |
科目 | 成绩 | 成绩 | 成绩 | 成绩 | 成绩 | 成绩 | 成绩 | 成绩 | 成绩 | 成绩 |
基础知识 | 36 | 47 | 40 | 29 | 40 | 33 | 47 | 33 | 47 | 37 |
应用技术 | 47 | 52 | 34 | 45 | 44 | 31 | 36 | 16 | 34 | 37 |
24 | 47 | 45 |
下午考试每题15分,共75分,45分过,平均每道9分
-
试题一是结构化分析设计,固定考察数据流图,比较简单,但是需要耐心,可以拿 12 分以上。
-
试题二是数据库分析设计,固定考察 ER 图和关系模式,比较简单,可以拿 12 分以上。
-
试题三是面向对象分析设计,固定考察 UML 关系和图,比较简单,可以拿 12 分以上。
-
试题四是算法分析设计,固定考察 C 语言代码和算法分析,比较难,可以拿 7分以上。
-
试题五是面向对象程序设计,固定考察 C++或 JAVA 语法,建议做 JAVA,只考基本语法,比较简单,可以拿 12 分以上。
题型归纳
题号 | 试题类型 | 学科知识点 | 考察内容 |
---|---|---|---|
试题1 | 必答题 | 数据流图DFD | 补充数据流图外部实体 补充数据流图数据存储 补充数据流(名称、起点、终点) 数据流图的改错(较少考察,包括数据流错误、删除多余数据流) 数据流图相关概念简答 |
试题2 | 必答题 | 数据库设计 | 补充E-R图 E-R图转换为关系模式 主键和外键、新增联系判断 |
试题3 | 必答题 | UML建模 | 用例图(联系类型,参与者) 类图和对象图(多重度,联系类型) 顺序图(补充对象名和消息名) 活动图(补充活动名,分岔线用途) 状态图(补充状态,状态转换条件) 通信图(补充对象名,消息名) |
试题4 | 必答题 | C算法设计 | 各种经典算法设计和数据结构,如链表、栈、二叉树操作算法、KMP 算法等 算法类型(动态规划法、分治法、回溯法、递归法、贪心法) 时间、空间复杂度 给定输入求输出 |
试题5 | 选答题 | C++语言程序设计 | 不推荐选做:C++语法 (只考简单语法,不考算法)+设计模 |
试题6 | 选答题 | Java语言程序设计 | 推荐选做:Java 语法(只考简单语法,不考算法)+设计模式 |
试题一、结构化分析设计
数据流图的考试形式非常固定,
-
第一小题补充外部实体
-
第二小题补充数据存储
-
第三小题补充缺失数据流
-
第四小题考察简单概念
都不算难,以题目描述和数据流图为主,答案都在题目描述里,更像是阅读理解题,技巧如下:
1、补充外部实体:外部实体就是与系统进行交互的其他实体,可以是大型系统、公司部门、相关人员等,外部实体会与系统进行交互,反应在数据流图中就是一个个事件流,依据事件的名称结合题目描述可以轻易得出答案。
2、补充数据存储:数据存储出现在 0 层数据流图中,反应系统内部数据的存储,可以直接根据数据流图中数据存储的输入数据流和输出数据流判断该数据存储的信息得出答案,但注意要使用题目说明的数据存储名词作为答案。
3、补充缺失数据流:详细阅读题目描述,依据题目描述对涉及的数据流图进行一一核对,这是最为简单直接的方法,因为即使开始就去考虑数据守恒、父图子图平衡等原则,最终还是要根据题目描述核对,不如一开始就直接核对。
4、简单概念:题型不固定,一般只有 2-3 分,都是比较简单的判断
真题举例(我用的是我考过的那年的题)
第一题就是找实体:计量装置、管理员都是实体,肯定是出现在文章中,把他们圈出来然后在对比他们都做了什么事情。比如E1计量装置上报数据了、接收心跳数据了
第二题就是数据存储:根据文章里的名字在写个后缀即可,就是他是怎么保存的,比如D1,可以写充电数据文件、充电数据记录表类似的都可以,但是必须用文章里出现的词。
第三题补充少的数据流:几分就写几条,觉得还能写就多写,但是也别写太多;把图里出现的在文章里给圈出来,然后根据图里的线连上,是在写不出来,也别空着,因为没有太标准答案,每个人都有自己的理解,比如D2是基础数据表,基础数据包括计量检定装置获取的数据(电流、电压、电能等),这些数据需要P3去分析,但是图里没连,所以D2----P3算一个数据流
第四题我也忘了是啥了,但是就两分,不要也罢
前两道题基本肯定是在文章里能找到,能拿到满分9分,第三道至少能拿2分,第四道看情况吧,所以第一题拿个11分左右也可以,剩下45-11=34,还有4道题,加油!!!!
试题二、数据库分析设计
E-R 图中,有实体和联系两个概念,实体和实体之间的联系分为三种,即 1:1、1:N、M:N,这三种情况,转换为关系模式的方法也不同。
数据库设计的考法也非常固定
-
第一小题补充 E-R 图
-
第二小题补充关系模式
-
第三小题是简单的情景问答题
同样也都不难,结合题目描述和E-R 图的一些特点可以轻易得出答案,技巧如下:
1、补充 E-R 图:这是重中之重,E-R 图如果弄错了,后续题目都有影响,主要是根据题目描述确认哪些实体之间有联系,联系类型是哪一种,而后进行连线即可,并不难。
2、补充关系模式:实际考察的是将 E-R 图转换为关系模式,补充缺失的属性,分成两步:首先需要审题,题目会给出每个关系模式的属性信息,先将题目中的属性信息和问题对应,将缺少的属性全部补充;而后再按照规则转换,即前面所说的规则,按联系的三种对应方式决定要添加哪些字段。
3、情景问答:一般都是给出一段新的描述,要求新增一种实体-联系类型和关系模式,本质也是考察联系类型和 E-R 图转换为关系模式。
真题举例
第一题就连线,1对1,1对n,n对m,三种情况,也去原文里找,原文里都提到了,一个专卖店多个店员,一个专卖店一个店长。基本能得满分6
第二题
(1)a在专卖店,就在专卖店的信息里找,就是原文里的东西,缺啥就写啥,b也是相同的道理,就在原文里找。
(2)主键,就是问专卖店这张表存数据库里的主键是啥,也去文章里找,店号是唯一确定专卖店关系的,外键就是跟别的表有联系的,分公司和专卖店有联系,分公司编号就是外键,答案里写了两,但是我们看到空可能就以为写一个,我也不知道他怎么评分,一个空一分;职员主键就是职员号,外键就是专卖店号。也能拿满分6,少些就少一分呗,得个5分
第三题
(1)实体就是紧急联系人,就在文章里找,联系类型就和第一问一样,一个职员对应多个紧急联系人,1对多
(2)关系模式就跟文章里得一样,紧急联系人(联系人编号,职员号,姓名,本人关系,电话)3分,
这道几乎能拿个满分,少个1、2分也可,13分,45-11-13=21,还有三道题,每题那个7分也ok。
试题三、面向对象分析设计
认真审题,审图,根据说明查缺补漏,一般来说有以下几种题型
1、补充用例图:主要考察补充用例名称、参与者、用例之间的关系,只要认真审题,根据题中描述核对,都可以轻易得出答案。
2、补充类图:主要考察补充类名称,需要根据类之间的关系以及多重度来判断,需要牢记类之间关系的图形符号,尤其是组合、聚合和继承的符号,并且观察符号上的多重度数字,与题目描述对威
3、补充状态图:主要补充状态名称,根据题目描述可以轻易得出答案。
4、识别设计模式,掌握经典设计模式特点,并结合英文等联想。
试题四、算法分析设计
这里就看你的代码阅读能力了,可以对标python猜个大概。
算法设计是下午软件设计中最难的题型,主要难在 C代码填空上,因此文老师的建议是先不解决代码填空题(因为最难),先解决其他外围问题(如时间复杂度、算法技巧、取特殊值计算结果),最后解决代码填空,有助于理解整个题目,技巧如下:
1、代码填空:第一小题,最后解决,并不影响解决其他题目,要理解题目算法原理,才能得出答案。另外近几年的算法设计真题有很大的技巧,即便不理解算法原理也可以推导出答案,要结合算法描述中的公式,以及算法代码中类似的分支,能够发现填空的答案在代码中其中地方已经给出因为算法原理的相似可以通用,尤其是分治法算法。详见文老师真题详解,详述技巧。要注意的是,当遇到有最小值或最大值参与比较时,若比较出来比最小值更小,接下来肯定要更新这个最小值以及其下标元素值。当遇到一些条件判断的填空时,要注意对应上下文查看哪些变量是作为控制的。
2、算法、时间复杂度:第二小题,先做,考察何种算法很好分辨,涉及到分组就是分治法,局部最优就是贪心法,整体规划最优就是动态规划法,迷宫类的问题是回溯法,记住关键字很好区分:时间复杂度就是看C代码中的 for 循环层数和每一层的循环次数,涉及到二分必然有 0(logn)。
3、特殊值计算:第三小题,一般应该先做,不需要根据 C代码,直接根据题目给出的算法原理,一步步推导即可得出答案,耐心推导并不难。但要注意,如果遇到算法原理十分复杂的,建议放弃掌握问题1和2的技巧即可。
试题五、Java
这个也可以对标python,而且根据代码里的变量名都可以猜出这个代码是干啥的。
下午考试的第 5,6 题为二选一作答,都是程序填空,原理一模一样,只不过一个用 C++语言,一个用JAVA 语言编写的程序,并且这个填空只是考基本语法,基本不涉及算法,比之第 4 题算法设计的填空简单很多,完全可以拿满分。
文老师建议,如果是初学者,或者对于两种语言都不太精通,就专攻 JAVA 序题,因为 JAVA的语法比之 C++要简单并且容易理解记忆,容易拿到满分。
面向对象的程序填空分为两类,一个是考察纯定义,如接口类,抽象类,接口类中的函数定义等
这些根据程序代码可以快速判断出。另一类,就是关于设计的,填写函数体,但是这个函数体并不是要写一段真正的程序实现代码,而是调用形式的,如上面的例题,都有调用函数的,这些调用函数一般在程序中,或者在说明和类图中可以找到,考察的是调用形式。