2017年11月全国计算机技术与软件专业技术资格(水平)考试《程序员(初级)》复习全书【核心讲义+历年真题详解】(txt+pdf+epub+mobi电子书下载)


发布时间:2020-11-30 09:17:40

点击下载

作者:圣才电子书

出版社:圣才电子书

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

2017年11月全国计算机技术与软件专业技术资格(水平)考试《程序员(初级)》复习全书【核心讲义+历年真题详解】

2017年11月全国计算机技术与软件专业技术资格(水平)考试《程序员(初级)》复习全书【核心讲义+历年真题详解】试读:

第一部分 备考指南

第1章 计算机技术与软件专业技术资格(水平)考试概述(程序员篇)

一、考试简介

计算机技术与软件专业技术资格(水平)考试(以下简称计算机软件考试)是原中国计算机软件专业技术资格和水平考试(简称软件考试)的完善与发展。这是由国家人力资源和社会保障部、工业和信息化部领导下的国家级考试,其目的是,科学、公正地对全国计算机与软件专业技术人员进行职业资格、专业技术资格认定和专业技术水平测试。

原软件考试在全国范围内已经实施了二十年,截止2011年,累计参加考试的人数约有三百万人。该考试由于其权威性和严肃性,得到了社会及用人单位的广泛认同,并为推动我国信息产业特别是软件产业的发展和提高各类IT人才的素质做出了积极的贡献。

根据人事部、信息产业部文件(国人部发[2003]39号),计算机软件考试纳入全国专业技术人员职业资格证书制度的统一规划。通过考试获得证书的人员,表明其已具备从事相应专业岗位工作的水平和能力,用人单位可根据工作需要从获得证书的人员中择优聘任相应专业技术职务(技术员、助理工程师、工程师、高级工程师)。计算机专业技术资格(水平)实施全国统一考试后,不再进行计算机技术与软件相应专业和级别的专业技术职务任职资格评审工作。因此,这种考试既是职业资格考试,又是职称资格考试。

同时,这种考试还具有水平考试性质,报考任何级别不需要学历、资历条件,只要达到相应的技术水平就可以报考相应的级别。部分级别的考试已与日本、韩国相应级别的考试互认,以后还将进一步扩大考试互认的级别以及互认的国家。

考试合格者将颁发由中华人民共和国人力资源和社会保障部、工业和信息化部用印的计算机技术与软件专业技术资格(水平)证书。

二、考试专业与级别

根据《计算机技术与软件专业技术资格(水平)考试暂行规定》(以下简称《暂行规定》)第五条规定,计算机专业技术资格(水平)考试划分为计算机软件、计算机网络、计算机应用技术、信息系统和信息服务5个专业类别,并在各专业类别中分设了高、中、初级专业资格考试,详见《计算机技术与软件专业技术资格(水平)考试专业类别、资格名称和级别层次对应表》(见下)。人事部和信息产业部将根据发展需要适时调整专业类别和资格名称。

考生可根据本人情况选择相应专业类别、级别的专业资格(水平)参加考试。

三、报考条件

凡遵守中华人民共和国宪法和各项法律,恪守职业道德,具有一定计算机技术应用能力的人员,均可根据本人情况,报名参加相应专业类别、级别的考试。

因此,计算机软件资格考试报名条件不设学历与资历条件、年龄以及专业等限制,考生可根据自己的技术水平选择合适的级别合适的资格进行报考。

注:每次考试个人只允许报考一种资格。

四、报考方式

符合《暂行规定》(即《计算机技术与软件专业技术资格(水平)考试暂行规定》)第八条规定的人员,由本人提出申请,按规定携带身份证明到当地考试管理机构报名,领取准考证。凭准考证、身份证明在指定的时间、地点参加考试。

各地的报名办法由考生报考所在地的当地考试机构决定。考生相关报考费用标准由当地物价部门核准。

考生报名方式主要分为:网上报名与考生本人到指定地点报名两种。

注:报名时依据的身份证明包括:居民身份证、军人的证件、护照、户口本等。

五、报考时间

计算机专业技术资格(水平)考试原则上每年组织两次,在每年第二季度和第四季度举行。

注:各地的报名时间由考生报考所在地的当地考试机构决定。

六、考试形式与时间规定

除信息处理技术员和多媒体应用制作技术员采取笔试与上机操作考试相结合的形式外,其他各种考试都采用笔试形式。考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。

高级资格考试设综合知识、案例分析和论文3个科目;中级、初级资格考试设基础知识和应用技术2个科目。各级别考试均分2个半天进行。笔试安排在一天之内。上机考试将分期分批进行。

知识科目采用单项选择题,考试150分钟,考生需要用2B铅笔填涂答题卡;

应用技术科目采用问答题,考试时间150分钟;上机考试时间为150分钟;

案例分析科目采用问答题,考试时间为90分钟;论文科目考试时间为120分钟。各个科目的满分均为75分。

七、程序员考试科目设置(1)计算机与软件工程基础知识,考试时间为150分钟,笔试,选择题;(2)程序设计,考试时间为150分钟,笔试,问答题。

八、考试目标

通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照程序设计规格说明书编制并调试程序,写出相应的程序文档,产生符合标准规范的、实现设计要求的、能正确可靠运行的程序。具有助理工程师(或技术员)的实际工作能力和业务水平。

九、程序员考试要求(1)掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;(2)理解计算机的组成以及各主要部件的性能指标;(3)掌握操作系统、程序设计语言的基础知识;(4)熟练掌握计算机常用办公软件的基本操作方法;(5)熟练掌握基本数据结构和常用算法;(6)熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;(7)熟悉数据库、网络和多媒体的基础知识;(8)掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;(9)了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;(10)了解信息化、计算机应用的基础知识;(11)正确阅读和理解计算机领域的简单英文资料。

十、指定书目

考试大纲——《程序员考试大纲与培训指南(2009版)》  清华大学出版社

指定教材——《程序员教程(第三版)》  清华大学出版社

十一、考试内容

说明:“Ⅰ”、“Ⅱ”和“Ⅲ”表示掌握或熟悉的程度。“I”是指对所列知识要理解其内容及含义(理解)。“Ⅱ”是指有关问题中能直接使用(一般应用)。“Ⅲ”是指对所列知识要理解其确切含义及与其他知识的联系,能够进行叙述和解释,并能在实际问题的分析、综合、推理和判断等过程中运用(综合应用)。考试科目1:计算机与软件工程基础知识

一、计算机科学基础

1.1 数制及其转换

·二进制、十进制和十六进制等常用数制及其相互转换

◆二进制与十进制之间的相互转换(Ⅱ)

◆二进制与十六进制之间的相互转换(Ⅰ)

1.2 数据的表示

·数的表示

◆带符号定点数据(纯整数和纯小数)的原码、反码、补码表示(Ⅱ)

◆浮点数(实数)的表示(Ⅰ)

◆精度和溢出的概念(Ⅱ)

·非数值数据的表示(字符和汉字表示、声音表示、图像表示)

◆西文字符的表示(Ⅰ)

◆汉字的表示方法(Ⅰ)

◆声音数据的表示方法(Ⅰ)

◆图像数据的表示方法(Ⅰ)

1.3 算术运算和逻辑运算

·计算机中二进制数的运算方法

◆补码表示定点数的相加、相减运算(Ⅰ)

·逻辑代数的基本运算

◆基本的与、或、非逻辑运算(Ⅱ)

1.4 数学应用

·常用数值计算

◆矩阵的基本运算(Ⅰ)

◆方程的近似求解(Ⅰ)

◆线性插值(Ⅰ)

·排列组合,应用统计

◆排列组合计算(Ⅰ)

◆基本的数据统计分析方法及实例计算(Ⅰ)

·编码基础

◆ASCⅡ码的特点及编码计算(Ⅱ)

◆汉字编码的特点(Ⅰ)

◆奇偶校验码的特点及实例计算(Ⅱ)

◆循环冗余码的定义及构造(Ⅰ)

◆海明码的定义及构造(Ⅰ)

1.5 常用数据结构

·数组

◆数组的定义及特点(Ⅰ)

◆一维数组元素的存储特点和元素位置计算(Ⅱ)

◆二维数组元素的按行存储及按列存储方式的特点及元素的位置计算(Ⅱ)

◆静态数组的概念及动态数组的概念(Ⅰ)

·线性表及链表

◆线性表的定义和基本运算(Ⅰ)

◆线性表的顺序存储和特点(Ⅰ)

◆指针、结点、头指针和头结点的概念(Ⅰ)

◆单向链表的定义及特点(Ⅱ)

◆双向链表的定义及特点(Ⅰ)

◆环形链表的定义及特点(Ⅱ)

·队列、栈

◆队列的定义及运算特点(Ⅱ)

◆循环队列的定义及运算(Ⅰ)

◆队列采用环形链表的运算特点(Ⅰ)

◆栈的定义及运算特点(Ⅱ)

◆栈采用一维数组存储结构的运算特点(Ⅰ)

◆栈采单向链表存储结构的运算特点(Ⅰ)

·树

◆二叉树的定义(Ⅰ)

◆二叉树的顺序存储结构和二叉链表存储结构的特点(Ⅱ)

◆二叉树的先序、中序、后序和层序遍历运算的含义(Ⅱ)

◆最优二叉树(哈夫曼树)的定义(Ⅰ)

·图

◆图的定义和常用术语(Ⅰ)

◆图的邻接矩阵存储结构和邻接表存储结构定义及特点(Ⅱ)

1.6 常用算法

·算法与数据结构的关系

◆算法的定义和特点(Ⅰ)

◆算法与数据结构的关系(Ⅰ)

·算法设计和算法描述

◆基本的算法设计方法(Ⅰ)

◆算法的流程图描述和伪代码描述方法(Ⅱ)

·常用的排序算法

◆插入排序、冒泡排序、选择排序算法(Ⅲ)

◆希尔排序、快速排序、堆排序、归并排序算法(Ⅱ)

·查找算法

◆顺序查找、二分查找过程(Ⅲ)

·常用的数值计算方法(Ⅱ)

·字符串处理算法(Ⅱ)

·递归算法(Ⅰ)

·最小生成树、拓扑排序和单源点最短路径求解算法(Ⅰ)

二、计算机系统基础知识

2.1 硬件基础知识

2.1.1 计算机的类型和特点

·微机(PC)、工作站、服务器、主机、大型计算机、巨型计算机、并行机的特点(Ⅰ)

2.1.2 中央处理器CPU

·CPU的组成

◆CPU的组成和基本结构(Ⅰ)

◆控制器与运算器的基本组成和功能(Ⅰ)

·常用的寄存器

◆累加器AC、标志寄存器、通用寄存器组的概念和功能(Ⅰ)

◆程序计数器(PC)、指令寄存器(IR)、地址寄存器(MAR)和数据寄存器(MDR)的定义和作用(Ⅰ)

·指令系统、寻址方式

◆指令系统的概念(Ⅰ)

◆指令的概念、格式和类型(Ⅰ)

◆立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、间接寻址、相对寻址、变址寻址的含义(Ⅰ)

·指令执行控制、中断控制、处理机性能

◆指令的执行过程(Ⅰ)

◆流水线的基本概念(Ⅰ)

◆中断的概念(Ⅱ)

2.1.3 主存和辅存

·存储介质(半导体、硬盘、光盘、U盘等)

◆半导体存储器的特点(Ⅰ)

◆硬盘的参数、容量(Ⅱ)

◆U盘的容量和特点(Ⅱ)

·高速缓存(Cache)、主存

◆高速缓存(Cache)的概念、作用和基本构成(Ⅰ)

◆主存的类型、容量和性能指标(Ⅱ)

·辅存设备

◆磁盘、磁带、光盘、DVD盘、U盘等辅存设备的特点、性能和容量(Ⅱ)

2.1.4 I/O接口、I/O设备和通信设备

·I/O接口

◆I/O接口的功能(Ⅰ)

◆程序查询方式、中断处理方式的含义和特点(Ⅰ)

◆DMA(直接存储器存取)方式的含义和特点(Ⅰ)

·I/0设备(类型、特性)

◆常见I/O设备的类型和特性(Ⅰ)

·通信设备(类型、特性)

◆常见通信设备的类型和特性(Ⅰ)

·I/O设备、通信设备的连接方法和连接介质类型

◆常见I/O设备与主机的连接方法(Ⅰ)

◆总线的概念、类型和特点(Ⅱ)

◆常见通信设备的连接方法(Ⅰ)

◆常见连接介质的类型和特点(Ⅰ)

2.2 软件基础知识

2.2.1 操作系统基础知识

·操作系统的类型和功能

◆操作系统作用、特征与功能(Ⅰ)

◆操作系统分类(Ⅰ)

◆嵌入式操作系统的基本概念(Ⅰ)

◆网络操作系统的基本概念(Ⅰ)

◆分时操作系统与实时操作系统,网络操作系统与分布式操作系统的区别(Ⅰ)

·处理机管理(进程、线程)

◆进程的定义及组成(Ⅰ)

◆进程控制块(PCB)的基本概念(Ⅰ)

◆进程状态的三态模型和五态模型(Ⅱ)

◆进程间的通信,临界资源、临界区、同步与互斥的基本概念(Ⅰ)

◆P/V操作(Ⅱ)

◆进程调度:高级调度、中级调度、低级调度、调度方式方面的基础知识(Ⅰ)

◆死锁的定义、产生死锁的原因、产生死锁的必要条件(Ⅰ)

◆线程的定义,线程与进程的区别(Ⅰ)

·存储管理

◆虚拟地址、地址空间、存储空间、地址重定位的基本概念(Ⅰ)

◆固定分区、可变分区、可重定位分区的基本概念(Ⅰ)

◆分页/请求分页存储管理的基本概念与原理(Ⅰ)

·设备管理

◆设备管理基本概念,块设备、字符设备、独占设备、共享设备、虚拟设备的含义(Ⅰ)

◆Spooling(Simultaneous Peripheral Operations On Line)定义、组成和结构(Ⅰ)

◆引入缓冲技术的原因与目的(Ⅰ)

◆磁盘调度的基本概念:移臂调度、旋转调度(Ⅰ)

◆先来先服务(First-Come-First-Served,FCFS)、最短寻道时间优先SSTF(Shortest Seek Time First)、扫描算法(SCAN)、单向扫描调度算法(CSCAN)磁盘调度算法的基本思想(Ⅰ)

·文件管理

◆文件、文件系统、文件类型、文件组织结构的基本概念(Ⅰ)

◆文件目录的概念,一级目录、二级目录、多级目录的基本概念(Ⅰ)

◆文件的存取方法:顺序存取法、直接存取法、按键存取法的基本概念(Ⅰ)

◆位示图、空闲块表等文件存储空间的管理算法思想(Ⅰ)

◆空闲块链、成组链接法的基本概念(Ⅰ)

·作业管理

◆作业的状态(提交、后备、执行、完成)、作业控制块和作业后备队列的基本概念(Ⅰ)

◆先来先服务、短作业优先、响应比高优先作业调度算法思想(Ⅱ)

◆优先级调度算法思想(Ⅰ)

·图形用户界面和操作方法

◆字符用户界面、图形用户界面的基本特点(Ⅰ)

◆常见操作系统的使用(Windows,Linux)(Ⅱ)

2.2.2 程序设计语言和语言处理程序的基础知识

·语言翻译基础知识

◆语言翻译的基本概念(Ⅰ)

◆汇编的含义和基本过程(Ⅰ)

◆编译的基本过程及编译各阶段的基本任务(Ⅰ)

◆解释的含义和基本过程(Ⅰ)

◆正规表达式的定义(Ⅱ)

·程序设计语言的基本成分:数据、运算、控制和传输

◆程序设计语言的数据(数据类型)、运算(运算符和表达式)和语句的类型和功能(Ⅰ)

◆函数的参数传递机制:传值、传地址(Ⅱ)

·程序语言类型和特点

◆过程式程序语言、面向对象程序设计语言、函数式程序设计语言、逻辑程序设计语言的基本特点(Ⅰ)

◆脚本语言的概念和基本特点(Ⅰ)

2.3 网络基础知识

·网络的功能、分类、组成和拓扑结构

◆通信子网和资源子网的概念(Ⅰ)

◆局域网、城域网和广域网的概念(Ⅰ)

◆星型网、树型网、环型网和总线网的概念(Ⅰ)

·基本的网络协议与标准

◆物理层、数据链路层、网络层、传输层、应用层的基本概念(Ⅰ)

◆TCP/IP协议及相关协议的功能(Ⅰ)

·常用网络设备与网络通信设备的作用和特点

◆中继器、集线器(HUB)、网关、交换机、路由器、网桥的基本功能和特点(Ⅰ)

◆调制解调器的基本功能和特点(Ⅰ)

·Client/Server结构和Browser/Server结构的基本概念和特点(Ⅰ)

·局域网(LAN)基础知识(Ⅰ)

·互联网(Intemet)基础知识

◆互联网的接入方式(Ⅰ)

◆TCP/IP协议的属性设置(Ⅱ)

◆常用的互联网服务及协议(Ⅰ)

◆地址的分类、计算(Ⅱ)

◆防火墙基本概念(Ⅰ)

2.4 数据库基础知识

·数据库管理系统的主要功能和特征

◆数据库系统(Data Base System,DBS)定义及组成(Ⅰ)

◆数据库管理系统(Data Base Management System,DBMS)功能、特征、组成(Ⅰ),文件系统与数据库系统的差异(Ⅱ)

·数据库模式(概念模式、外模式、内模式)

◆概念模式(模式)、外模式(用户模式或子模式)、内模式(物理模式)的基本概念(Ⅱ)

◆三级模式和两级映像(模式/内模式映像、外模式/模式映像)的基本概念(Ⅱ)

◆数据的逻辑独立性和物理独立性的基本概念(Ⅱ)

·数据模型,ER图

◆层次模型、网状模型、关系模型、面向对象模型的基本概念(Ⅰ)

◆数据模型的三要素(数据结构、数据操作、数据的约束条件)的含义(Ⅰ)

◆E-R模型基本概念(Ⅱ),E-R图(E-R模型)向关系模型转换的基本方法(Ⅱ)

◆实体中主键、候选键、外键的基本概念(Ⅱ)

◆一对一(1:1)、一对多(1:n)、多对多(m:n)联系类型的含义(Ⅱ)

◆简单属性、复合属性、单值属性、多值属性、NULL属性、派生属性的含义(Ⅰ)

·数据操作(关系运算)

◆关系数据库、关系数据库模式基础知识(Ⅰ)

◆关系模型的实体完整性、参照完整性、用户定义完整性的基本概念(Ⅰ)

◆并、差、笛卡尔积、投影、选择关系运算的基本概念(Ⅱ)

◆扩展的关系运算中选择、投影、连接运算方法(Ⅰ)

·数据库语言(SQL)

◆数据定义语言(DDL):CREATE TABLE(创建表)的应用(Ⅱ)

◆数据操纵语言(DML):SELECT(查询)、INSERT(插入)、DELETE(删除)和UPDATE(修改)的应用(Ⅱ)

◆完整性(integrity)定义:PRIMARY KEY、FOREIGN KEY REFERENCES使用方法(Ⅱ)

◆权限管理:GRANT和REVORK使用方法(Ⅱ)

·数据库的主要控制功能(并发控制、安全控制)

◆事务的基本概念、事务的特性、故障的类型(Ⅰ)

◆数据不一致性(丢失修改、不可重复读、读脏数据)的基础知识(Ⅰ)

◆并发控制中活锁/死锁、可串行性、两段锁协议的基本概念(Ⅰ)

◆安全控制(权限机制、视图机制、加密机制)的基本概念(Ⅰ)

2.5 多媒体基础知识

·多媒体基本知识

◆多媒体的概念,感觉媒体、表示媒体、表现媒体、存储媒体和传输媒体的基本概念(Ⅰ)

◆多媒体的特征:多样性、集成性、交互性、非线性、实时性、信息使用的方便性和信息结构的动态性方面的基本概念(Ⅰ)

◆声音信号、声音信号的数字化、波形声音的基本概念(Ⅰ)

◆色彩的三基色、彩色空间、三要素(亮度、色调和色饱和)基本概念(Ⅰ)

◆图形和图像的基本概念(Ⅰ)

◆图像分辨率与显示分辨率、像素深度、真/伪彩色,图像的压缩标准的基本概念(Ⅰ)

·常用多媒体设备性能特征,常用多媒体文件格式类型

◆多媒体计算机系统的硬件组成基础知识(Ⅰ)

◆常用多媒体设备、性能及特征方面的基础知识(Ⅰ)

◆常见的声音、图形图像、视频文件类型(Ⅰ)

2.6 系统性能指标

·响应时问、吞吐量、周转时间基本概念(Ⅰ)

·可靠性、可维护性、可扩充性、可移植性、可用性、可重用性、安全性基本概念(Ⅰ)

2.7 计算机应用基础知识

·计算机常用办公软件操作方法

◆字处理软件Word的常用功能及操作(Ⅰ)

◆表处理软件Excel的常用功能及操作(Ⅰ)

·计算机的应用

◆计算机在信息管理、数据处理的领域应用及相关技术,以及在辅助设计、自动控制、科学计算、人工智能等领域的应用(Ⅰ)

·远程通信服务(Ⅰ)

三、系统开发和运行知识

3.1 软件工程和项目管理基础知识

·软件开发生存周期各阶段的目标和任务(可行性分析和项目开发计划、需求分析、软件设计、编码、测试、维护)(Ⅰ)

·软件能力成熟度模型CMM、统一过程(UP)、极限编程(XP)的基本概念(Ⅰ)

·软件开发项目管理(成本估算、风险分析、进度管理(Gantt图、PERT图)、人员管理)基本概念(Ⅰ)

·结构化方法、面向对象方法的基本概念(Ⅱ)

·软件工具与软件开发环境(分析工具、设计工具、编程工具、测试工具、维护工具、CASE)(Ⅰ)

·软件质量管理基础知识(软件质量特性(IS0/IEC9126软件质量模型、软件质量保证)(Ⅰ)

3.2 系统分析和设计基础知识

·数据流图(DFD)、实体联系图(ER图)的基本概念(Ⅰ)

·面向对象设计、以过程为中心的设计、以数据为中心等设计方法的基本概念(Ⅰ)

·结构化分析方法(数据流图的基本构成、数据字典、加工逻辑的描述(结构化语言、决策表、决策树))(Ⅰ)

·结构化设计方法(数据流的类型、结构化设计的基本步骤)(Ⅰ)

·软件详细设计(模块设计、代码设计的基本原则、输入/输出设计的基本原则、用户界面设计的基本原则)(Ⅰ)

3.3 程序设计基础知识

·结构化程序设计方法

◆自项向下、逐步求精的设计理念,三种基本控制结构(Ⅰ)

◆使用流程图、NS图、PAD图进行处理过程的设计(Ⅱ)

◆程序设计风格

源程序中的内部文档、数据说明、语句构造、输入输出、效率(Ⅱ)

3.4 程序测试基础知识

·程序测试的目的、原则、对象、过程与工具(Ⅰ)

·用黑盒法设计测试用例

◆等价类划分、边界值划分、错误推测、因果图(Ⅱ)

·用白盒法设计测试用例

◆逻辑覆盖、循环覆盖、基本路径测试(Ⅱ)

·测试设计和管理(Ⅰ)

3.5 程序设计文档基础知识

·接口的描述、程序逻辑的描述、程序规格说明书(Ⅰ)

·模块测试计划、模块测试用例、模块测试报告(Ⅰ)

3.6 系统运行和维护基础知识

·系统运行管理基础知识(Ⅱ)

·系统维护的类型和含义

◆正确性维护、适应性维护、完善性维护、预防性维护(Ⅱ)

四、信息安全基础知识

·信息系统安全基础知识

◆计算机设备安全、软件安全、网络安全、信息安全的基本概念(Ⅰ)

·信息系统安全管理

◆防治计算机病毒、防范计算机犯罪、访问控制、防闯入、防灾、安全保密措施(Ⅰ)

·加密与解密基础知识

◆常用的加密方法和解密方法(Ⅰ)

五、标准化基础知识

·标准化基本概念

◆标准化的目的、意义,组织机构、内容、分类、代号与编号规定(Ⅰ)

·标准的层次

◆国际标准、国家标准、行业标准、企业标准的表示方法(Ⅱ)

·相关标准的基本概念

◆代码标准(汉字编码标准)、文件格式标准、安全标准、软件开发规范和文档标准、互联网相关标准的基本概念(Ⅰ)

六、信息化基础知识

·信息、信息资源、信息化、信息工程、信息产业、信息技术的含义(Ⅰ)

·全球信息化趋势,国家信息化战略,企业信息化战略和策略常识(Ⅰ)

·有关的法律、法规要点

◆软件著作权的概念(Ⅱ)

◆软件著作权主体与客体、权利内容、权利归属(Ⅱ)

◆发表权、署名权、修改权、复制权、发行权、翻译权(Ⅰ)

◆专利法、商标法、商业秘密权(Ⅰ)

◆专利法、商标法、商业秘密权对软件的保护知识(Ⅰ)

七、计算机专业英语

·具有助理工程师(或技术员)英语阅读水平(Ⅰ)

·理解本领域英语基本词汇(Ⅰ)考试科目2:程序设计

一、内部设计

1.1 理解外部设计

1.2 软件功能划分和确定结构

·数据流图(DFD)、结构图(Ⅰ)

1.3 物理数据设计

·确定数据组织方式、存储介质、设计记录格式、处理方式(Ⅰ)

1.4 输入输出设计

·界面设计、报表设计等(Ⅱ)

1.5 内部设计文档

·程序接口、程序功能、人机界面、输入输出、程序流程图、测试计划(Ⅱ)

1.6 内部设计评审

二、程序设计

2.1 模块划分(原则、方法、标准)

2.2 编写程序设计文档

·模块规格说明书(程序处理逻辑、输入输出数据格式)(Ⅱ)

·测试要求说明书(测试类型和目标、测试用例、测试方法)(Ⅱ)

2.3 程序设计评审

三、程序实现

3.1 编程

·编程方法和规范(Ⅰ)

·程序设计语言的选择和使用(Ⅰ)

·人工走查(Ⅱ)

·程序文档化(Ⅱ)

3.2 程序测试

·测试环境和测试工具的选择和使用(Ⅰ)

·测试数据的设计(Ⅱ)

·测试报告的编写(Ⅰ)

四、程序设计语言(C语言为必选,再在C++、Java语言中任选一种)

4.1 C程序设计语言

·语法,程序结构(Ⅲ)

·基本类型数据的定义和声明(Ⅲ)

·数组、结构体、共用体类型数据的定义和声明(Ⅲ)

·表达式和可执行语句(Ⅲ)

·函数定义和调用,标准库函数的使用(Ⅲ)

·指针的使用(Ⅱ)

·文件的基本操作(Ⅲ)

4.2 C++程序设计语言

·面向对象程序设计与C++基本语法

◆面向对象程序设计的基本概念与术语(Ⅰ)

◆C++基本数据类型、各种表达式与语句(Ⅲ)

◆C++的数组、结构、指针以及函数的使用(Ⅲ)

·类、成员、构造函数(Constructor)、析构函数(Destructor)

◆C++类的声明、定义与使用(Ⅲ)

◆C++对象的构造、使用与销毁(Ⅲ)

·模板、继承、多态

◆C++类与函数模板的概念、定义与应用(Ⅲ)

◆C++中继承的相关概念与应用(Ⅲ)

◆C++中运算符与函数的重载(Ⅲ)

·异常处理

◆C++异常处理机制的概念与应用(Ⅲ)

·类库

◆C++标准类库中的容器库的应用(Ⅱ)

◆C++标准类库中算法库的应用(Ⅱ)

◆C++标准类库中的迭代器的应用(Ⅱ)

◆C++标准类库中的字符串的应用(Ⅲ)

◆C++标准类库中的流与文件的应用(Ⅲ)

4.3 Java程序设计语言

·面向对象程序设计

◆面向对象程序设计的基本概念与术语(Ⅰ)

·Java语言概述

◆Java语言的特点(Ⅰ)

◆Java语言的开发环境与配置(Ⅱ)

·语言机制(语法和程序结构,类、成员、构造函数(Constructor)、继承、异常处理)

◆基本数据类型及其运算与基础类库(Ⅲ)

◆控制结构(Ⅲ)

◆数组(Ⅲ)

◆类的定义与应用(Ⅲ)

◆对象的构造与使用(Ⅲ)

◆包的概念与应用(Ⅱ)

◆继承机制的应用

◆接口与内部类的应用(Ⅱ)

◆错误与异常处理机制(Ⅱ)

·Java类库、线程、输入/输出流

◆AWT、Swing用户界面与事件处理机制(Ⅰ)

◆流与文件的应用(Ⅲ)

◆多线程的开发与应用(Ⅱ)

◆集合类库的应用(Ⅱ)

◆网络、数据库的开发与应用(Ⅱ)

·Java Applets,Java应用程序

◆Java应用程序与Java Applets的区别(Ⅰ)

◆Java Applets开发与部署(Ⅰ)

第2章 程序员考试复习技巧

一、解题的步骤

1.把握题意

根据问题的描述,确定问题的已知条件和隐含条件,并了解算法(程序)要达到的目的,窥测出题者的用意。这是至关重要的一步,是对题目的整体把握。准确的讲,这一步就要知道输入是什么,又得到什么样的输出结果。

2.快速确定算法

每个题目的题干都有详细的描述,通过对描述的分析,要确定题目应该属于哪种类型的题,用到了哪一类数据结构以及相应的算法。有些题目可能不属于任何数据结构,则它可能与某类算法有关;但也有一些算法纯粹是数学方法。

3.带着问题阅读程序

阅读和分析程序结构时,如果有很多子函数,首先弄清楚各函数之间的关系和各函数的作用,如果程序较长,则应该根据算法过程,把每个程序段与算法的每个过程对应起来,确定相应的程序段功能。在程序中,已经定义了某些变量,则在理解程序时,首先必须理解这些变量的含义。找到算法思想的核心程序段及主函数,重点阅读。

4.根据具体的语言填空

区分结构化程序设计语言和面向对象的程序设计语言的不同,由于C++与Java比较接近,有时容易搞混。要区分是语法填空还是算法填空。

二、解题的方法与技巧

1.勇往直前

进入下午的考试,会有些许疲劳的感觉,尤其当看到题干很长、算法较复杂的题时,就有想回避或焦虑、急躁的情绪。这是典型的“两军未战,兵先屈”的败兴思绪。要知道两对手相遇勇者胜,勇者相遇智者胜。抛开所有不必要的想法,相信自己的实力,做到心无旁鹜,勇往直前。

2.审清题干

题干包含了整个题目的条件和要求,但也有很多提示信息在程序的“注释”当中;若题干比较复杂,就要注意将题干“分段”来阅读,前后注意衔接,必要时在草稿纸上记录下关键数据。有时候题干很长,看似很复杂,让很多人望而却步。其实,这种题更好解,因为题干长了预示着题目的提示信息相应的多了,此时,主要是考你有没有勇气和耐心。

3.巧读程序

要从主函数开始,再到子函数(过程),整体阅读两遍,找出各部分功能,对照题干的算法要求,然后再定位填空。

4.巧妙填空

填空时要注意整体观念,因为有些空的答案在后面有提示。通常比较集中的填空,不容易填,往往这是题目的核心算法所在。比较分散的空通常是对语法的填空。

三、总结

常言道“熟能生巧”、“打铁还得本身硬”,再好的方法与技巧若没有基础,是发挥不了作用的;如若有了一定的功底,再差的招式也会产生很大的威力,就像金庸小说中杨过的那柄钝剑。程序员考试的难度较大,下午题要求对C语言、数据结构与算法、面向对象的程序设计语言(C++、Java、VB三选一)、流程图比较熟练;如果只看不练,不会有提高。建议大家多做模拟试题和历年试题,锻炼解题的能力与节奏。

第二部分 核心讲义

第1章 计算机系统基础知识

1.1 计算机系统的基本组成

一、计算机系统组成示意图图1-1 计算机系统的组成示意图

二、计算机系统的硬件组成

1.CPU

运算器和控制器及其相关部件已被集成在一起,统称为中央处理单元(Central Processing Unit,CPU)。CPU是硬件系统的核心,用于数据的加工处理,能完成各种算术、逻辑运算及控制功能。(1)运算器

对数据进行加工处理的部件,主要完成算术和逻辑运算。(2)控制器

从主存中取出指令并进行分析,控制计算机完成指令功能。(3)寄存器

CPU中的记忆器件,用来临时存放指令、数据及运算结果。寄存器比内存的速度快很多。

2.存储器

存储器是计算机系统中的记忆设备,分为内部存储器(Main Memory,MM,简称内存、主存)和外部存储器(简称外存)。内存速度快、容量小,可用来临时存储计算机运行时所需的程序、数据及中间结果。外存容量大、速度慢,可用于长期保存信息。习惯上将CPU和主存储器的有机组合称为主机。

3.输入/输出设备

输入/输出(I/O)设备位于主机之外,是计算机系统与外界交换信息的装置。输入和输出,都是相对于主机而言的。输入设备的作用是把转换成二进制形式的信息输到计算机的存储器中,输出设备的作用是把运算结果按照人们所要求的形式输出到外部设备或存储介质上。

三、计算机软件

1.定义

计算机软件是指为管理、运行、维护及应用计算机系统所开发的程序和相关文档的集合。

2.分类

系统软件和应用软件。

四、计算机的类型

1.按体积和工作能力分类

按照体积和工作能力,计算机分为巨型机、大型机、小型机和微型机。其中,微型机有多种形式,如台式机(Desktop)、膝上型计算机(Laptop)或笔记本式计算机(Notebook)、工作站(Workstation)、掌上型计算机和个人数字助理(Personal Digital Assistant,PDA)等。

2.按功能是否专一分类

按照功能是否专一,计算机分为通用计算机和专用(嵌入式)计算机。

3.按CPU指令系统架构分类

按照CPU的指令系统架构,计算机分为复杂指令系统计算机(Complex Instruction Set Computer,CISC)和精简指令系统计算机(Reduced Instruction Set Computer,RISC)。

4.按体系结构及指令处理方式分类

按体系结构及指令处理方式,计算机分为单指令流单数据流计算机(Single Instruction Single Data,SISD)、单指令流多数据流计算机(Single Instruction Multiple Data,SIMD)、多指令流单数据流计算机(Multiple Instruction Single Data,MISD)和多指令流多数据流计算机(Multiple Instruction Multiple Data,MIMD)。

1.2 数据的表示及运算

一、计算机中数据的表示

计算机中,各种信息都必须经过数字化编码后才能被传送、存储和处理。编码是采用少量的基本符号,选用一定的组合原则,来表示大量复杂多样的信息。基本符号的种类和这些符号的组合规则是一切信息编码的两大要素。

1.进位计数制及其转换

在采用进位计数的数字系统中,如果只用r个基本符号表示数值,则称其为r进制,r称为该数制的基数。(1)不同数制的共同特点

①每一种数制都有固定的符号集。例如,十进制数制的基本符号有十个:0,1,2,…,9。二进制数制的基本符号有两个:0和1。

②每一种数制都使用位置表示法。即处于不同位置的数符所代表的值不同,与它所在位置的权值有关。

各种进位计数制中的权值恰好是基数的某次幂。因此,对任何一种进位计数制表示的数都可以写成按权展开的多项式。计算机中常用的几种进位数制如表1-1所示。表1-1 计算机中常用的进位数制的表示二进进位制八进制十进制十六进制制逢二规则逢八进一逢十进一逢十六进一进一基数r=2r=8r=10r=160,1,2,0,1,2,0,1,2,…,9,数符0,1…,7…,9A,B,…,Fiiii权281016形式表BODH示符(2)十进制计数法与二进制计数法的相互转换

①二进制数转换成十进制数的方法

将二进制数的每一位数乘以它的权,然后相加。

同理,八进制、十六进制数转换成十进制数的方法都是每一位数乘以该位的权值,然后相加。【例1.1】把二进制数100110.101转换成相应的十进制数。543210-1(100110.101)=1×2+0×2+0×2+1×2+1×2+0×2+1×2+0×2-2-32+1×2

=32+0+0+4+2+0+0.5+0+0.125

=38.625

②十进制数转换成二进制数的方法

整数部分和小数部分分别转换,然后再合并。十进制整数转换为二进制整数的方法是“除2取余”;十进制小数转换为二进制小数的方法是“乘2取整”。

十进制数转换成二进制数还有一种简便的方法:把一个十进制数写成按二进制数权的大小展开的多项式,按权值从高到低依次取各项的系数就可得到相应的二进制数。【例1.2】把十进制数17.71875转换为相应的二进制数。753210-1-3-4-5(175.71875)=2+2+2+2+2+2+2+2+2+210

=10101111.10111(3)八进制计数法与十进制、二进制计数法的相互转换

①十进制数转换为八进制数的方法

对于十进制整数采用“除8取余”的方法转换为八进制整数;对于十进制小数则采用“乘8取整”的方法转换为八进制小数。

②二进制数转换成八进制数的方法

从小数点起,把二进制数每三位分成一组,然后写出每一组的等值八进制数,顺序排列起来就得到所要求的八进制数。

③八进制数转换为二进制数的方法

将一位八进制数用三位二进制数表示。

二进制与八进制数之间的对应关系如表1-2所示。表1-2 二进制、八进制和十六进制数之间的对应关系八十六十六二进制进二进制二进制进制进制制00000000010008001100011100190102001021010A0113001131011B1004010041100C1015010151101D1106011061110E1117011171111F(4)十六进制计数法十进制、二进制计数法的相互转换

①十进制数可以转换为十六进制数的方法

十进制数的整数部分“除16取余”,十进制数的小数部分“乘16取整”。

②二进制数转换成十六进制数的方法

从小数点开始,每4位二进制数为一组,将每一组用相应的十六进制数符来表示,即可得到正确的十六进制数。整数部分不足四位时向前取0补齐4位,如(1110001)中的前三位化为十六进制数时便2可以向前取0,补为0111,再化为十六进制数,而小数部分则向后取0补齐4位。

二进制与十六进制数之间的对应关系如表1-2所示。

2.二进制运算规则(1)加法:二进制加法的进位规则是“逢二进一”。0+0=01+0=10+1=11+1=0(有进位)(2)减法:二进制减法的借位规则是“借一当二”。0-0=01-0=11-1=00-1=1(有借位)(3)乘法:规则如下:0×0=01×0=00×1=01×1=1

3.机器数和码制(1)概念

①机器数

各种数据在计算机中表示的形式。机器数采用二进制计数制,数的符号用0、1表示,小数点隐含表示而不占位置。

②真值

机器数对应的实际数值称为数的真值。

③带符号数

机器数的最高位是表示正、负的符号位,其余位则表示数值。

④纯整数

小数点的位置在机器数的最低数值位之后的数。

⑤纯小数

小数点的位置在机器数的最高数值位之前(符号位之后)的数。

⑥无符号数

无符号数是针对二进制来讲的,无符号数的表数范围是非负数,即全部二进制位均代表数值,没有符号位。(2)码制

为了便于运算,带符号的机器数可采用原码、反码和补码等不同的编码方法。

①原码表示法

数值X的原码记为[X],如果机器字长为n(即采用n个二进制位原表示数据),则最高位是符号位,0表示正号,1表示负号,其余的n-1位表示数值的绝对值。数值零的原码表示有两种形式:[+0]原=00000000,[-0]=10000000。原【例1.3】若机器字长n等于8,则[+1]原=10000001[-1]原=00000001[+127]原=11111111[-127]原=01111111[+45]原=10101101[-45]原=00101101=0◇[+0.5]原=1◇1000000(其中◇是小数点的位置)[-0.5]原1000000

②反码表示法

数值X的反码记作[X],如果机器字长为n,则最高位是符号反位,0表示正号,1表示负号,其余的n-1位表示数值。正数的反码与原码相同,负数的反码则是其绝对值按位求反。数值0的反码表示有两种形式:[+0]=00000000,[-0]=11111111。反反【例1.4】若机器字长n等于8,则[+1]反=11111110[-1]反=00000001[+127]反=10000000[-127]反=01111111[+45]反=11010010[-45]反=00101101=0◇[+0.5]反=1◇0111111(其中◇是小数点的位置)[-0.5]反1000000

③补码表示法

数值X的补码记作[X],如果机器字长为n,则最高位为符号补位,0表示正号,1表示负号,其余的n-1位表示数值。正数的补码与其原码和反码相同,负数的补码则等于其反码的末位加1。在补码表示中,0有唯一的编码:[+0]=00000000,[-0]=00000000。补补【例1.5】若机器字长n等于8,则[+1]补=11111111[-1]补=00000001[+127]补=10000001[-127]补=01111111[+45]补=11010011[-45]补=00101101=0◇[+0.5]补=1◇1000000(其中◇是小数点的位置)[-0.5]补1000000

相对于原码和反码表示,补码表示法有一个例外,当符号位为1n-1而数值位全部为0时,它表示整数-2,即此时符号位的1既表示符号又表示数值。

设计补码时,有意识的引用了模运算在数理上对符号位的自动处理,利用模的自动丢弃实现了符号位的自然处理。

④移码表示法

移码表示法是在数X上增加一个偏移量,常用于表示浮点数中的n-1阶码。如果机器字长为n,在偏移量为2时,只要将补码的符号位取反便可获得相应的移码表示。【例1.6】若机器字长n等于8,则[+1]移=01111111[-1]移=10000001[+127]移=00000001[-127]移=11111111[+45]移=01010011[-45]移=10101101[+0]移=10000000(其中◇是小数点的位置)[-0]移=10000000

4.定点数和浮点数(1)定点数

①定义

定点数就是表示数据时小数点的位置固定不变。小数点的位置通常有两种约定方式:定点整数(纯整数,小数点在最低有效数值位之后)和定点小数(纯小数,小数点在最高有效数值位之前)。

②表示范围

设机器字长为n,各种码制表示的带符号数的范围如表1-3所示。表1-3 机器字长为n时各种码制表示的带符号数的范围码制定点整数定点小数原码~~反码~~补码-~-1~移码-~-1~n

当机器字长为n时,定点数的补码和移码可表示2个数,而其原n码和反码只能表示2-1个数(0表示占用了两个编码),因此,定点数所能表示的数值范围比较小,运算中很容易因结果超出范围而溢出。(2)浮点数

①定义

浮点数是小数点位置不固定的数,它能表示更大范围的数。

②表示法

一个含小数点的二进制数N可以表示为更一般的形式:EN=2×F

其中E称为阶码,F为尾数,这种表示数的方法称为浮点表示法。

在浮点表示法中,阶码通常为带符号的纯整数,尾数为带符号的纯小数。浮点数的表示格式如下:

③书写原则

浮点数所能表示的数值范围主要由阶码决定,所表示数值的精度则由尾数决定。若不对浮点数的表示作出明确规定,同一个浮点数的表示就不是唯一的。为了提高数据的表示精度,当尾数的值不为0时,规定尾数域的最高有效位应为1,这称为浮点数的规格化表示。否则修改阶码同时左右移动小数点的位置,使其变为规格化数的形式。

规格化就是将尾数的绝对值限定在区间[0.5,1)。

a.若尾数F≥0,则其规格化的尾数形式为F=01×××…×,其中×可为0,也可为1,即将尾数F的范围限定在区间[0.5,1)。

b.若尾数F<0,则其规格化的尾数形式为F=10×××…×,其中×可为0,也可为1,即将尾数F的范围限定在区间(-1,-0.5]。(3)工业标准IEEE 754

IEEE 754是由IEEE制定是有关浮点数的工业标准,被广泛采用。该指标的表达形式如下:SPM

其中,S为数的符号位,为0时表示正数,为1时表示负数;P为指数(阶码),用移码表示(偏移值为-1,P为阶码的位数);M为尾数,用原码表示。对于阶码为0或255的情况,IEEE 754标准有特别的规定:若P为0且M为0,则表示真值±0(正负号和数符位有关)。如果P=255并且M是0,则这个数的真值为±∞(与符号位有关);如果P=255并且M不是0,则这不是一个数。目前,计算机中主要使用三种形式的IEEE 754浮点数,如表1-4所示。表1-4 三种形式的IEEE 754浮点数格式单精度浮点双精度浮点扩充精度浮点参数数数数浮点数字长326480尾数长度235264111符号位长度阶码长度81115指数偏移量+127+1023+16383-308-4932可表示的实数范~~1010-3838~10103084932围1010

在IEEE 754标准中,对于单精度浮点数和双精度浮点数,约定小数点左边隐含有一位,通常这位数就是1,因此尾数为1.××…×。【例1.7】利用IEEE 754标准将数176.0625表示为单精度浮点数。

解:首先将该十进制数转换成二进制数,即(176.0625)=(10110000.0001),其次对二进制数进行规格化处理,即102710110000.0001=1◇01100000001×2。这就保证了最高位为1,而且小数点应当在◇位置上,将最高位去掉并扩展为单精度浮点数所规定的23位尾数,得到01100000001000000000000。

然后求阶码,上述表示中指数为7,用移码表示为10000110(偏移量是127,因此偏移后的指数值为7+127=134)。

最后,可得到(176.0625)的单精度浮点数表示形式:1001000011001100000001000000000000

5.十进制数与字符的编码表示(1)字符编码的定义

数值、文字和英文字母等都被认为是字符,任何字符进计算机时,都必须转换成二进制表示形式,称为字符编码。(2)字符编码的方法

二-十进制编码(BCD编码):用4位二进制代码表示一位十进制4数。因为2=16,而十进制数只有0~9这10个不同的数符,故有多种BCD编码。(3)BCD码的分类

①有权码

应用最多的有权码是8421码,即4个二进制位的权从高到低分别为8、4、2和1。

②无权码

无权码中常用余3码和格雷码。余3码是在8421码的基础上,把每个数的代码加上0011后构成的。格雷码的编码规则是相邻的两个代码之间只有1位不同。

常用的8421码、余3码、格雷码与十进制数的对应关系如表1-5所示。表1-5 8421码、余3码、格雷码与十进制数的对应关系十进制数8421码余3码格雷码0000000110000100010100000120010010100113001101100010401000111011050101100011106011010011010701111010100081000101111009100111000100

6.ASCII码

基本的ASCII码采用7个二进制位,即ddddddd对字符进行6543210编码:低4位组dddd用作行编码,高3位组ddd用作列编码。基3210654本的ASCII字符代码表如表1-6所示。表1-6 7位ASCII代码表ddd位dd位(高3位)dd32106540110101111000001011(低4位)00101、0000NULDLESP0@Ppa0001SOHDC1!1AQqb0010STXDC2"2BRrC0011ETXDC3#3CSsd0100EOTDC4$4DTte0101ENQNAK%5EUuf0110ACKSYN&6FVvg0111BELETB,7GWwh1000BSCAN(8HXxi1001HTEM)9IYyj1010LFSUB*:JZzk1011VTESC+;K[{l1100FFFS'< L\︱m1101CRGS-=M]}n1110SORS.> N↑~

7.汉字编码

在计算机中处理汉字,必须先将汉字代码化,即对汉字进行编码。汉字处理包括汉字的编码输入、汉字的存储和汉字的输出等环节。(1)输入码

中文的字数繁多,字形复杂,字音多变,常用汉字就有7000个左右。为了能直接使用西文标准键盘输汉字,必须为汉字设计相应的编码方法,汉字的输码主要分为三类:

①数字编码

数字编码就是用数字串代表一个汉字的输,常用的是国标区位码。

②拼音码

拼音码是以汉语读音为基础的输方法。由于汉字同音字太多,输重码率很高,因此,按拼音输后还必须进行同音字选择,会影响输速度。

③字形编码

字形编码是以汉字的形状确定的编码。汉字总数虽多,但都是由一笔一划组成,全部汉字的部件和笔划是有限的。因此,把汉字的笔划部件用字母或数字进行编码,按笔划书写的顺序依次输,就能表示一个汉字,五笔字型、表形码等便是这种编码法。(2)内部码

汉字内部码(简称汉字内码)是汉字在设备和信息处理系统内部存储、处理、传输汉字用的代码。

为了统一地表示世界各国的文字,国际标准化组织1993年公布了“通用多八位编码字符集”国际标准ISO/IEC10646,简称UCS(Universal Code Set)。该标准是用4个8位码(4个字节)来表示每个字符,并相应地指定组、平面、行和字位。

①组:用一个8位二进制来编码组,最高位不用,剩下7位,能表示128个组。

②平面:用一个8位二进制来编码平面,能表示256个平面。

③行:用一个8位二进制来编码行,能表示256个行。

④字位:用一个8位二进制来编码字位,能表示256个字位。

一个字符就被安排在这个编码空间的一个字位上。4个8位码32位足以包容世界上所有的字符,同时也符合现代处理系统的体系结构。(3)字形码

汉字字形码是表示汉字字形的字模数据,通常用点阵、矢量函数等方式表示。

①用点阵表示字形时,汉字字形码指的就是这个汉字字形点阵的

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载