考试概述
软件设计师考试是软考(全国计算机技术与软件专业技术资格考试)中的中级资格考试,每年举行两次,分别在5月份的第三个周末和11月份的第二个周末。考试分为上午和下午两个科目,上午考基础知识,下午考应用技术。考试采用笔试形式,无需上机操作,考生需用2B铅笔和水笔在答题纸上作答。
考试科目与题型
上午科目:基础知识
题型:单选题
题量:75道
满分:75分
及格线:45分
下午科目:应用技术
题型:六道题
题量:前四道为必答题,后两道为选答题(C++或Java,任选其一)
满分:75分
及格线:45分
考生需上午和下午两科均达到45分,才能通过考试并获得证书。
上午知识点分布
上午考试内容覆盖计算机系统基础、操作系统、数据结构、软件工程、数据库、网络、安全、法律法规、知识产权、标准化以及专业英语等。以下是各部分的分值分布(仅供参考):
知识点 分值(分) 备注
计算机系统基础 6分左右 包括硬件、软件基础等
操作系统 6分左右 包括进程管理、内存管理等
数据结构 6分左右 包括数组、链表、树等
软件工程基础 6分左右 包括需求分析、设计等
数据库基础 6分左右 包括SQL、关系数据库等
网络基础 6分左右 包括TCP/IP、OSI模型等
安全基础 6分左右 包括加密、认证等
法律法规、知识产权、标准化 6分左右 包括相关法律法规
专业英语 5分 简单的英语阅读理解
专业英语
专业英语部分通常为5分,内容较为简单,考生可以通过记忆常见词汇和句型来提高得分。
下午题型解析
下午考试分为六道题,以下是各题型的详细解析:
第一题:数据流图
题型:补充缺失的数据流
考点:数据流的基本概念、数据流图的绘制规则
第二题:数据库设计
题型:实体联系图(E-R图)
考点:实体、联系、主键、外键、候选键等
第三题:UML建模
题型:UML图绘制
考点:用例图、类图、对象图、序列图、活动图、状态图等
第四题:C语言算法
题型:算法设计与实现
考点:递归、分治、回溯等算法
第五题和第六题:C++或Java
题型:任选其一
考点:基本语法、设计模式
备考策略
1. 选择题备考
选择题分为三部分:了解部分、理解部分和掌握部分。以下是各部分的备考建议:
了解部分:记忆基本概念,例如计算机的组成部分、操作系统的基本功能等。
理解部分:理解原理,例如PV操作、进程同步等。
掌握部分:掌握计算方法,例如数据结构中的算法实现。
2. 案例题备考
案例题分为理论部分和代码部分:
理论部分:结合历年高频考点,掌握定义、原理、图示等。
代码部分:掌握C语言、C++和Java的基本语句,熟悉历年真题中的代码题型。
推荐备考资料
《软件设计师考试32小时通关》
- 该书是官方教材的缩写版,按照20%的知识点覆盖80%的得分内容,帮助考生高效复习。
《软件设计师真题精析与命题名卷》
- 重点掌握最近三年的六套真题,熟悉考试难度和题型。
《软件设计师一考通》
- 梳理考试重点,总结高频考点,帮助考生快速掌握核心内容。
常见问题(FAQ)
问题 答案
软件设计师考试每年考几次? 每年两次,分别在5月份的第三个周末和11月份的第二个周末。
上午和下午考试的及格线是多少? 上午和下午考试的及格线均为45分。
数据流图的考点是什么? 数据流图的考点包括补充缺失的数据流、数据流的基本概念等。
数据库设计题的考点是什么? 数据库设计题的考点包括实体联系图(E-R图)、主键、外键、候选键等。
下午的C++和Java题型如何选择? 根据个人熟悉程度选择C++或Java,任选其一作答即可。
示例代码
示例1:C语言递归算法
#include
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
int main() {
int n = 5;
printf("Factorial of %d is %d\n", n, factorial(n));
return 0;
}
示例2:Java设计模式(单例模式)
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
示例3:Python数据流图绘制
from graphviz import Digraph
dot = Digraph(comment='Data Flow Diagram')
dot.node('A', 'Source')
dot.node('B', 'Processor')
dot.node('C', 'Sink')
dot.edge('A', 'B', label='Data Flow')
dot.edge('B', 'C', label='Processed Data')
dot.render('data_flow.gv', view=True)
通过本文的详细解析和备考建议,考生可以更好地理解软件设计师考试的科目、题型和知识点分布,从而制定高效的复习计划,顺利通过考试。