上午试题共涉及:系统结构、操作系统原理 、编译原理、关系型数据库原理、软件工程、数据结构、多媒体技术、 网络 基础。其中每个部分如果展开都是一本本科阶段的教材,对于非科班出身的朋友来说自然无法全部通读,考试指定教材成了我等的Bible。当时读书看到感觉重要的地方就用笔划出,现在回想起来完全没必要。软件考试上午试题可能出现在任何我们觉得不重要的地方,怎么办?简而言之,不划任何的所谓重点难点,任何教材上的内容都是重点和难点,都是必须掌握的。上午我考了66分,或许您认为这是死记的结果,的确如此。但是在理解的基础上死记这些,使得我们的基础将要优于他人,并且必将使得我们从中受益。
在复习备考阶段,你我喜欢coding之人常常自问“这东西有用吗?”,个人感觉此类问题本身就是危险的信号,程序设计实践中处处涉及到基础的知识。不知道瀑布模型,写完代码然后写文档,文档自然不能发挥应该有的作用。不知道信号量,设计的程序永远跑一个进程一个线程。所以在下感觉先搞清是非利弊,然后投入复习,用良好的心态去面对,那我们已经成功了大半(就上午考试而言)。
分析以往考题,道是可以发现一些规律上的东西。首先,不要将自己陷入泥潭。为了准备操作系统原理,绝对没有必要去读什么源代码分析之类的书,准备编译原理,知道一个大概概念便能通过。高程考试上午所要求的是面,而非深度。当然,这话只适用于考试,或者说适用于你我非科班学生应付考试。
历年考试改如何利用?做两三遍,然后认真的看讲解,没什么比他更加有用的了!你会发现考场上那么多认识的朋友……
下午试题
下午试题包括软件分析、Casl汇编、数据结构与算法设计。
软件分析这部分内容比较头痛,关键在于是主观的设计,为什么要定一个标准去限定软件设计的思维,难道上帝已经告诉我们某某软件应该如何去设计?但是没有办法,这就是考试,承认它、熟悉它、然后迎合它、考试完成之后永远忘记它。这部分内容在下看来完全没有什么方法可言,个人对软件的理解决定了一切。所涉及到的排序关键字、错误分析等等只要看看历年考题便能完全了解,但是要讲那10个空格全部填对,估计除了天赋和经验没有什么能帮助我们了。
Casl的准备应该是高程考试中的一个盲点,任何人以前都不可能接触过它,因为世界上根本没有Comet计算机。既然是这样的一个公平的环境,自然可以放心的去做,就看谁的勤奋。可以参考的资料主要是复旦大学王世业老师的《Casl汇编语言程序设计》一书。先搞清楚所有的寻址方式,包括指针的指针的含义,然后是寄存器。只要学习过x86汇编或者其他汇编,您会发现Casl很简单。在参考本部分考题的时候我建议主要看95年以后的历年考题,其中的难度和现在相近,95年之前的则相对较难。同时,如果您疑惑何处可以得到上述书籍中提到的Casl运行环境http://www.nilei.net可以找到一个我设计的Casl解释器。经过超过1000名用户的使用,相信已经能满足您的需要。
算法与数据结构占下午的30分,即使前面的主观部分不能得高分,Casl什么也不懂,只要保证这部分基本拿满分就可以顺利通过考试。我认为首先的因素是天赋,聪明的人能很快熟悉这些内容。相信准备高程考试的朋友多少有点小聪明,然后要做的便是去熟悉与实践,这里的实践我依旧强调练习实考试题。不妨说个类似笑话的例子来说明实考试题练习的重要性,在准备中程的时候我做了中程的所有题目,等到复习高程的时候在那些涉及数据结构的部分即使不用看题目要求、不看程序的其余部分,也能将所要填写的空格全部填写正确,有点像GRE考试中新东方学校传授的那套?的确如此,既然目标是通过考试,那就用一切合法的可行的方法,束缚自己只有给自己带来可能重考的麻烦。
如果您问我笼统的来讲什么是关键,我会毫不犹豫的告诉你:做历年题。
FAQ
1)问:我需要将每个考纲上的知识点都掌握吗?
答:不需要,但是如果你不这么做,最好能将掌握的东西变成熟练掌握。比如编译原理 ,可以完全不看。当然,我不认为这是一个良好的学习方法。
2)问:上午重要还是下午重要?
答:决大多数无法通过考试的情况都是下午没有通过(也就是80%*90%),如果再让我准备一次这样的考试,我将先准备下午部分,考试前用一个月突击上午部分。
3)问:准备这个考试多少时间足够?
答:因人而异。我先前一些内容完全没有接触过,需要自学,我用了3个半月时间准备考试,每天至少3-4小时。
考试成绩出来了,上午57下午65,基本在我的预料之中,但心里仍然有些起伏,毕竟三个多月来的努力奋斗结出了应有的果实。我是学计算机科学和技术专业的,大学三年多也是混混,专业课随便学了点,考试也就糊弄过去了,大四下半学期开学初,听说有个软设证书找工作还能派上点用场,能多块敲门砖,我寻思报考费也不贵,一百多块,那就来试试吧。在备考过程中,我有一些感想,写出来跟各位备考的朋友分享。
软设必经之路一:要熟悉历年试题。我直接接触软考是从软设的历年试题集开始,记得我做了一遍2005年11月的软设真题上午题,满怀信心地对答案,发现我才41分,又对了一遍,还是41,这确实让我吃惊不小-----软设并没有我想像中的那么容易,即便我是学计算机的。联系到大学三年多我们学专业课的情景:考试的时候也就是随便看看书,从老师或者师兄师姐那里搞几道题,应付一下就完事;为了照顾大多数同学都能过关,考的大多是些概念皮毛,没啥真的技术含量;自己也没认真去钻研,很多知识点只是听说而已,要是正儿巴劲地硬拼起来,那是说这这不懂、说那那不明白。这一做历年试题让我自己知道到底有几斤几两了。于是在以后的复习过程中,始终没离开历年试题,因为历年试题很多知识点是反复考,抓住了历年试题就抓住了重点。
软设必经之路二:备考下午编程题必须上机调试实践。我几乎把历年试题的下午C语言编程题、C++编程题(根据考纲,下午题中有几道分别是VB、C++、JAVA,任选一道作答,我选C++)都用VC调试了一边,没有主函数的程序段我自己动手编写主函数进行调试。一调试问题出一大堆。幸亏我是学计算机的,以前自学过VC,有一定的调试经验,调试起来还算顺利,不过有些程序调试起来十分费劲,因为你得结合题目搞清楚出题者的意图,然后搞清楚各个参数、变量的意义,真是十分麻烦,比如2003年下午试题五,关于哈夫曼编码的问题,我就调试了整整一天,才完全搞清楚程序的来龙去脉。对于下午C++题来说,考的都是比较简单的基础知识,我们专业课都了解,调试起来不那么麻烦。后来我发现光以来历年试题中的编程题来调试还不够,于是我选择性地将数据结构、C语言程序设计教材里的一些程序也调试了一番,对以前学过的这些知识点有了更深层次的认识。上机调试是很好的锻炼,光看书很多问题都隐藏起来了,自以为是明白了,一调试才发现自己想的太简单了,就会有一大堆意料之外的问题出现,当你将这些问题解决之后才觉得之前的那种狂妄自大是多么幼稚。随便提一下,我们学校用的数据结构的教材是严蔚敏的那本书,C语言则用的是谭浩强那本书,老严的这本书上有些程序还得修改成标准C语言才可以调试。
软设必经之路三:软件工程的数据流图和UML相关知识一定要学好。近几年来,每次考试,下午题中必有一道是数据流图或者UML,而今年却是数据流图和UML一起考了,可见其重要性!为了搞透知识点,我不仅将历年相关题做了个遍,还拿来那本尘封已久了软件工程教材认真看起来,学得比以前“混混,考试能过就行”要充实得多!记得考场上一看到数据流图和UML两道题,我心里就偷笑-----这还不简单?老子已经蓄谋良久了,哈哈...
软设必经之路四:要注意跟一同备考的兄弟们交流。这就涉及到交流平台的问题,我一般在希赛社区的资格水平考试栏目跟大家交流,我学习过程中也遇到过不少棘手的问题,我就在上面发帖子,有的高手会很热情帮助解答或提供相关资料。在那里你也可以问问其他同行复习得如何,相互鼓励,氛围不错。
考完了一身轻松,预计自己基本能过,只是超越分数线多少分的问题,我把自己认为的软设必经的四条路写出来,供后来者参考。
我的计算机学习过程是与考试同步进行的,参加了一系列大大小小的计算机考试有十余次,其中有成功,也有失败,最大的收获是不怕考试。从初、中级职称计算机考试开始,参加过等级考试的二、三、四级考试,还参加过软考的网络程序员、程序员、软件设计师、系统分析师考试,还考过计算机专业在职硕士、统招硕士研究生入学考试及计算机专业自学科目的考试等。在考试的同时,也尝试着把所学知识应用于实际工作,设计过一些小软件,初步实现了学以致用。
计算机学习要经历一个从理论---实践---理论的认识不断深化的过程,下面谈谈本人通过软件设计师考试的一些体会。
软件设计师考试大纲中计算机与软件工程知识
(1)首先基础知识中涉及到计算机硬件的内容和多媒体知识以及语言知识问题,这是一个量的积累,最后实现质的飞跃。
(2)数据结构部分,这是首次学习线性表、数组、广义表、树、图、查找算法和排序及算法的分析等。这部分的学习,要吃透理论、适当加大习题量、最好能结合上机,深化理解。数据结构好比是武功中的内功,数据结构学习用了我一至二年的时间,以自学教材为主。吃透理论就是反复读书,以一本书为主(目前清华大学严蔚敏老师的数据结构是一个经典),可能的话,再搜罗其他版本的教程,这样可以互相印证,就同一问题,多看几本书这一做法,也可推广到其他学科的学习中。
(3)操作系统知识,主要从资源管理的角度来分析系统功能的实现。假设你要设计一个新的操作系统,如何实现它?操作系统理论就是向读者逐步介绍和解释。重点是五大管理职能的实现及其原理。
(4)计算机网络中对ISO/OSIRM七层的划分以及各种协议的功能。传输理论、互联设备、Internet知识,除参考模型理论外,其他的比较比较凌乱。
(5)系统安全问题是目前社会关注的问题,也是应用价值较高的知识,可结合现实中的相关问题来加深理解。
软考中的信息化、标准化知识是新增考点,是对基本素质的考查,也要重视。
专业英语,不是软件考试特有的,是专业知识+英语水平,考前不需专业准备,平时有意识地上网读点英文专业资料。
软考的考试内容既是大学计算机本科专业的必修课,同时又有着鲜明的侧重点,这对于没有经过系统学习的朋友们来说,无疑是一次全面、深入学习的机会,无论是自学或是参加培训,只要去学了就会对计算机有更深入全面的了解,而不只是停留在过去那些肤浅的认识上面。
以上是专业背景知识,是对软件设计师基本素养的要求。
软件设计师的专业能力
软件设计师,关键是设计软件的能力。考试大纲要求:要熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;熟练掌握软件设计的方法和技术;掌握C程序设计语言及指定的四种面向对象语言中的一种。这部分专业能力严重依赖工作实践,要求有一定经验的积累,是具有工程师的实际工作能力和业务水平的体现,但目前大量在校生参加考试,虽没什么工作经验可言,但通过学习和借鉴,仍可以取人之长,补已之短。
这部分内容主要体现在下午的考试题中,现就如何应对下午的考试进行分析:
在近几次考试中,下午试题分五个题目,一个数据库、一个程序填空题、一个面向对象的语言题,另两个题目分别为数据流图、UML或流程图等。
数据库题目,要求补全SQL语言,这要求考生熟悉SQL的语言,无论对上午题目还是下午题目都很重要。这是学习和复习的一个重点。
数据流图,DFD是一种分析系统数据流程的图形,意在让用户理解系统的功能、输入、输出和数据存储等。请认真弄清其应用后,在画出数据流图的情况下,系统的功能也就确定了,再经过细化,逐步向物理结构迈进。考核时,试题多从父图和子图的平衡来分析。这部分内容,解题的关键是高度重视题目说明,务必正确、深入理解其内容,必要时要读几遍,同时对于给出的图表,也要务必看懂。这样答题就轻松了,答案实际就蕴含在说明中。
流程图类题目,是大家再熟悉不过的了,它就一个具体问题的解题思路进行描述,是面向过程的。但所求问题是千差万别的,因此应理解思路,细心作答。
程序填空是答题形式最简单同时也是难度最大的。为便于阅卷,这类题目以程序填空形式出现,这不仅要求理解问题本质,同时也要弄清作者解题思路,这一点比自己独立完成程序设计要难得多。依个人经验,首先要针对问题,设计自己的思路,解决问题,确定先后顺序;然后试读程序,如果思路大体一致,题就容易解决了,如果思路不一致,就要设法弄清每一段代码的功能及其逻辑结构,进而弄清命题人的解题思路,再顺势解决问题。人们常讲,答案就在题目中,这是对的。在分析问题过程中,找到所求答案。不过前提条件是考生要熟悉这种语言,又要明白解题思路,这样才能正确作答。
近年来对于统一建模语言UML考查较多,已引起了考生的注意。它代表了软件工程的发展趋势,目前是可视化建模的事实上的工业标准。人们对于图的理解相对其他形式更容易一些,图能更清晰地描述和说明问题的本质,因此,UML体现了这一特点。这类题目难度与数据流图相似,自然解题思想也相同。从形式上看,数据流图更朴实一些,UML类的题目则透出一种新颖、现代的气息。
最后的题目面向对象语言是一个选做题,给考生以自由,可以发挥个人的优势。命题已注意到不同语言的考查难度的一致性,要求考生就同一问题回答,实现了形式上的公平。
应考的核心问题
要高度重视近几年的试题。试题是对考试大纲的外化,是对相应知识的梳理,直接体现考查意图。如能把历年试题研究几遍,通过考试不成问题。因此,一个高效的学习方法,就是先研究历年考试题,通过做题,巩固已有知识,强化能力。针对试题不同内容,进行归纳总结,找出自己的优势和不足,然后带着问题去读书,查找相关资料,做到有的放矢,针对性强。从应考角度讲,这种方法效率可能最高。
考试是对参考人的综合性评测,每个考生只要答对60%的题目就能通过考试。考过了,意味着一个学习阶段的终结,另一个学习阶段的开始,是对个人知识体系和实践能力的检测。
我的考试经验:考前集中学习是必要的,研究往年考题很重要,考试信心要增强。虽然软考的通过率并不高,但要相信“天道酬勤”的道理。
另外,本人是在职学习计算机的,个人的经历不适用于在校生,但是学习过程是一致的。从无知到有知,从知之不多到形成一定的学科知识体系,通过实践进一步强化能力,这一过程是不能逾越的。在校生基于自身条件、所处环境等因素,会更有优势。