程序设计考试大纲(高级程序员级)
一、考试说明
1.考试要求:
(1)熟练掌握面向对象编程技术,用C/C++语言熟练编制程序;
(2)了解CASL汇编语言的程序编制;
(3)掌握软件设计的方法和技术;
(4)掌握数据结构、程序语言、 *** 作系统、数据库和软件工程的基础知识;
(5)了解多媒体和网络的基础知识;
(6)掌握计算机体系结构和主要部件的基础知识。
2.通过本级水平考试的合格人员能按照软件需求规格说明书进行软件设计和编制程序,具有相当于工程师的实际工作能力和业务水平。
3.本级水平考试范围包括两个模块:
模块1——软件设计和程序编制能力(考试时间为150分钟);
模块2——基础知识(高级程序员级)(考试时间为120分钟)。
题型为:单项选择题+多项选择题+综合题。
二、考试范围
模块1:软件设计和程序编制能力”
1.1软件设计能力
1.1.1简单计算机应用系统的需求分析
●流行的需求分析方法初步
●数据流图的设计及改进
1.1.2软件界面设计
●输入输出数据文件的设计
●用户界面的设计
1.1.3概要设计
●软件设计准则
●模块划分与调用
●常用的概要设计方法
1.1.4详细设计
满足指走功能的各种处理过程的算法设计、评价和改进
1.1.5数据库/数据结构的设计
根据不同的要求进行数据库/数据结构的设计
1.1.6软件测试
●测试方法
●测试用例的设计(白盒测试)
●测试的静态和动态分析
1.2程序编制能力
1.2.1按照软件设计说明书,能熟练使用下列程序语言编制程序
C(美国标准)/C++
1.2.2能使用CASL汇编语言(文本见附录)编制程序
1.2.3面向对象编程技术
1.2.4理解给定程序的功能,能发现程序中的错误或不足并能纠正或改进
1.2.5具有良好的程序编制风络
1.2.6算法的设计和分析
模块2:基础知识(高级程序员级)
2.1软件基础知识
2.1.1数据结构基础
●数组、记录、列表(list)、队列、栈(stack)、堆(heap)、树、二叉树和图的定义、存储和 *** 作
●序列、集合等的定义、存储和 *** 作
2.1.2程序语言基础知识
●汇编、编译、解释系统的基本原理
●程序语言的数据类型
●程序语言的控制结构
●程序语言的种类、特点及适用范围
2.1.3 *** 作系统基础知识
● *** 作系统的类型和功能
● *** 作系统的层次结构和进程概念
●作业、处理机、存储、文件和设备等管理的原理和方法
2.1.4软件工程基础知识
●软件生命周期各阶段的任务
●结构化分析和设计方法
●面向对象的分析与设计
●软件开发工具与环境的基础知识
●软件质量保证的基础知识
2.1.5数据库基础知识
●数据库模型
●关系数据库的基础知识
●数据库系统的结构
●SQL的使用
●常用数据库管理系统的知识
2.1.6多媒体基础知识
●多媒体基本概念
●常用图象文件
●简单图形的计算机图示
2.2硬件基础知识
2.2.1计算机的体系结构和主要部件
●机内代码及运算
●中央处理器CPU、存储器和输入/输出设备
●总线结构、指令流和数据流
2.2.2存储器系统
●各类存储器的功能、特性和使用
●虚拟存储器
●高速缓冲存储器和多级存储器
2.2.3安全性、可靠性与系统性能评价初步
●数据安全与保密
●诊断与容错
●系统可靠性评价和系统性能评价方法
2 2.4计算机体系结构的其它基础知识
●流水线 *** 作
●精简指令系统计算机
●多处理机系统
●并行处理
2.3网络基础知识
2.3.1网络的功能、分类与组成
2.3.2网络协议与标准
2.3 3网络结构与通信
2.3.4网络的安全性
2.3.5Client-Server结构
2.3 6Internet和Intranet初步
2.3.7网络管理初步
记得有很长的一段时间我都被这本《算法导论》所支配,本书着重将严谨性和全面性融为一体,深入讨论各种算法,并将这些令人捉摸不透的高阶算法翻译为各个阶层都能理解的语言。全书各章自成体系,可以作为独立的学习单元,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度的同时体现了数学的严谨性。
这本书的作者是托马斯•科尔曼(Thomas H Cormen),是达特茅斯学院计算机科学系教授、系主任。目前的研究兴趣包括:算法工程、并行计算、具有高延迟的加速计算。他分别于1993年、1986年获得麻省理工学院电子工程和计算机科学博士、硕士学位,师从Charles E Leiserson教授。由于他在计算机教育领域的突出贡献,Cormen教授荣获2009年ACM杰出教员奖。
作为一本严谨的科学研究入门教材,理论的证明充斥了这本书的很大一部分。每一章节的很多题目,都是证明某个引理之类的。
还有一本就是这本《C++ Primer》,这本久负盛名的 C++经典教程,经过八年的历练,这次有了一个史无前例的更新。除了令全球无数程序员从中受益,这本书更是基于全新的 C++11标准进行了全面而彻底的内容更新。非常难能可贵的是,《C++ Primer 中文版(第5版)》所有示例均全部采用 C++11 标准改写,这在经典升级版中极其罕见——充分体现了 C++ 语言的重大进展及其全面实践。书中丰富的教学辅助内容、醒目的知识点提示,以及精心组织的编程示范,让这本书在 C++ 领域的权威地位更加不可动摇。
这两本书无论是初学者入门,或是中、高级程序员提升,本书均为不容置疑的首选。
程序员的岗位需求很多,例如大型网络公司、软件开发公司等等都需要程序员。
程序员需要学习:
1、掌握数据及其转换、数据的机内表示、算术和逻辑运算,以及相关的应用数学基础知识;
2、理解计算机的组成以及各主要部件的性能指标;
3、掌握 *** 作系统、程序设计语言的基础知识;
4、熟练掌握计算机常用办公软件的基本 *** 作方法;
5、熟练掌握基本数据结构和常用算法;
6、熟练掌握C程序设计语言,以及C++、Java、Visual Basic中的一种程序设计语言;
7、熟悉数据库、网络和多媒体的基础知识;
8、掌握软件工程的基础知识,了解软件过程基本知识、软件开发项目管理的常识;
9、了解常用信息技术标准、安全性,以及有关法律、法规的基本知识;
10、了解信息化、计算机应用的基础知识;
11、正确阅读和理解计算机领域的简单英文资料。
程序员必备技能:
1、熟练开发工具
做为一名程序员至少熟练掌握两到三种开发工具的使用,这是程序员的立身之本,其中C/C++和JAVA是重点推荐的开发工具,C/C++以其高效率和高度的灵活性成为开发工具中的利器,很多系统级的软件还是用C/C++编写。
而JAVA的跨平台和与WEB很好的结合是JAVA的优势所在,而JAVA即其相关的技术集JAVAOne很可能会成为未来的主流开发工具之一。
其次,能掌握一种简便的可视化开发工具,如VB,PowerBuilder,Delphi,CBuilder,则更好,这些开发工具减小了开发难度,并能够强化程序员对象模型的概念。
另外,需要掌握基本的脚本语言,如shell,perl等,至少能读懂这些脚本代码。
2、熟知数据库
作为程序员,他们自然有自己的理由:很多应用程序都是以数据库的数据为中心,而数据库的产品也有不少,其中关系型数据库仍是主流形式,所以程序员至少熟练掌握一两种数据库,对关系型数据库的关键元素要非常清楚,要熟练掌握SQL的基本语法。
虽然很多数据库产品提供了可视化的数据库管理工具,但SQL是基础,是通用的数据库 *** 作方法。如果没有机会接触商业数据库系统,可以使用免费的数据库产品是一个不错的选择,如mySQL,Postgres等。
3、了解 *** 作系统
当前主流的 *** 作系统是Windows,Linux/Unix,熟练地使用这些 *** 作系统是必须的,但只有这些还远远不够。
要想成为一个真正的编程高手,需要深入了解 *** 作系统,了解它的内存管理机制、进程/线程调度、信号、内核对象、系统调用、协议栈实现等。
Linux作为开发源码的 *** 作系统,是一个很好的学习平台,Linux几乎具备了所有现代 *** 作系统的特征。虽然Windows系统的内核实现机制的资料较少,但通过互联网还是能获取不少资料。懂得网络协议TCP/IP。
在互联网如此普及的今天,如果您还没有对互联网的支撑协议TCP/IP协议栈有很好的掌握,就需要迅速补上这一课,网络技术已改变了软件运行的模式。
从最早的客户/服务器结构,到今天的WEBServices,再到未来的网格计算,这一切都离不开以TCP/IP协议栈为基础的网络协议支持,深入掌握TCP/IP协议是非常必要的。
至少,需要了解ISO七层协议模型,IP/UDP/TCP/>
4、明白DCOM/CORBA/XML/WEBServices存在的意义
随着技术的发展,软件与网络的无缝结合是必然趋势,软件系统的位置无关性是未来计算模式的重要特征之一,DCOM/CORBA是当前两大主流的分布计算的中间平台,DCOM是微软COM(组件对象模型)的扩展,而CORBA是OMG支持的规范。
XML/WebServices重要性不言而喻,XML以其结构化的表示方法和超强的表达能力被喻为互联网上的“世界语”,是分布式计算的基石之一。
5、不要将软件工程与CMM分开
大型软件系统的开发中,工程化的开发控制取代个人英雄主义,成为软件系统成功的保证,一个编程高手并不一定是一个优秀的程序员。
一个优秀的程序员是将出色的编程能力和开发技巧同严格的软件工程思想有机结合,编程只是软件生命周期中的其中一环,优秀的程序员应该掌握软件开发各个阶段的基本技能。
如市场分析,可行性分析,需求分析,结构设计,详细设计,软件测试等。
6、需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求。
要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
7、模块化思维能力
作为一个优秀的程序员,他的思想不能局限在当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。
这样做可以使代码能重复利用,减少重复的劳动,也能使系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
就业方向:
1、网络开发
现在网络已经成为世界通讯的一座桥梁,好像Javascript、PHP、Ruby这几类开发语言大部分是用作网络开发方面。
2、企业软件开发
JAVA、C#、VB这几类开发语言都实现了面向对象开发的目标,更多时候用于企业系统的开发。
3、系统软件
C语言、C++、Object-C这些软件更多是用在系统软件开发,嵌入式开发的方面。
当然,这分类不是绝对,像JAVA、C#、VB很多时候也用于动态网站的开发。在很开发项目都会使用集成开发的方式,同一个项目里面使用多种开发语言,各展所长,同步开发。
但所以在刚入门的时候,建议先为自己选择一种合适的开发工具,“专注地投入学习,全力一击”。
扩展资料:
会编程、会计算机语言就能加入互联网发展大潮中,享受数字经济发展的红利,一时间社会上的程序员培训机构都变得格外火爆。
但是现在,专家的数据分析结果告诉你:若想跟上数字经济发展的步伐,光会编程可不行,这个行业现在紧缺高端的、综合型人才。
11月22日下午,清华大学经管学院互联网发展与治理研究中心与领英联合发布《中国经济的数字化转型:人才与就业》,揭示我国数字人才现状与趋势。
报告显示我国数字经济发展面临人才短缺的挑战,但这种短缺主要体现在拥有中高级专业技能数字人才的比例不高,拥有人工智能、智能制造等前沿技术的人才更是少之又少。
与美国、英国、加拿大等国家相比,中国的数字人才储备尚有很大差距。
此外,报告根据对人才需求的数据分析,结果显示我国数字人才的技能需求不再强调单一编程技能,更加看重技术、管理和领导力等综合技能。
2015年,我国从事信息传输、软件和信息技术服务相关工作的人数约350万,但其中中高端人才,特别是前沿技术的数字人才并不多。根据领英中国智库的研究,在人工智能领域,美国的从业者数量在85万人以上,印度15万,英国14万,中国只有5万多人。
报告负责人、清华大学经济管理学院副院长陈煜波教授表示,我国目前在大数据与人工智能领域人才缺口明显。
他解释说,目前中国85%以上的数字人才分布在产品研发类,而深度分析、先进制造、数字营销等职能的人才加起来只有不到5%,存在较大缺口,新兴技术人才和创新型人才培养方面存在滞后和不足。
这份研究报告的基础数据来自领英在中国的3600万个人用户,这些用户毕业于15万多所国内外院校,分布在364万家企业,拥有超过23万项技能。
陈煜波研究团队从中筛选了72万数字人才,多维度提取用户画像并跟踪其职业轨迹,以此预测不同地区的人才流向、雇佣率、受雇主欢迎的技能等人才趋势层面的信息。
陈煜波说,根据数据分析结果,整体来看,虽然编程技能和数据分析技能需求占据主导,然而随着数字产业走向成熟,企业除了强调编程技能,也逐步更加看重人才的技术、管理和领导力等综合技能。
近年间,项目管理、产品运营等“技术+管理”类技能的需求呈现出明显的上升趋势,懂技术、懂管理的人才被认为是“一将难求”。
领英中国代理总裁曾志恒也提醒,如果你有兴趣向数字职能转型,不能仅仅专注于自己的技术能力,沟通和领导力等软性技能将成为你脱颖而出的关键。
陈煜波希望这些研究结果能为教育行业和政府部门提供借鉴。他说,教育行业可根据职位的供需趋势更好地规划人才培养的方向,政府也可更好地了解人才流动方向、技术缺口等,以此制定有针对性的引才策略。
程序员岗位职责:
1、对项目经理负责,负责软件项目的详细设计、编码和内部测试的组织实施,对小型软件项目兼任系统分析工作,完成分配项目的实施和技术支持工作。
2、协助项目经理和相关人员同客户进行沟通,保持良好的客户关系。
3、参与需求调研、项目可行性分析、技术可行性分析和需求分析。
4、熟悉并熟练掌握交付软件部开发的软件项目的相关软件技术。
5、负责向项目经理及时反馈软件开发中的情况,并根据实际情况提出改进建议。
6、参与软件开发和维护过程中重大技术问题的解决,参与软件首次安装调试、数据割接、用户培训和项目推广。
7、负责相关技术文档的拟订。
8、负责对业务领域内的技术发展动态进行分析研究。
相关书籍:
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数 Top 9的书。
其实除了前9本之外,推荐数前30左右的书籍都算经典,笔者整理编译这个问答贴,同时摘译部分推荐人的评语。
下面就按照各本书的推荐数排列。
1、《代码大全》 史蒂夫·迈克康奈尔
2、《程序员修炼之道》
3、《计算机程序的构造和解释》
4、《算法导论》
5、《重构:改善既有代码的设计》
6、《设计模式》
7、《人月神话》
8、《计算机程序设计艺术》
9、《编译原理》(龙书)
10、《活着》
参考资料:
参考资料:
参考资料:
计算机专业学习的过程中,大家学习了程序语言C/C++、数据结构、数据库、计算机组成原理、 *** 作系统和计算机网络等基础课,但是还有许多经典书籍值得我们一读,阅读这些书籍不但对我们个人能力提升而且对个人应聘找工作都有很大的帮助。下面罗列出一些经典书籍供大家参考。
1 程序语言方面
C语言作为最经典的语言,也是计算机专业最先学习的一门语言。首先推荐几本C语言经典书籍:
《C和指针》
《C缺陷与陷阱》
《C专家编程》
《C语言深度剖析》
Expert C Programming
其中《C专家编程》从C的历史、语言特性、声明、数组指针、链接、运行时内存等问题进行了细致的讲解和深入的分析,全书展示出很多优秀的编码技巧,特别适合有一点C语言基础的人观看。《C语言深度剖析》是国内写的一本书,重点讲解了C语言里的一些晦涩难度的问题。
C++语言经典书籍:
《C++ Primer 5th》
《Effective C++》
《深度探索C++对象模型》
《STL源码解析》
C++ Primer
以上几本是学好C++必读的书籍,《C++ Primer 5th》由浅入深全面的讲解了C++的语法与程序设计,是C++程序员必读的一本书,《深度探索C++对象模型》对C++运行原理作了一个很好的剖析,详细的讲解了对象内存模型以及调用运行的本质,对深入理解C++内部机制来说是一本非常好的书籍。计算机底层书籍:
《编码》
《编译原理》
《汇编语言》
《C++反汇编与逆向分析》
Code
《编码》深度形象的讲解了计算机的原理,看完此书后你会对计算机的工作原理有较深刻的理解,强烈推荐大家看一看。
2 算法、数据结构相关
《算法导论》
《编程珠玑》
《编程之美》
《算法艺术与信息学竞赛》
《算法导论》是算法领域的圣经,这本书很厚并且理论知识较强,很难从头到尾认真的看一遍,大家可以选择性地看,当然能完整的看完就更好了。《编程珠玑》和《编程之美》这两本书也非常经典,里面注重的是解决问题的思路,看的时候要认真思考里面的问题。最后一本是关于ACM方面的书,如果自己能力足够强的话,看看这本书也还是挺不错的
LeetCode 中国
当然,这里不得不向大家推荐的就是 LeetCode 在线技术平台了,专注于做算法、学习、求职和计算机科学相关的内容,被誉为计算机界的刷题神器。目前,LeetCode 也已经进入中国,有自己的中文网站( leetcode-cn ),不仅提供了 LeetCode 的全部服务,还有中英文题目对照和中文社区,总算可以愉快的刷题了。
3 *** 作系统相关
《深入理解 *** 作系统》
《Linux内核完全注释》
《自己动手写 *** 作系统》
《Windows内核原理与实现》
Linux内核完全注释
《Linux内核完全注释》一书选取了代码量不超过2万行的linux 011内核,对内核代码的每一个细节都作出了详细的讲解,麻雀虽小,五脏俱全,看完这本书对linux *** 作原理会有一个很深的理解,是国内一本非常优秀的书。
4 软件开发、设计相关
《Head First 设计模式》
《设计模式-可复用面向对象软件的基础》
《重构与模式》
《代码大全》
《设计模式》(GOF)
Head First - 设计模式
设计模式在工作中重要性尤其突出,良好的软件设计对于后期的维护、扩展有着重要的作用,对于大型软件,首先要做的就是设计好整个软件架构,这也是整个软件开发过程中最难的一个环节。
5 数据库
《数据库系统概念》
《数据库系统实现》
《MySQL技术内幕:sql编程》
《MySQL技术内幕: InnoDB存储引擎》
以上就是关于高级程序员必读书全部的内容,包括:高级程序员必读书、程序员必备的书籍,有什么可推荐的吗、程序员需要学些什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)