2002年高级程序员考试总结及经验
出处
我今年10月13日参见了计算机水平考试的高级程序员级别考试﹐当时报考的目的是想通过资格考试,获得工程师职称,就不用准备大量材料去参见评审了,并且又通过准备考试学到了些知识。我本来不是计算机专业毕业的的,是学工业自动化的,但现在在计算机行业工作,以前在学校时过了计算机2级(FOXBASE),在学校里学过《微机原理》、foxpro,自学过PB、HTML,今年5月份通过了CCNA640-607,在准备本次考试之前没有学过C、CASL和软件工程等。
今年的软件水平考试的我考得并不理想,但也有可能过,自己估计上午考得稍微好一点,应该没问题,下午考试成绩在40-50之间,第四题CASL全对了,第五题C因为没有时间了,简单看了看就填上答案了,出来后仔细想了一想,全错了。
本次将准备学习和考试过程中的一些经验教训简单地总结了一下﹐以备自己明年参加考试或者其他网友参考,不对的地方希望指正。明年我一定还会参见软件考试的,如果今年高程过了,我明年就考网络设计师或系统分析员,因为相对CCNP、ORACLE等认证,软件考试便宜多了。我的想法是证书越多越好,知识面越宽越好。
一、 学习准备时间
我是8月份开始准备考试的,利用前两个月(8月初-9月20日)学习C语言、CASL和数据结构,9月20日-30日学习程序流程图、数据流图等准备下午前几道题,10月1日-7日看高程的教程(清华大学出版社)准备上午题,10月7日-12日复习准备考试。
因为我已经工作了,只能在晚上和周末学习,加起来用的时间也不多,只是在国庆节放假期间到自己家附近的一所大学中整整奋斗了7天。
现在来看我用的时间确实是少了,但学习的顺序是正确的。建议其他网友用3-4个月左右的时间准备高程的考试,具体是学习C语言1个月、数据结构3周、CASL汇编3周、程序设计(流程图)3周、基础知识3-4周、复习2周。
具体的学习重点和方法请看下面。
二、 上午考试准备
从2002年的考试题来看,上午的试题向增加广度及注重能力方向发展,数据结构算法分析和软件质量、软件项目管理、面向对象方法等方面的试题的比重增加了,计算机硬件基础知识的比重减小了(以前是教程上100页的内容有20分)。
上午题难就难在没有重点上,随便教程上的一段内容就可能是一道题,在准备考试时一定要把教程详细的看一遍,但是也并不是简单的“随便”,一般情况下去年考的内容今年就不能考了,可不做重点学习(我没有说不学了,即使考了,因为我们已经做过该类型的题,拿分也容易),在看教程时要想一想这段内容能出什麽题目,并记录在笔记上,待复习时用。 还有一个重点就是我今年忽略的软考办发布的“软件考试备考参考”和练习题,参考中可能透漏一些考试范围,比如今年的,基本上是一句话一道题:高级程序员级上下午各2个半小时。上午试卷有75空选择题,内容包括:数据结构(如树的定义、存储和操作,常用的排序算法等),程序语言及编译知识(如
有限自动机与正规式等),操作系统理论知识(如进程、资源管理方法等),软件工程基础知识(含开发方法,概要设计,详细设计,软件测试,软件能力成熟度模型CMM等),数据库基础知识(包括关系代数表达式和SQL的使用),多媒体基础知识,网络基础知识,面向对象开发方法,信息安全,计算机体系结构,存储器系统,计算机专业英语(注重阅读理解资料)
1﹑程序语言处理(文法和编译)﹕这是个难点,不好理解﹐只能“照葫芦画瓢”做一些类型题(比如求句柄、比较最优算符、求推导或归约树、NFA-DFA的转换等)。
2﹑软件工程﹕向目前软件发展趋势一样,注重软件质量和软件项目的管理,这块的考试内容可能超出教程,要看一些其他的资料。
3﹑数据结构和算法﹕数据结构和算法是程序的基础,也是考试的重点,应重点学习,因教程中这方面的内容很少,要看其他资料(比如大学的数据结构教程),很要重点学习理解算法及时间复杂度等﹐今年几个算法的题我都是猜的。对一些常用的算法(如递归、二分查找、快速排序等)一定要深入理解,并且能自己编制出利用该算法的程序,在编程、调试、完善程序时加强理解。
4﹑计算机英语﹕英语主要看基础,没有什麽好的建议,平时多看一些计算机英文资料。
5、计算机硬件知识:内容不多但占的分数不少,重要的是详细理解教程上的每段内容,通过重点学习,尽量使在这块内容丢分最少。
6、多媒体和网络知识:经常考一些教程外的内容,但都是常见的,除学习教程中的内容外还需扩大知识面,平时多积累。我今年没有学习教程中这方面的内容,靠的是平时的积累。 7、数据库和操作系统:分数比较少,内容比较难理解,总结一下各部分的知识点和考点,重点学习。
三、 下午考试准备
1﹑CASL汇编﹕是下午题的重点,因为这道题得满分相对其他题容易,一般这道题能得满分,就通过考试了。在准备学习时一定要熟练掌握,在平时能会做的题在考试中不一定完全答对。注意掌握常用的算法(如ASCII码字符转换、移位、双层循环等),还要注意不要用错指定(如LEA/LD,JMI/JNZ,SSL/SLA等)。
2﹑C/C++:主要是熟练,熟能生巧。另外,重点掌握常用算法的C/C++程序。
3、程序设计题:该部分题我看主要考智力,没什麽知识点。主要掌握一下各种流程图,会完善和改错。
四、 考前复习
在考前的2周内要把所有内容全部复习一遍,在做往届试题和练习题时要注意“做题的质量”,在每做一道题后一定要仔细分析,要问一下自己“得到了什麽”。
还有在考试前多上网查一些资料和“小道消息”等信息,不要“闷头学习”。
五、 考试经验
考试时一定要思路清晰、细心,个别问题在答题时要想一想出题者的意图。上午题的答题时间比较充裕﹐下午的时间又可能不够用,要特别注意时间时间的安排,一般情况下是前3道题用65分钟左右,不能超过80分钟,CASL用30-40分钟,C/C++用30-40分钟,15分钟写答案,10-30分钟检查,可能因为某个题不熟或不会时间会长一些,这样只能牺牲检查的时间了。
我今年就是CASL刚开始看错题了,以为还有10以上的数需转换,这道题花费了我50分钟,最后来不及做C语言的的题卷了,心慌意乱的草草的填了几个空,都错了。
我的经验是做题时一定要镇定,不能心慌,如慌了就完了。你要相信经过仔细考虑一定能做出正确的答案的,一个角度考虑不出结果,换一个角度考虑。
在答C/C++语言或CASL题时,一定进行验证(边值分析法进行测试)。 以上,是本人的一点经验,希望共分享,共同提高!
作者Blog:http://blog.csdn.net/caesarx/
2001年高级程序员考试心得
出处
转载:
前言:
前些天发表了一篇《2002年系统分析员考试心得》,没想到十分受大家欢迎,收到了几十封网友的E-mail,这其中有许多朋友说自己觉得系统分析员级考试难度太大,还没有准备2003年考,但觉得高级程序员(软件设计师)级考试可能比较适合自己,还询问我2001年当时参加高级程序员考试时的心得。我想既然大家这么瞧得起我,我还是将当年的考试心得写出来,这样便可以全面系统介绍了我的考试心得,帮助大家顺利通过。虽然2001年至今已经过去了两年,两年的考试也会有些变化,但我想我的这些心得还是不会白写的,万变不离其踪。好吧,请各位仔细往下看吧:)
正文:
还是一样,我先简单介绍一下高级程序员考试,让大家有个大概的认识。高级程序员全称是"全国软件资格与水平考试--高级程序员级",其大纲称"通过本级考试的合格人员能按照软件需求规格说明书进行软件设计和编制程序,具有相当于工程师的实际工作能力和业务水平"。记得前些年,这个级别改称"系统设计师"。我个人认为这种改变还是正确的,因为高级程序员在实际工作中和程序员(许多人称这个级别为中级程序员)还是有很大的区别的,程序员主要是带领初级程序员进行某一个系统中若干相关模块的开发,并负责将这部分合并提交,可以说程序员的主要工作是编码,工作还主要停留在技术层面。而高级程序员正像其改名后的称谓:系统设计师,其工作是辅助系统分析员进行软件系统中的功能设计,已经不仅仅是技术层面的工作了,还包括许多功能分析和设计的工作。因为我个人认为,由于软件资格与水平考试的这四个级别是十多年前定下的,今天已经不能适应现在软件开发的要求。我觉得应该改称:编码员、程序员、系统设计师、系统分析师。这么改也是符合现代软件开发中的惯例。
明白了高级程序员的工作后,我们就可以对自己面对的考试有一个清醒的认识。高级程序员考试不是考编程,而是考功能设计。这点对于复习来说是十分重要的。看看这些年的试题,上午主要是以基础知识考查为主,下午特别是以考功能设计为主。所以复习时要特别注意相关的能力的培养。在这篇文章中,我不想介绍具体知识和能力的提高,而是从方法上介绍我的心得,具体的知识解答等问题,可以看其他相关的文章。下面,我分上午考试和下午考试,来具体说说复习和考试时要注意的问题。
上午的考试是考计算机基础知识和对最新知识的了解。高程考试有一个特点,就是基础知识考的题不多,15道左右,但每题都有5问,相对要求会比较细,特别是5问中的后面2问或3问,都是要求对题目内容有一定的了解才能正确回答。所以针对这个情况,在复习时要注意对复习的知识的深度内容有一定的了解,而不能只知道皮毛。如果你对各年的题目按年为序进行一下分类,并对每年的题分小类,你会发现每年的重点都是很突出的!像操作系统、软件工程、计算机网络基本上是每年的重头戏,占分很大。所以对待这些要特别重视,要充分复习,这样才能拿住这些死分。而对于其他内容,每年都在变,但基本上是几年一循环。所以复习也就有了目标。我在这里给各位一个建议:在平时认真看书的前提下,注意以近几年的考题为纲来复习,按我上面教的分类方法进行分类,然后针对各类的比例进行复习,这样复习效率会非常高,而且效果好。最好不要总是通通看书,那样由于看了后面前面会部分忘记,效果不佳。另外每年都会有考新技术发展的考试,不会单独考,而是结合在其他题中考上一问或两问。对于这部分,不用专门准备,只要平时多多留心报纸或网上有关的知识,不会很难。
下午的考试是主要考设计能力。我个人认为,这部分考试的难度比较大。因为知识部分可以通过大量练习而很快提高,但能力主要靠平时的培养,虽然大量练习也能提高,但效果不是最好的。我这里想说的是,练习是要做的,但要有针对性,不要做大量练习,那样不会有太好的效果,我建议只做近4、5年的就够了,而且要认真并注意总结地做,那样才会有效果。主要针对汇编题进行多些的练习,因为这部分大量练习会有很明显的效果,主要提高速度和准确性,为其他题争取更多的答题时间。对于填程序题,主要提高的方法是平时多读C程序,可以将做过的题填好后,再多读上几遍,很有启示作用的。对于最容易丢分的设计题和分析题,我认为开始时可以先做一年的,然后对着答案看看主要的答题思路,其中还是有许多相似之处的。在这个基础上继续做一年,然后可以慢慢自己独立做一年的,看看自己是否有提高。我相信按我的方法,你的提高会很快的。
我个人的感觉是,高程考试成功的关键是复习,这也是很多人都证明了的。当然,我的意思不是指为了应试而应试,只是在复习中要特别注意应试方面的技巧,因为这毕竟是一个考试。相对于高难的系统分析员考试,我觉得高程还是比较容易的。在复习时要记住几句话,结合试卷、分类整理、对比分析、大量练习、独立完成,我想做好这些,你一定会考出好成绩的,另外读者们也可以给我来信[email protected]。
作者Blog:http://blog.csdn.net/caesarx/
转载:程序员高薪之路
出处
现在随便登陆一个人才网站,都可以看到招聘软件人才的信息铺天盖地,但是不同企业开出的薪酬却是千差万别。同样的用人要求,薪酬的落差甚至可以达到万元以上。究竟中国程序员的薪酬待遇是如何定位,程序员应当如何确立自己的身价,这都是值得大家探讨的问题。
就中华英才网2000年下半年的薪资调查显示,计算机、互联网从业人员的平均薪水有所下降,跌为第三位,次于医疗设备与电信行业,但其待遇与国内其它一般行业相比,仍是以39712元的平均年薪名列前茅。可以看出,虽然目前国内IT行业不是十分景气,但由于其发展的势头正旺,程序员的金字招牌依然有很大的“钱”途,并且只要付出足够的努力,所得到的回报也是相当可观的。
虽然程序员本身的学历或专长可以有明显的差别,说到程序员的薪资待遇,却不是用简单的分类就能一目了然的。因为用人单位的实际需求情况和其待遇分配的主观性就决定了各自待遇的千差万别。
首先我们应当注意到地域性的薪资差距。从整体来讲,国内的程序员待遇低于国外与港台是理所当然的,而国内软件业的龙头聚合在京粤沪三地,因此京粤沪三地也聚合了国内大部分的程序精英,其待遇也是大大领先于内地其它城市的。相比之下,深圳和北京的薪资待遇要略高于上海,但从各地日常消费水平和购买力的差别来算,待遇实质差异并不大。例如一个深圳的程序员,月薪8000元左右,而他每月的日常开支就可能达到5000元,剩下的3000元作为额外开支也许还会觉得拮据,而在内地的5000元基本就能显得很宽裕。
地点 月薪
京、粤、沪 4000-10000 (1年业绩)
南京 1500-5000 (1年业绩)
苏州 2000-5000 (1年业绩)
武汉 6000-10000 (5年业绩)
成都 1000-4000(1年业绩)
香港 1.8万-5万(1-5年业绩)
应该关注的是现在除了外企、经济特区之外,西部地区如今为了吸引人才,也频频出招,提供了很好的工作环境。中国西部软件业与沿海地区存在极大的差距,从某种角度来看,这也正是西部软件产业的天然优势,因为市场的空白恰好是非常好的插入点,虽然目前西部地区的软件人才工资远远不及京、粤、沪地区,但是由于人才的外流与紧缺,真正的精英在这里有很强的竞争优势,并且由于近来国家政策的倾斜,为软件发展创造了良好的条件,软件人才在这里可以有更大的发展天地,所受到的制约相比之下也要小得多。
就传统观点来讲,也许学历的高下在一定程度上影响了程序员的初期就业,但是不论如何,对于用人单位来说,对经验的看重更胜于学历,在业内真正重视的是实际的经验与能力,而学历仅仅是入门的一张“名片”。当然,“名片”是越拿得出手越好,如果能拿到一些相关的国际认证证书,例如微软的MSCE或SUNJAVA认证等,也会适当地提高自己的身价。在应聘时硬牌的证书可给用人单位特别是外企一个较好的第一印象,这对没有实际工作经验基础的应届生就业有所帮助。从实质的薪资差别来看,一些雇主表示,他们都愿意为员工的某些技术才能支付额外的薪水(包括Oracle、DBA、MCSE、SAP和PeopleSoft等技术领域的证书)。证书可以用来表明你熟悉程序员或网络工程师应该掌握的东西,虽然几乎每个培训班都说拿到XX证书就相当于拿到了XX万的年薪保证,但实际工作中的作品才真正能证实自己的价值。也就是说,如果你有工作经验,证书就很有价值,否则就只是一纸空文。
其实真正决定薪资待遇的根本因素应该是用人单位的实力和程序员自身的素质。
由于软件行业特别是互联网软件企业是高风险、高回报的新企业,企业的实力包括了其资金基础、研发能力、内部管理能力以及至关重要的市场运作能力等各方面。并且,由于品牌、市场运作等因素,即使是同样的软件产品,其价格也可能有天壤之别,产品所能创造的市值也就影响了程序员以及所有员工所能得到的报酬以及福利待遇,不管这种报酬是以月薪方式还是提成的方式体现。因此,撇开程序员个人素质资历等不说,同样是刚毕业参加工作的程序员,为什么有的能拿到数千的月薪,有的却只有惨不忍睹的几百元,这也是值得大家考虑的。
基础雄厚的公司对精英人才有很优厚的待遇,除了高薪之外,还包括住房分配、各类保险金的缴纳等。国企的薪酬待遇虽然明显低于外资或独资企业,但是由于国企近年来逐步重视软件人才,所以与普通职工相比,程序员在国企中仍能算得上是高薪阶层,一般在国企中就业的程序员能拿到1500以上的月薪,上万的也时有听说,同时享受较好的福利。
从目前国内的软件行业来看,对程序员的报酬有几种方式:一种是传统的月薪或年薪+奖金制,一种是期权方式,还有一种是某些公司临时聘请程序员只做一两个项目,做完走人,按项目付给相应酬劳。追求稳定的程序员可以选择基础好的企业以薪金谋生,并求稳步发展;有创业精神的则可以选择有发展前景的企业或团队,获得效益分享,期权曾经造就了不少程序员暴富的神话,但其风险也比较大。
在传统意义的软件公司里,大公司一般有明确的分工,各个流程或模块由不同的程序员完成,象IBM这样的大公司里面,也许你是相当优秀并且知识是相当全面的,但是实际上的工作当中并不需要你做超出范围的事情,工作一般比较单一,同时也能得到稳定的收入。在更多作坊式的小公司里,一个技术人员通常要完成更多方面的工作,诸如需求分析、系统设计、详细设计、编写代码、软件测试、撰写文档、安装调试、系统维护等。这些工作通常会混在一起,而不是按照什么软件工程的顺序来完成。当然,从创业的趣味性来说,有的程序员会更加喜欢后者,但是这同时也要考虑到薪酬的分配是否合理,自己所付出的劳动是否得到了应有的回报。
和做人的基本道理一样,程序员自身的综合素质影响了自己的价值。很多学程序的学生试图从自己的学历或所学的语言来确定自己今后能拿到多少报酬,这也有一定的道理,因为编程语言的难度和产品范围在一定程度上也影响劳动价值。就北京来说,在目前的情况下,大多数VC++软件工程师的入门月工资大约是在3000元左右,几年后成为熟练程序员大约在5000元 - 10000元以上。其他类软件工程师的工资水平,一般比VC++低一些。不过这不是绝对的。而且,不同的公司还有差距。有些VC++工程师认为,JAVA、DELPHI程序员的工资会比较高一些。但就产品的商业价值来说,可以说市场需求是最大的主导,并不是说JAVA语言作的程序就一定能比VB的程序卖出更高的价钱。因此程序员的薪金待遇也并不是以所学的语言而一概而论的,何况多数编程语言是触类旁通的,就看自己有没有很好的学习能力了。
由于程序开发的日趋灵活性和多样性,IT行业越来越倾向于招纳一专多能的人才,因为大部分新兴的IT公司规模较小,为控制资金及成本,会趋向雇用多才之士。同时,由于计算机软件本来是要应用于不同行业的,因此只具备编程知识是不够的,和应用行业的知识组合也相当重要,例如商业与计算机技能的专业,如管理学和信息系统专业、计算机与心理学专业等。复合型人才在一些专业性较强的行业具有很强的优势,例如电信、电力、证券、医药等行业,由于以前我国教育的局限性和单一性,这些行业急需计算机应用型人才,而仅仅只会计算机的程序员是不可能适合这些专业性极强的行业的。因此,对特殊行业本身有深刻了解的程序员到这些部门肯定会大受欢迎,并且身价不菲。
一般来说,刚走出校门并且没有一定开发经验的程序员,在刚开始的时候对薪资的期望值不要太高,很多程序员甚至有高程证书的程序员在刚工作时也只能拿到千元左右的月薪。因为企业对人才的定价已不仅仅看重一纸证书,而是看你在整个团队中所能发挥的作用。一般没有资历的程序员刚进入岗位时有1到3个月的试用期,视企业的不同,刚开始的时候试用工资在800-3000元左右,当做出一两个好的项目之后,待遇就会自然水涨船高。在软件行业中,敬业精神尤为关键。可以说默默无闻的程序员工作是相当枯燥并且辛苦的,是否具有忍耐力、快速学习能力、沟通能力以及团体合作精神,是敬业素质的重点。一个好的程序员到哪都是抢手人物,但一个好程序员的背后则需要他拼命地工作和不倦地学习,有时还要借助于灵感,而灵感来自于经验的积累和广阔的视野。
从调查中可以看出,程序员的薪资与所用语言关系不大,并且高薪的程序员的学历也参差不齐,而从业的时间和业绩更大程度上影响了程序员所能得到的待遇,如下表所示:
年限 月薪
0 800-3000
1 3000-6000
3 5000-15000
4年以上 6000-40000
现在,许多公司都是由一两个优秀的程序员在支撑,整个公司的业务都会注视着这少数的“领头羊”,薪酬也自然会向他们倾斜。由于前几年大家对计算机行业的看好,学习计算机专业的也是一涌而上人数众多,竞争对手越来越多。一个程序员要是跟不上或不是跑在最前面,就会被淘汰出局。要知道,即使在同一个公司里,程序员之间的能力差距所造成的月薪差距会在数千元甚至万元之多。竞争中永远是弱肉强食的,要想在待遇上遥遥领先,至少应当具备一直往前跑的阿甘精神。
微软用人的原则很简单,那就是找最聪明的。每年在十几万份送来的求职简历中,微软只选少数聪明者。盖茨对软件开发人员说:“4~5年后,现在的每句程序指令都得淘汰。”这么快的更新速度,要求程序设计员必须有良好的创新能力。一个现在吃香的程序员也许几年以后就会发现自己已经太过落后,而面临残酷的淘汰。
另外相信大多数程序员都有这样一个观点:程序员大都是吃“青春饭”的,现在写程序的人里面,30岁以上的已经在逐渐减少,而35岁以上的则屈指可数,大部分程序员的黄金岁月是在24~28岁。而到了28、29岁以后,由于软件行业的飞速发展,很多自己以前学的东西逐渐换代,而由于程序员长期埋头于工作,想学习崭新的知识也是力不从心。落后的必然结果就是降薪乃至失业。另外由于长年的辛劳,很多程序员对自己的工作感到厌倦,觉得自己应该做比编程序更重要的事情,否则就觉得没意思——很多程序员在工作一段时间后就把自己的目标定位在系统分析员或创业的老板,希望摆脱枯燥的程序设计。
所以,面临新的挑战和机遇,一个合格的程序员应当具有敬业、灵活、创新、博学等全面优秀的素质。很多程序员抱怨自己待遇不公,但往往忽略了自身的因素,首先程序员在要求月薪之前,就应当首先考虑自己在所在的企业的位置,自己的能力专长是否正是该企业所需要的,能给企业带来多少产出。当然,初入行业时,也许会因为管理的因素造成不公的待遇,但是当逐渐融入工作之后,对企业以及环境有了一定的了解,就可以根据自己的实际情况理直气壮地提出要求。同时,由于软件行业的变动很大,程序员跳槽或“下课”是常有是事,有时候一些工作岗位也不能只注重它的薪酬多少,关键是看自己能够得到多大的提高与发展,某些时候,低薪但富有挑战力的工作也不失为开拓自己以后道路的跳板。
老实说,一个资深程序员的薪资在很多人眼里的确是高不可攀,这个行业也是实实在在的白领阶层。但是程序员的艰辛也是非旁人所能想像的,特别要想在竞争中出类拔萃,更需要很大的毅力。程序员高薪的秘诀无非一个:机遇+经验+灵感。虽然世界人人平等,并且大多数企业都在以高酬吸纳优秀人才,但是价值要靠自己创造,每个人都会有自己的位置,这里给大家看一个小网络公司的招聘广告:招聘程序员,要求熟练掌握 VC、 VB、JAVA脚本、 SQLServer、 Access、 月薪800、 包食宿。
呵呵,不要沮丧,这只是市面待遇最低的一种,想拿高薪吗?那么,努力吧,首先你应当成为精英!