程序员考试大纲.docx
《程序员考试大纲.docx》由会员分享,可在线阅读,更多相关《程序员考试大纲.docx(54页珍藏版)》请在冰豆网上搜索。
![程序员考试大纲.docx](https://file1.bdocx.com/fileroot1/2023-4/21/e706ed19-6220-4395-aadb-b9e19f1bf469/e706ed19-6220-4395-aadb-b9e19f1bf4691.gif)
程序员考试大纲
程序员考试大纲
一、考试说明
1.考试目标
通过本考试的合格人员能根据软件开发项目管理和软件工程的要求按照程序设计规格说明书编制并高度程序,写出相应的程序文档,产生符合标准规范的、实现设计要求的、能正确可靠运行的程序。
具有助理工程师(或技术员)的实际工作能力和业务水平。
2.考试要求
(1)掌握数制及其转换、数据的机内表示、算术和逻辑运算、应用数学的基础知识;
(2)了解计算机的组成以及各主要部件性能指标;
(3)掌握操作系统、程序设计语言的基础知识;
(4)熟练掌握基本数据结构和常用算法;
(5)熟练掌握C程序设计语言以及C++、Java中的一种程序设计语言;
(6)熟悉数据库、网络和多媒体的基础知识;
(7)了解软件工程的基础知识、软件过程基本知识、软件开发项目管理的常识;
(8)了解常用信息技术标准、安全性以及有关法律、法规的基础知识;
(9)了解信息化及计算机应用的基础知识;
(10)正确阅读和理解计算机领域的简单英文资料。
3.考试科目设置
(1)计算机与软件工程基础知识,考试时间为150分钟,笔试,选择题;
(2)程序设计,考试时间为150分钟,笔试,问答题。
二、考试范围
考试科目1:
计算机与软件工程基本知识
1.计算机科学基础
1.1数制及其转换
●二进制、十进制和十六进制等常用数制及其相互转换
1.2数据的表示
●数的表示
●非数值数据的表示
1.3算术运算和逻辑运算
●计算机中二进制数的运算方法
●逻辑代数的基本运算
1.4数学应用
●常用数值计算(矩阵、近似求解、插值)
●排列组合、应用统计
●编码基础
1.5常用数据结构
●数组
●线性表及链表
●队列、栈
●树
●图
1.6常用算法
●算法与数据结构的关系
●算法设计和算法描述
●常用的排序算法
●查找算法
●常用的数值计算方法
●字符串处理算法
●递归算法
●最小生成树、拓扑排序和单源点最短路径求解算法
2.计算机系统基础知识
2.1硬件基础知识
2.1.1计算机的类型和特点
●微机(PC机)、工作站、服务器、主机、大型计算机、巨型计算机、并行机
2.1.2中央处理器CPU
●CPU的组成
●常用的寄存器
●指令系统,寻址方式
●指令执行控制、中断控制、处理机性能
2.1.3主存和辅存
●存储介质
●高速缓存(Cache)、主存
●辅存设备
2.1.4I/O接口、I/O设备和通信设备
●I/O接口
●I/O设备(类型、特性)
●通信设备(类型、特性)
●I/O设备、通信设备的连接方法和连接介质类型
2.2软件基础知识
2.2.1操作系统基础知识
●操作系统的类型和功能
●处理机管理
●存储管理
●设备管理
●文件管理
●作业管理(作业调度算法)
●图形用户界面和操作方法
2.2.2程序设计语言和语言处理程序的基础知识
●语言翻译基础知识(汇编、编译、解释)
●程序设计语言的基本成分:
数据、运算、控制和传输
●程序语言类型和特点
2.3网络基础知识
●网络的功能、分类、组成和拓扑结构
●基本的网络协议与标准
●常用网络设备与网络通信设备,网络操作系统基础知识
●Client/Server结构、Browser/Server结构
●局域网(LAN)基础知识
●Internet基础知识
2.4数据库基础知识
●数据库管理系统的主要功能和特征
●数据库模式(概念模式、外模式、内模式)
●数据模型、ER图
●数据操作(关系运算)
●数据库语言(SQL)
●数据库的主要控制功能(并发控制、安全控制)
2.5多媒体基础知识
●多媒体基本知识
●常用多媒体设备性能特征,常用多媒体文件格式类型
2.6系统性能指标
●响应时间、吞吐量、周转时间
●可靠性、可维护性、可扩充性、可移植性、可用性、可重用性、安全性
2.7计算机应用基础知识
●计算机常用办公软件操作方法
●计算机信息管理、数据处理、辅助设计、自动控制、科学计算、人工智能等领域的应用
●远程通信服务
3.系统开发和运行知识
3.1软件工程和项目管理基础知识
●软件工程基础知识
●软件开发生命周期各阶段的目标和任务
●软件过程基本知识
●软件开发项目管理基本知识
●软件开发方法(原型法、面向对象方法)基础知识
●软件开发工具与环境基础知识(CASE)
●软件质量管理基础知识
3.2系统分析设计基础知识
●数据流图(DFD)、实体联系图(ER图)基本知识
●面向对象设计、以过程为中心设计、以数据为中心设计基础知识
●结构化分析和设计方法
●模块设计、代码设计、人机界面设计基础知识
3.3程序设计基础知识
●结构化程序设计、流程图、NS图、PAD图
●程序设计风格
3.4程序测试基础知识
●程序测试的目的、原则、对象、过程与工具
●黑盒测试、白盒测试方法
●测试设计和管理
3.5程序设计文档基础知识
●算法的描述、程度逻辑的描述、程度规格说明书
●模块测试计划、模块测试用例、模块测试报告
3.6系统运行和维护基础知识
●系统运行管理基础知识
●系统维护基础知识
4.信息安全基础知识
●信息系统安全基础知识
●信息系统安全管理
●加密与解密基础知识
5.标准化基础知识
●标准化基本概念
●标准的层次(国际标准、国家标准、行业标准、企业标准)
●相关标准(代码标准、文件格式标准、安全标准、软件开发规范和文档标准、互联网相关标准)
6.信息化基础知识
●信息、信息资源、信息化、信息工程、信息产业、信息技术的含义
●全球信息化趋势、国家信息化战略、企业信息化战略和策略常识
●有关的法律、法规要点
7.计算机专业英语
●具有助理工程师(或技术员)英语阅读水平
●掌握本领域的英语基本术语
考试科目2:
程序设计
1.内部设计
1.1理解外部设计
1.2软件功能划分和确定结构
●数据流图(DFD)、结构图
1.3物理数据设计
●确定数据组织方式、存储介质、设计记录格式,处理方式
1.4详细输入输出设计
●界面设计、报表设计等
1.5内部设计文档
●程序接口、程序功能、人机界面、输入输出、测试计划
1.6内部设计评审
2.程序设计
2.1模块划分(原则、方法、标准)
2.2编写程序设计文档
●模块规格说明书(程序处理逻辑、输入输出数据格式)
●测试要求说明书(测试类型和目标、测试用例、测试方法)
2.3程序设计评审
3.程序实现
3.1编程
●编程方法和规范
●程序设计语言的选择和使用
●人工走查
●程序文档化
3.2程序测试
●测试环境和测试工具的选择和使用
●测试数据的设计
●测试报告的编写
4.程序设计语言(C语言为必选,再在C、C++、Java语言中任选一种)
4.1C程序设计语言(C99标准)
4.2C++程序设计语言(ANSIC++标准)
4.3Java程序设计语言(Java2)
三、题型举例
(一)选择题
1.在以下情况中,
(1)适合于采用队列数据结构。
(1)A.监视一个火车站售票窗口等待服务的客户
B.描述一个组织中的管理机制
C.统计一个商场中的顾客数
D.监视进入某住宅楼的访客
2.软件测试的目的是
(2)。
(2)A.尽可能地找出软件中的缺陷
B.缩短软件的开发时间
C.减少软件的维护成本
D.证明程序没有缺陷
3.InClanguage,a(3)isaseriesofcharatersenclosedindoublequotes.
(3)A.matrixB.string
C.programD.stream
(二)问答题
试题一(必选样题)
阅读以下说明和算法,完善算法并回答问题,将解答填入答题纸的对应栏内。
【说明】
假设以二维数组G[1..m,1..n]表示一幅图像各像素的颜色,则G[i,j]表示区域中点(i,j)处的颜色,颜色值为0到k的整数。
下面的算法将指定点(
)所在的同色邻接区域的颜色置换为给定的颜色值。
约定所有与点(
)同色的上、下、左、右可连通的点组成同色邻接区域。
例如,一幅8×9像素的图像如图1所示。
设用户指定点(3,5),其颜色值为0,此时其上方(2,5)、下方(4,5)、右方(3,6)邻接点的颜色值都为0,因此这些点属于点(3,5)所在的同色邻接区域,再从上、下、左、右4个方向进行扩展,可得出该同色邻接区域的其他点(见图1中和阴影部分)。
将上述同色区域的颜色替换为颜色值7所得的新图像如图2所示。
1
2
3
4
5
6
7
8
9
1
5
4
5
4
3
1
5
1
2
2
2
5
5
3
0
1
3
2
1
3
0
3
2
3
0
0
2
3
1
4
2
0
1
0
0
0
0
2
0
5
1
0
0
0
0
3
2
0
1
6
0
1
0
2
0
0
2
2
1
7
6
5
5
0
1
0
2
1
0
8
6
3
3
4
0
0
7
4
5
图1
1
2
3
4
5
6
7
8
9
1
5
4
5
4
3
1
5
1
2
2
2
5
5
3
7
1
3
2
1
3
0
3
2
3
7
7
2
3
1
4
2
7
1
7
7
7
7
2
0
5
1
7
7
7
7
3
2
0
1
6
0
1
7
2
7
7
2
2
1
7
6
5
5
0
1
7
2
1
0
8
6
3
3
4
7
7
7
4
5
图2
【算法】
输入:
矩阵G,点的坐标(
),新颜色值newcolor。
输出:
点(
)所在同色邻接区域的颜色为newcolor之后的矩阵G。
算法步骤(规范算法,规定该算法只在第七步后结束):
第一步:
若点(
)的颜色值与新颜色值newcolor相同,则
(1);
第二步:
点(
)的颜色值→oldcolor;创建栈S,并将点坐标(
)入栈;
第三步:
若
(2),则转第七步;
第四步:
栈顶元素出栈→(x,y),并(3);
第五步:
1)若点(x,y-1)在图像中且G[x,y-1]等于oldcolor,则(x,y-1)入栈S;
2)若点(x,y+1)在图像中且G[x,y+1]等于oldcolor,则(x,y+1)入栈S;
3)若点(x-1,y)在图像中且G[x-1,y]等于oldcolor,则(x-1,y)入栈S;
4)若点(x+1,y)在图像中且G[x+1,y]等于oldcolor,则(x+1,y)入栈S;
第六步:
转(4);
第七步:
算法结束。
【问题1】
是否可以将算法中的栈换成队列?
回答:
(5)。
试题二(必做的C语言样题)
阅读以下函数说明和C语言函数,将应填入(n)处的字句写在答题纸的对应栏内。
【函数说明】
函数intfun1(intm,int,n)的功能是:
计算并返回正整数m和n的最大公约数。
【函数】
intfun1(intm,intn)
{
While(
(1)){
If(m>n)m=m-n;
Elsen=n-m;
}
(2);
}
【函数说明】
函数longfun2(char*str)的功能是:
自左至右顺序取出非空字符串str中的数字字符形成一个十进制整数(最多8位)。
例如,若字符串str的值为“f3g8d5.ji2e3p12fkp”,则函数返回值为3852312。
【函数】
longfun2(char*str)
{inti=0;
longk=0;
char*p=str;
while(*p!
="\0"&$(3)){
if(*p>="0"&&*p<="9"){
k=(4)+*p-"0";
++i;
}
(5);
}
Returnk;
}
试题三(选做的C语言样题)
阅读以下说明和C程序,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
某种传感器的输出值Ratio依赖于环境温度temp(-40℃≤temp≤50℃)。
对一组环境温度值(ITEMS个),人们已经测量得到了相应的Ratio值(见表3-1)。
该表粗略地描述了曲线Ratio(temp)。
表3-1曲线Ratio(temp)的列表值
环境温度
temp
传感器的输出值
Ratio
环境温度
temp
传感器的输出值
Ratio
-40℃
0.20
10℃
1.17
-20℃
0.60
30℃
1.50
-10℃
0.80
50℃
1.80
0℃
1.00
校下系数K是Ratio的倒数,因此也依赖于环境温度temp。
在数据处理中,人们需要用更多的列表值细致地描述曲线K(temp),如表3-2所示。
在表3-2中,各温度值所对应的K值是对表3-1进行线性插值再求倒数得到的,具体的计算方法如下:
表3-2曲线K(temp)的列表值
环境温度
temp
较正系数
K
环境温度
temp
较正系数
K
-40℃
5.00
-19℃
1.61
-39℃
4.55
…
…
-38℃
4.17
-10℃
1.25
-37℃
3.85
-9℃
1.22
…
…
…
…
-20℃
1.67
50℃
0.56
(1)根据temp值,在表3-1中用二分法查找;
(2)若找到相应的温度值,则按相应的Ratio值求倒数得到K值;
(3)若没找到相应的温度值,则可确定temp所在的温度区间[Tp1,Tp2],同时获得了相应的Ratio1和Ratio2,再按如下公式计算K值:
Step=(Ratio1-Ratio2)/(Tp1-Tp2)
K=1.0/(Ratio1+Step*(temp-Tp1))
在程序中,当temp高于50℃或低于℃时,设定K=0。
【程序】
#include
typedefstruct{
intTemp;/*环境温度*/
doubleRatio;/*传感器的输出值*/
}CURVE;
#defineITEMS7
doubleGetK(int,CURVE*,int);
Voidmain()
{
intDegree;
doublek;
CURVECurve{ITEMS}={{-40,0.2},{-20,0.60},{-10,0.8},
{0,1.0},{10,1.17},{30,1.50},{50,1.8}};
printf("环境温度校正系数\n");
for(Degree=-40;Degree<=50;Degree++){
k=Getk(Degree,Curve,ITEMS);
printf("%3d%4.2f\n",Degree,k);
}
}
doubleGet(intTemp,CURVE*P,intn)
{/*用二分法在n个元素有的序表p中查找与Temp对应的传感器输出值*/
intlow,high,m;doubleStemp;
low=0;high=n-1;
if((TempTemp)||(Temp>(p+high)->Temp))
return0.0;/*超出温度范围时返回0.0*/
while(low<=high){
m=
(1);
if(Temp==(p+m)->Temp)
return
(2);
if(Temp<(p+m)->Temp)high=m-1;
elselow=(3);
}
p+=high;
Step=((4))/((p+1)->Temp–p->Temp);
return1.0/(p->Ratio+Step*((5)));
}
试题四(选做的C++语言样题)
阅读以下说明和C++程序,将解答写在答题纸的对应栏内。
【说明】
已知类SubClass的getSum方法返回其父类成员与类SubClass成员j的和,类SuperClass中的getSum为纯虚拟函数。
程序中的第23行有错误,请修改该错误并给出修改后的完整结果,然后完善程序中的空缺,分析程序运行到第15行且尚未执行第15行的语句时成员变量j的值,最后给出程序运行后的输出结果。
【C++代码】
行号
代码
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include
usingnamespacestd;
classSuperClass{
private;
inti;
public;
SuperClass(){i=5;}
virtualintgetValue(){returni;}
virtualintgetSum()=0;
};
classSubClass;publicsuperClass{
intj;
public;
SubClass(intj);j(0){
(1)=j;//用参数j的值更新数据成员
}
intgetValue(){returnj;}
intgetSum(){
return
(2)getValue()+j;
}
};
Voidmain(void){
SuperClasss=newSubClass(-3);
count<getValue()<<"";
count<getSum()<Deletes;
}
试题五(选做的Java语言样题)
阅读以下说明和Java程序代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
在下面的Java程序代码中,类SalesTicket能够完成打印票据正文的功能,类HeaDecorator与FootDecorator分别完成打印票据的台头和脚注的功能。
已知该程序运行后的输出结果如下所示,请填补该程序代码中的空缺。
这是票据的台头!
这是票据的正文!
这是票据的脚注!
---------------------------
这是票据的台头!
这是票据的脚注!
【Java程序代码】
publicclassSalesTicket{
publicvoidprintTicket(){
System.out.printle("这是票据的正文");
}
}
publicclassDecoratorextendsSalesTicket{
SalesTicketticket;
publicDecorator(SalesTickett){
ticket=t;
}
publicvoidprintTicket(){
if(ticket!
=null)
ticket.printTicket();
}
}
publicclassHeadDecoratorextendsDecorator{
publicHeadDecorator(SalesTickett){
(1);
}
publicvoidprintTicket(){
System.out.println("这是票据的台头");
super.printTicket();
}
}
publicclassFootDecoratorextendsDexorator{
publicFootDexorator(SalesTickett){
(2);
}
publicvoidprintTicket(){
super.printTicket();
System.out.println("这是票据的脚注!
");
}
}
publicclassMain{
publicstaticvoidmain(String[]args){
T=newHeadDecorator((3));
T.(4);
System.out.println("------------------------");
T=newFootDecorator((5));
T.printicket();
}
}
程序员考试培训指南
一、考试说明
1.考试目标
通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照程序设计规格说明书编制并调试程序,写出相应的程序文档,具有助理工程师(或技术员)的实际工作能力和业务水平。
2.考试要求
(1)掌握数制及其转换、数据的机内表示、算术和逻辑运算、应用数学的基础知识;
(2)了解计算机的组成以及各主要部件性能指标;
(3)掌握操作系统、程序设计语言的基础知识;
(4)熟练掌握基本数据结构和常用算法;
(5)熟练掌握C程序设计语言以及C++、Java中的一种程序设计语言;
(6)熟悉数据库、网络和多媒体的基础知识;
(7)了解软件工程的基础知识、软件过程基本知识、软件开发项目管理的常识;
(8)了解常用信息技术标准、安全性以及有关法律、法规的基础知识;
(9)了解信息化及计算机应用的基础知识;
(10)正确阅读和理解计算机领域的简单英文资料。
3.考试科目
计算机与软件工程基础知识,考试时间为150分钟,笔试,选择题;
程序设计,考试时间为150分钟,笔试,问答题。
二、考试内容
说明:
“I”、“II”和“III”表示掌握或熟悉的程度。
“I”:
对所列知识要理解其内容及含义(理解)。
“II”:
在有关问题中能直接使用(一般应用)。
“III”:
对所列知识要理解其确切含义及与其它知识的联系,能够进行叙述和解释,并能在实际问题的分析、综合、推理和判断等过程中运用(综合应用)。
考试科目1:
计算机与软件工程基础知识
1.计算机科学基础
1.1数制及其转换
●二进制、十进制和十六进制等常用数制及其相互转换
Ø二进制与十进制之间的相互转换(II)
Ø二进制与十六进制之间的相互转换(I)
1.2数据的表示
●数的表示
Ø带符号定点数据(纯整数和纯小数)的原码、反码、补码表示(II)
Ø浮点数(实数)的表示(I)
Ø精度和溢出的概念(II)
●非数值数据的表示(字符和汉字表示、声音表示、图像表示)
Ø西文字符的表示(I)
Ø汉字的表示方法(I)