在中国的各java论坛都会看到有人通过SCJP后发的帖子,有的人甚至只花3天就过了。SCJP真的很容易吗?
我近日也过了SCJP,但是不是一次通过的。我想转入IT业发展,没有相关工作经验的我希望通过认证来证明自己的能力。
之前我学习了计算机专业的专升本课程,包括c++和java,在此之前我自学了c。可以说,我走的是大多数人学习java的路线。我在第一次考试前更希望得到的是VC++的MSCD,因为它将在今年6月取消,而我自知不可能在最后期限前完成它的全部。我只好重新规划我的未来。c++不再是windows平台上的主流,而在选择C#还是JAVA时,我为避免将来再次被微软的规划所抛弃,我选择了java,一种建立在垃圾收集堆上的语言。
如果诸位觉得自己C++学的不错,就想轻松过SCJP这是不现实的。请千万记住JAVA不是C++。JAVA为了传输便利,实际上只用32位的基本数据结构如char、int、double,所有的计算结果都默认是32位的。C++程序员习以为常的shorts1=1;short s2=2;s1=s1+s2;在java中却是语法错误。int i[5];在java中也是错误的。JAVA的数组实际上是可以根据需要自动伸缩长短的,这在C++中是很难实现的。在SCJP考题中有很多是针对c++的,例如在变量前加一个C++中常用的unsighted。由于语法很相似,了解C++的人更容易在考试细节上出错。因此,如果你是一个熟悉C++的人来学习java,需要比其他人更谨小慎微。
我第一次考试时很冲动,因为我觉得自己熟悉C++,借了一本java2认证指南粗略的看了两个星期就去考了。这是针对JDK1.3版本的书,并且因为是借的,习题上都是记号,这对自己是否真正掌握考试要点有很多迷惑性。如果你自己买辅导材料,最好不要直接把答案写在上面,因为你很可能要多作几次。当时我连147题都没有看就去考了,结果可想而知。我不知道是否有人不做题就过的,在我看来这是奇迹。
第一次考试结束,我想就当是参加了一次培训吧,但下次一定要通过。这时我在网上找到中文考纲才发现自己连要考什么都不知道,最熟悉的AWP竟然不考。下面是SCJP1.4的考纲,希望大家不要再犯我犯过的错误。
==================
scjp中文大纲
SUN JAVA2认证程序员 平台1.4
第一部分:声明和访问控制
声明,构建,初始化任何类型的数组
声明类,内部类,方法,成员变量,静态成员变量和方法变量,并会应用任何合法的修饰符(如public,final,static,abstract,等等)。能够明了这些修饰符单独和组合起来的含义,并且知道被修饰符修饰的任意对象在各种包相关联系下
的影响。
第二部分:流程控制,断言和异常处理
能够正确使用if,switch语句并且在这些语句中能正确使用合法的参数类型。
能够正确使用所有带标签或不带标签的循环语句,能使用break,continue,能计算在循环中或循环后循环计数器的值。
能够正确使用异常和异常处理语句(try,catch,finally)。能正确声明掷出例外的方法,并知道怎样覆盖它。
知道在程序段的特定点出现的异常对程序的影响。即:异常可能是一个runtime exception,一个checked exception也可能是一个error。(这个程序段可能包括try,catch,finally并以任何可能的合法组合出现。)。
能正确应用断言,区分正确使用的断言和不正确的。明白关于断言机制的正确说法。
第三部分:垃圾收集
明白垃圾收集机制确定性的行为。
能用程序显式的使一个对象能被垃圾收集器合法的收集。
知道在程序的哪一点垃圾收集器能合法地收集一个对象。
第四部分:语言基础
能正确构建包声明,import声明,类声明(包括内部类),接口声明,方法声明(包括用于开始一个类的执行的main方法),变量声明及其其它的一些说明符。
能够正确使用一些类,这些类要么实现了java.lang.Runnable这个接口,要么能正确实现在问题中构建的一些接口。
知道传入main函数的命令行参数的index value。
知道所有JAVA的keyword。注意:考试中不会出现要你区分keyword和各种常数这类深奥的问题。
明白如果没有显式地赋值的各种变量或者数组被使用会出现什么结果。
知道所有原始数据类型的取值范围,怎样声明一个String的字面值等等。
第五部分:操作与赋值
能知道当任何操作符(包括赋值操作符和intanceof操作符)应用于任何操作数(任何类型的类或访问能力或两者的任意组合)的结果。
知道String,Boolean和Object类使用equals(Object)方法后的结果。
知道当对已经知道值的变量进行&,|,&&,||操作时,哪些操作数被运算了,表达式最终的结果是怎样的。
知道Object和原始类型数据传入方法的不同方式,知道如何在这些方法中如何进行赋值或其它修改操作。
第六部分:覆盖,重载,运行时期类型及其面向对象
知道面向对象设计中封装的好处并能用程序实现紧密封装的类,能知道is a和has a的意义。
能正确使用覆盖和重载的方法,能正确调用父类或覆盖了的构建器,知道调用这些方法后的结果。
能实例化任何具体的一般顶层类和内部类。
第七部分:线程
能用java.lang,Thread和java.lang.Runnable两种方法定义,实例化和开始一个新的线程。
知道哪些情况下可能阻止一个线程的执行。
能使用synchronized,wait,notify和notifyAll去解决避免同时访问及其线程间相互通讯的问题。
当执行synchronized,wait,notify和notifyAll时,知道线程和对象锁之间的交互作用。
第八部分:在java.lang包中的基础类
能够应用Math类中的abs,ceil,floor,max,min,random,round,sin,cos,tan,sqrt方法。
正确描述String类不可改变的意义。
当执行一段程序,中间包含有wrapper类的一个实例,知道它运行的前提条件运行结果。能用下面wrapper类(例如Integer,Double,等等)的方法来写程序:
doublevalue
floatvalue
intvalue
longvalue
parseXxx
getXxx
toString
toHexString
第九部分:集合类框架
知道如何在特定的条件下选择适合的集合类/接口。
区分正确和不正确对hashcode方法的实现。
=======================
最初我是拿网上下载的SL275中文教程针对考纲复习的,也下载了《Java编程思想》。但是我都没有看完,因为我觉得它们是不错的程序设计参考资料,但不是针对考试的。我又从网上下载了
[email protected],因为有人说他就靠这个考了98。我做了第一章,觉得和310-035的题出入很大。迷茫中,我去了书店。发现了据说是310-035和Sun epractic考试开发者写的书:Java2学习指南(Sun Certified Programmer & Developer for Java 2(Exam 310-035 & 310-027)人民邮电出版。定价69元)。看了看题,觉得象,就把宝压在了这本书上。最初,我野心很大,打算两周后就再考一次。可是没想到这书的前三章(语言基础、声明和访问控制、操作与赋值)居然花了我一个多月,而我先后做了3次课后练习,却没有一次全对的!?而通常的教材,这3部分的内容是最少的。我终于明白SCJP不是只要签名就能通过的考试了!我用了一个半月终于看完了这本书,回头再把所有练习重做了一次,还是没有一章全对的。我拿出这书附带的光盘,做了上面的模拟器,却发现总时间只给90分钟,我只完成了40多道题,做对25道。我想,再给半小时,应该能过吧。第二天我在网上发现有人居然说自己做了四千多题来过SCJP,我把他的复习资料都载下来。发现大部分是1.2的题,我没有去看。后来我下载了30道1.4模拟经典题和SCJP考题中的陷阱仔细的看了一遍。(其中考到一道题,看来经典就是经典)。接下来,我把第二次做错的题又做了一次,还是没能全对。我于是把光盘上的针对课后练习的模拟器做了一次,64道我对了44道,结果是fail?!这次,我发现最难的题不会一起出现的。于是我有信心了。
第二天一早,我去缴费了。第二次我考了70分,对了43题,和模拟题结果几乎一致。那里的老师说我的分数挺高的,看来尽管已经有人拿满分了,但这只是特例。
尽管我是靠这两个多月的努力过关的,但是过去的知识积累也是很重要的,运算符的优先级别对于正确理解程序是很关键的,但是在这书中没有提及,我过去是在C里学到的。
再回头看SCJP,这是目前唯一针对语言而非特定编译器的程序设计考试。MCSD是先假设应试者已经掌握了异常处理和面对对象程序设计的。java只有SUN公司的一个规范,因此它比C++容易普及和推广。但是SCJP不是适合初学者的考试,如果仅仅是为了一张证书而考SCJP,实在不是最好的选择。
如果你考了一次没有过,不妨再考一次;因为你比其他人更了解这考试。
学习Java的好处在于,它没有被IDE(集成开发环境)完全包裹,相对C++的编译器你更容易去接触面对对象程序设计的本质,而不是去花时间适应一个迟早会被淘汰的编程界面
本文地址:http://com.8s8s.com/it/it16683.htm