软考程序员要看哪些书?

软考程序员要看哪些书?,第1张

初级程序员考试:考试科目1:计算机硬软件基础知识

1. 计算机科学基础

1.1 数制及其转换

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

1.2 数据的表示

数的表示(原码、反码、补码表示,整数和实数的机内表示方法,精度和溢出)

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

校验方法和校验码(奇偶校验码、海明校验码)

1.3 算术运算和逻辑运算

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

逻辑代数的基本运算和逻辑表达式的化简

1.4 数学应用

常用数值计算(矩阵、方程的近似求解、插值)

排列组合、应用统计(数据的统计分析)

1.5 常用数据结构

数组(表态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树)、图的定义、存储和 *** 作

1.6 常用算法

常用的排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法

算法与数据结构的关系,算法效率,算法设计,算法描述(流程图、伪代码、决策表)

2. 计算机系统基础知识

2.1 硬件基础知识

2.1.1 计算机系统的组成,硬件系统、软件系统及层次结构

2.1.2 计算机类型和特点

微机、工作站、服务器、大型计算机、巨型计算机

2.1.3 中央处理器CPU

运算器和控制器的组成,常用的寄存器、指令系统、寻址方式、指令执行控制、处理机性能

2.1.4 主存和辅存

存储器系统

存储介质(半导体、硬盘、光盘、闪存、软盘、磁带等)

主存储器的组成、性能及基本原理

Cache的概念、虚拟存储的概念

辅存设备的类型、特性、性能和容量计算

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

I/O接口(总线、DMA、通道、SCSI、并行口、RS232C、USB、IEEE1394)

I/O设备的类型和特性(键盘、鼠标、显示器、打印机、扫描仪、摄像头,以及各种辅存设备)

I/O设备控制方式(中断控制、DMA)

通信设备的类型和特性(Modem、集线器、交换机、中继器、路由器、网桥、网关)及其连接方法和连接介质(串行连接、并行连接,传输介质的类型和特性)

2.2 软件基础知识

2.2.1 *** 作系统基础知识

*** 作系统的类型和功能

*** 作系统的内核(中断控制)和进程概念

处理机管理、存储管理、设备管理、文件管理、作业管理

汉字处理

图形用户界面及其 *** 作方法

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

汇编、编译、解释系统的基础知识

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

过程(函数)调用

2.3 网络基础知识

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

网络体系结构与协议(OSI/RM,TCP/IP)

常用网络设备与网络通信设备,网络 *** 作系统基础知识和使用

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 功能划分和确定结构

数据流图、结构图

1.3 物理数据设计

确定数据组织方式、存储介质,设计记录格式和处理方式

1.4 详细输入输出设计

界面设计、报表设计

1.5 内部设计文档

对程序接口、程序功能、人机界面、输入输出、测试计划的描述

1.6 内部设计文档

2. 程序设计

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

2.2 编写程序设计文档

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

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

2.3 程序设计评审

3. 程序实现

3.1 编程

编程方法和标准

程序设计语言的使用

人工检查

程序文档化

3.2 程序测试

准备测试环境和测试工具

准备测试数据

写出测试报告

4.程序设计语言(C语言为必选,其他语言可以任选一种)

4.1 C程序设计语言(ANSI C标准)

程序结构,语法,数据类型说明,可执行语句,函数调用,标准库函数,指针

4.2 C++程序设计语言(ANSI C++标准)

C++和面向对象程序设计,语法和程序结构,类、成员、构造函数、析构函数、模板、继承、多态

4.3 Java程序设计(Java 2)

Java和面向对象程序设计

语言机制(程序结构和语法,类、成员、构造函数、析构函数、继承、接口)

4.4 Visual Basic程序设计(Visual Basic 6.0)

用户界面设计

程序结构和语法

文件系统对象

访问数据库

目前要找工作之前,最好先围绕着两点去短期内有一个提高,以及为长期学习作准备:

1、考适合自己的证

2、准备投入到某个领域

证书建议考 国考里的3-4级计算机证书 以及软考里的 数据库工程师(中级证书)

当你能自如的运用数据结构和算法、TCP/IP原理、编译原理、 *** 作系统原理、数据库以及Win32 API 调用、构造自己的C++库(网络库、数学库、测试库、图形库)以及各种引擎,出去毕业应该能在短短半年时间里薪水至少有7000以上甚至上万吧(其实毕业生出去95%以上可能没达到这个水平)。

其实也不用说太多,你问你自己几个问题,如果你都能做到或者学习半到2个月就能做到,那肯定是达标了:

1、我能用C++做出2D的RPG游戏吗?(C++与api或框架的结合运用能力)

2、我能用C++通过3种以上的方法写出四则运算表达式分析器吗?(C++与数据结构、算法的结合能力)

3、我能用C++写出类似STL的简化版的库吗?(库与框架设计能力与C++高级语法运用能力的结合)

补充:

①、你能这么问,说明你知道编程能力对IT行业高薪工作的重要性是至关重要的。

②、你的目的性已较强(知道要深入下去),但是你也想有更加明确的目标,我可以给你讲一下怎么自己去寻找目标和路线以及怎样学习。

③、计算机专业领域一共有几个大方向,十几个分支方向,而每个分支方向又有几十个小方向,每一个方向的深入学习与熟练到一定火候都不是一朝一夕,互相之间也不是完全没联系的,但是你现在就应该选择一个大方向并在其中的一个小方向内深入(为什么要这么早就选择具体的分支方向?后面说)。

④、这里列出计算机的几个大方向(非编程开发类的我就不说了):

基本方向:

1、单片机、嵌入式方向

2、网络编程:涉及到服务器程序、客户端开发、脚本设计等。

3、系统编程:基础API开发、桌面开发、系统程序开发、服务程序

4、图形学:3D、2D、图像识别、人脸识别

5、音频:语音识别、音频解码、音频软件

6、编译原理:编译器设计、脚本解释器、虚拟机、非自然语言翻译系统

7、应用层开发:利用高层语言去开发表层应用

8、安全:反工程、病毒、反病毒、木马、反木马、软件破解、软件加壳

附加方向:

8、人工智能:遗传算法、神经网络、灰色系统等等

9、游戏设计:各种游戏引擎设计以及业务逻辑设计等

⑤、基本方向是你一定要选的,附加方向只是基于基本方向的一些锦上添花,但是不管你怎么选,最开始某些东西一定要深入而不是只是懂就够(当然你对自己要求似乎不会很低),我把这个列出来:

数据结构:下面其他理论的基础。

*** 作系统原理:理解 *** 作系统的架构和细节,你才能对以后关于多线程、文件管理、内存管理、指令优先级等有一个正确理解和运用。

编译原理:能够升华你对计算机编程语言的理解,对以后出现的各种编译、解释、兼容、移植、优化、并发与并行算法等有一个深入理解。

数据库系统原理:这个是进入公司都要会的,也是大型软件开发的基础。

软件工程:这个是你能够在经验不足还能保证大项目正常完成的理论基础。

网络技术:这个是必须学的,因为目前几乎没有一款装几率很高的软件或者平台跟网络无关。

数学的话,主要是:离散数学、线性代数、高等数学、计算机图形学、概率论

以上几个基础就是你成为一个融汇各个主要分支牛人必须学的(当然不是指理论,而是理论+实践编码能力)

⑥以上都是大的基础,要一一攻破并深入学习,虽然网络时代计算机专业知识爆炸式的增长,但是以上几个基础掌握后,会发现,以后的什么新的理论和技术都是基于这些大基础,你就很容易理解了。

⑦我为什么开头不讲你要具体学什么怎么顺序学呢?因为那些技术你要掌握的话,根本可以自己解决,但是如果你由于兴趣,沉迷于一些自己可见的小范围技术的话,那么毕业后虽然也能找到不错的工作,薪水也可能高,但是不能成为一个大牛。

现在才开始讲学习顺序,虽然你说不要推荐书,不过我还是要用书来做顺序。

C语言是可以写很多核心和高级的东西,而不只是小东西,但是从你代码来看,居然用到了 goto,我不是说你那些程序用到GOTO有什么不好,而是一定要避免用GOTO,goto是错误之源,如果你有什么内容非要用到goto才能写到,说明你的编码技巧还有不少提高空间。

你的学习顺序应该是:

C:做一个超级马里奥出来,并能够读取文本脚本来更新关卡。

C++:写一个2D图形引擎,封装掉细节,实现面向对象设计和可复用设计,并且用到《设计模式》中提到的一些设计模式,这样才能算对C++有一个很好的掌握。

MFC:MFC技术虽然近期已经冷下来了,但是你能熟练掌握它,才能证明你的C++OO技术够纯熟,严格证明你掌握了MFC很简单,你只要用MFC做出一个杀毒引擎就差不多了。推荐的书有《深入浅出MFC》。

《Windows程序设计》:和MFC不同的是,用的是windows核心SDK,也就是API,这本书学完后,你才能从 *** 作系统层面上算掌握了win32 平台下的机理(其实win64和win32大部分机理类似)。

C#:C#里集合了当代和前沿计算机科学里最先进的一些语法(虽然执行效率一直被人质疑),但是你学完C#并深入后,至少能够算是对计算机语言有一个更加深刻的理解了。如何证明你C#学的不错了?也很简单,再次写一个随便什么游戏,比如俄罗斯方块。如果更加证明自己呢?用它写一个P2P网络对战游戏。

(如果你注意的话,会发现我说的学习顺序都是沿着语言和某些技术的,为什么呢?因为这些语言和技术涉及到特定的领域技术和计算机理论思想,比如【真正】学完了C#的话,就不单指学完了C#,而是把多种语言范式都学习了一遍,以及现代的程序开发思维(因为里面用到了很多让你一劳永逸的技术))

以上5个步骤都是基础大步骤,要解决的话要没1-2年应该不够。

与此同时,要尽快选出文中你感兴趣的方向作为3-5年的长期方向,不要担心过早选择分支方向会有什么损失,因为计算机很多分支是相通的,只有你把分支方向深入进去,才能真正理解很多理论的实践意义。并且一旦你在某个分支领域形成了较强的优势(比如,到公司里只有你这方面最强),那么你就是稀缺人才。

关于大方向的步骤就不说了,你主要就是要把我说的这几个基础步骤先解决,同时平时要注重大方向理论结合实际去编码和开发。

自学时间长短关键在于个人自律程度和对兴趣的爱好程度,如果特别喜欢编程,差不多6个月左右吧。

我觉得找一本入门书籍,把基础语法弄清楚,然后跟着书中的范例去敲代码,这个时间段不要太长,一般把握在一个月左右即可。过完第一阶段,自己动手做项目,大小都可以,主要是自己要弄明白怎么去搭建程序结构,怎么实现自己的想法,不明白的地方尽量自己思考,最终把程序做起来。

接下来就可以去找工作了,我觉得第一份工作不要太在意工资,只要能进入项目开发团队,这才是真正历练的开始,在公司里做个一年最有,掌握了开发技巧,这时候可以考虑跳槽换个薪资满意的工作了。

划重点:坚持,特别是遇到困难的时候,熬过去自己就离成功不远了。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11220548.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-14
下一篇2023-05-14

发表评论

登录后才能评论

评论列表(0条)

    保存