2022 软件基础考试大纲
2022 软件基础考试大纲
程序设计基础
一、C++语言基础
考试内容
基本数据类型、enum 数据类型、运算符、控制语句
考试要求
- 理解计算机信息的存储于表示,掌握 C++ 的基本数据类型的用法.
- 掌握运算符与表达式的基本用法.
- 理解逗号表达式与条件表达式的作用.
- 掌握 enum 枚举类型的定义、枚举变量声明及使用.
- 掌握和运用三种(if、if…else、switch)选择语句.
- 掌握和运用三种(while、for、do…while)循环语句.
- 掌握和运用其他(break、continue)控制语句.
二、C++程序的结构(一):函数
考试内容
函数定义、函数声明、函数调用、函数的参数传递、递归调用、函数重载、函数模板
考试要求
- 掌握函数定义的语法形式,熟练运用自定义函数来实现多函数程序设计.
- 理解函数声明的作用,掌握函数声明的用法.
- 理解函数调用的过程.
- 明确参数传递的意义,理解和掌握函数调用中参数传递的三种参数传递调用:传值调用、引用调用、传地址调用.
- 掌握和运用递归函数的概念、算法和实现方法.
- 理解函数重载的概念,掌握函数重载的实现方法.
- 理解函数模板的概念,掌握函数模板的实现方法.
三、C++程序的结构(二):类
考试内容
抽象数据类型、类的定义、对象创建、构造函数与析构函数、公共接口函数、工具函数
类的组合、类模板
考试要求
- 理解面向对象的思想,理解面向对象方法中的抽象概念.
- 理解面向对象程序设计中“封装”概念和抽象数据类型的概念.
- 掌握 C++语言中类的定义方法.
- 掌握创建对象的方法,掌握通过对象访问类的公共接口成员的方法.
- 理解“.”操作符和“->”操作符,掌握它们的使用方法.
- 理解构造函数的作用,掌握构造函数的声明、定义的方法.
- 理解拷贝构造函数的作用,掌握拷贝构造函数的声明、定义的方法.
- 理解析构函数的作用,掌握析构函数的声明、定义的方法.
- 理解类的公共接口函数成员的功能,掌握它们的声明与定义的方法.
- 理解类的工具函数成员的作用,掌握它们的声明与定义的方法.
- 掌握类的对象成员的声明、定义和使用的方法.
- 了解类模板实例化的概念,掌握类模板的定义与使用的方法.
四、C++语言的存储与访问属性
考试内容
作用域、可见性、静态与动态的生存期、静态数据、常量数据、共享数据、
类的静态函数成员与静态数据成员、类的常量函数成员与常量数据成员、this 指针、
友元函数与友元类
考试要求
- 理解标识符在程序中的作用域、可见性的基本概念.
- 理解标识符在内存中的生存期、存储区域的基本概念.
- 在函数中,掌握 static 关键字的用法.
- 在函数中,掌握 const 关键字的用法.
- 在类中,掌握 static 关键字的用法.
- 在类中,掌握 const 关键字的用法.
- 在类中,掌握 this 指针的用法.
- 在函数中,掌握 friend 关键字的用法.
- 在类中,掌握 friend 关键字的用法.
五、数组、指针与字符串
考试内容
数组、引用、指针、字符串、动态内存分配、深拷贝与浅拷贝
考试要求
- 理解一维/二维数组的概念.
- 掌握一维/二维数组变量的声明、初始化以及数组之间的赋值方法.
- 掌握下标运算符[]和 sizeof 运算符的使用方法.
- 掌握一维/二维数组作为函数的参数传递的用法.
- 掌握一维/二维数组作为类的数据成员的使用方法.
- 掌握一维/二维对象数组的使用方法.
- 理解引用的概念.
- 掌握引用作为函数的参数传递的用法.
- 理解指针的概念,掌握指针运算符的使用方法.
- 掌握指针作为函数的参数传递的用法.
- 理解数组与指针之间的关系,掌握指针数组的用法,掌握对象数组指针的用法.
- 理解动态内存分配的概念,掌握 new 和 delete 运算符的使用方法,掌握一维/二维动态数组、动态数组类、动态对象的创建方法.
- 理解深拷贝、浅拷贝的概念.
- 理解拷贝构造函数、动态内存分配与深拷贝、浅拷贝之间的关系.
- 掌握 C-style 的字符串的用法(<cstring>).
- 掌握 vector 类模板的用法.
- 掌握 string 类的用法.
六、类的继承与派生
考试内容
继承关系、派生类、派生类的构造与析构函数、多级继承关系中成员访问、虚继承
考试要求
- 理解面向对象程序设计中继承与派生的概念.
- 掌握 C++语言中派生类的语法格式,掌握派生类的定义方法.
- 理解继承关系中成员访问的方式.
- 掌握单/多继承关系中构造函数与析构函数的定义方法及调用顺序.
- 了解多级多继承中成员的访问方式.
七、面向对象程序设计的多态性
考试内容
多态性、运算符重载、虚函数、纯虚函数、抽象类
考试要求
理解面向对象程序设计中多态性的概念.
理解动态绑定与静态绑定的概念,理解两者之间的区别与联系,了解它们各自实现的原理.
掌握运算重载的基本方法.
理解虚函数的概念,掌握虚函数的用法.
理解函数同名覆盖的概念,比较它与函数重载的不同之处.
理解抽象类的概念,理解纯虚函数的概念,掌握纯虚函数的用法.
理解多态性与虚函数和纯虚函数之间的关系.
八、流类库与输入输出
考试内容
C++I/O 流、标准输入与输出、顺序文件的输入与输出
考试要求
- 了解 C++I/O 流类的类图及类之间的关系.
- 掌握 <istream> 中的基本操作,如:cin、cin.get、cin.getline、cin.put.
- 掌握 <ostream> 中的基本操作,包括流的格式化控制与流操作符.
- 掌握 <fstream> 中,顺序文件的创建、写出和读取.
数据结构
【考查目标】
- 理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。
- 在掌握基本的数据处理原理和方法的基础上,能够针对具体应用问题进行算法设计与分析。
- 能够选择合适的数据结构和方法进行问题求解;具备采用 c++语言设计与实现算法的能力。
【考查范围】
一、数据结构和算法的基本概念及算法分析的基本方法
二、 线性表
(一) 线性表的定义和基本操作
(二) 线性表的实现
- 顺序存储结构
- 链式存储结构
- 线性表的应用
三、 栈、队列和数组
(一) 栈和队列的基本概念
(二) 栈和队列的顺序存储结构
(三) 栈和队列的链式存储结构
(四) 栈和队列的应用
四、树与二叉树
(一) 树的基本概念
(二) 二叉树
- 二叉树的定义及其主要特征
- 二叉树的顺序存储结构和链式存储结构
- 二叉树的遍历
(三) 树、森林
- 树的存储结构
- 森林与二叉树的转换
- 树和森林的遍历
(四) 树和二叉树的应用
- 二叉排序树
- 平衡二叉树
- 哈夫曼(Huffman)树和哈夫曼编码
五、 图
(一) 图的概念
(二) 图的存储及基本操作
- 邻接矩阵法
- 邻接表法
(三) 图的遍历
- 深度优先搜索
- 广度优先搜索
(四) 图的基本应用
- 最小(代价)生成树
- 最短路径
- 拓扑排序
- 关键路径
六、 查找
(一) 查找的基本概念
(二) 顺序查找法
(三) 折半查找法
(四) B-树及其基本操作、B+树的基本概念
(五) 散列(Hash)表
(六) 查找算法的分析及应用
七、 内部排序
(一) 排序的基本概念
(二) 插入排序
- 直接插入排序
- 折半插入排序
(三) 冒泡/气泡排序(bubble sort)
(四) 简单选择排序
(五) 希尔排序(shell sort)
(六) 快速排序
(七) 堆排序
(八) 二路归并排序(merge sort)
(九) 基数排序
(十) 各种内部排序算法的比较
(十一) 内部排序算法的应用