本书的组织结构
本书为准备参加Sun认证Java程序员(Sun Certified Java Programmer,SCJP)Java 6和Java 5考试的读者提供了全面的复习资料,它同时适合于有经验的Java专业人员和对Java技术刚入门的读者。每一章都至少覆盖考试的一个主要方面,重点强调Java语言编程过程中“为什么要这样做”,同时也会讲解“如何做”的问题。对Sun认证Java开发人员(Sun Certified Java Developer,SCJD)考试所提交的项目,本书的配套光盘还包含对它的成功评估的关键部分所做的深入分析。.
本书不涉及的内容
书中没有包含Java初学者所需的知识。全部500页左右的内容都围绕着如何帮助读者通过考试而展开。如果你对Java一无所知,我们建议你先花点时间学习一些Java的基础知识。在懂得如何编写、编译并运行简单的Java程序之前,不应当阅读本书。但是,对书中所覆盖的每个主题,都没有假定需要任何水平的预备知识。换句话说,对任何给定的主题(根据实际的考试目标设定),都假定读者是刚接触它。因此,我们假定读者对所有主题都是新鲜的,但是对Java而言就不是如此了。
而且,我们不能自称这本书不仅能帮助读者备考,同时还能使读者完全成为Java人。它只不过是一本认证考试指南,这个使命非常清楚。但是,这并不意味着准备考试对读者成为更好的Java程序员没有帮助!相反,即使是最有经验的Java开发人员也会经常说:准备认证考试所学到的知识,远比没有考试压力的学习所学到的知识多得多。
配套光盘内容
有关本书配套光盘的更多信息,请参阅附录A。
一些提示
在学习完本书的全部内容之后,应留出一些时间来做全面回顾。你可能要多次回到书本,利用书中提供的全部方法来复习下面的内容。
1.复习所有的“两分钟操练”小节,或者让某个人来考你。考试前,可将它作为快速复习的途径。可以将这些小节中的内容写在3 cm×5 cm的记录卡(flash card)上,供随机抽取来复习。
2.复习所有的“考试注意事项”段落。记住,这些注意事项都是由命题者给出的,他们知道你期望的是什么,也知道你应该注意什么。
3.重做自测题。在学习完每一章之后立即做一下自我测试,这是一个好的做法,因为这些问题能巩固刚刚学到的知识。但是,如果能在学完全书后再回头重做所有这些题目,则会更好。你可以设想正在参加真正的考试(当你做这些自测题时,将答案写在一张单独的纸上,这样,就能够根据需要多次练习这些考题,直到完全掌握为止)。
4.完成练习。所设计的这些练习涵盖了考试的主题,没有比通过练习来熟悉材料更好的方法了。要确信你已经理解每个练习中所做的每一步。如果有不清楚的地方,要重新学习相关章节。
5.编写大量的Java代码。我们会多次重复这个建议。在写作本书的过程中,我们编写了数百个小型的Java程序,以帮助我们对它的研究。我们从数百个通过了考试的考生那里听到过,在他们的复习期间,几乎所有取得了高分的考生都编写过大量的代码。要体验书中的代码示例,创建带有可怕的编译器错误的代码——要抛开集成开发环境(IDE),坚持采用命令行方式,然后编写代码!
本书内容简介
Sun认证Java程序员(SCJP)考试被认为是盯业中最难的考试之一。根据以往经验,我们可以断言,很多考生并没有做好充分准备。作为程序员,在通常要承受令人发疯的最后期限的情况下,我们倾向于只学习为了完成当前的项目所需要的那些知识。但是考试的目的是要证实考生已经全面理解了Java语言,而不仅仅是在工作中已经熟悉了的那一部分。
仅凭经验几乎不能通过考试,即使是你认为已经理解了的内容,也可能与你想象的有一点出入。为了让你的代码能正确运行,单凭经验是不够的,必须深入领会Java的核心基础知识,而且要全面理解在使用该语言的过程中可能出现的任何内容。
Sun认证开发人员考试(配套光盘中有介绍)在IT认证领域是独特的,因为它实际上测试的是考生作为开发人员对语言或工具的使用技能,而不是简单地测试对它们的知识的掌握程度。按照要求,Sun认证Java开发人员考试实际上考查的是开发经验。
谁关注认证
老板、猎头和程序员都会关注。Sun程序员考试被认为是IT业中发展最快的一项认证考试,考生人数也逐年增加。通过了这项考试,就可以向你现在以及未来的老板证明三件重要的事情:你聪明;知道如何学习和准备富有挑战性的测试;最重要的是,你确实掌握了Java语言。如果必须在两位应聘者中作出选择,其中一位已通过考试而另一位没有,则老板会知道,通过了认证的程序员不必再花时间学习Java语言了。
. 但是,通过了认证是否意味着就能够真正使用Java开发软件呢?不一定,但这是一个良好的开端。要真正证明你的软件开发能力(而不仅仅是对语言的掌握程度),你应当考虑参加开发人员考试,在这个考试中,会指定考生要完成的作业,建立一个程序,涉及从最开始到最后完成的全部过程,最后提交给审阅者评估打分。
Sun认证规划
目前,存在8种Java认证考试(但其中的几种有多个版本)。助理程序员考试(Associate exam)、程序员考试(Programmer exam)和开发人员考试(Developer exam),它们都与Java Standard Edition有关。Web组件开发人员考试(Web Component exam)、业务组件开发人员考试(Business Component exam)、Web Services开发人员考试(Web Services exam)和企业架构师考试(Enterprise Architect exam),它们都与Java Enterprise Edition有关。移动应用程序开发人员考试(Mobile Application exam)与Java Micro Edition有关。
助理程序员考试、程序员考试、Web组件开发人员考试、业务组件开发人员考试、Web Services开发人员考试以及移动应用程序开发人员考试是需要在考试中心完成的多选题和拖放题考试,而开发人员考试和企业架构师考试还涉及提交一个项目。
助理程序员考试(CX-310-019)
面向Sun认证Java助理程序员(SCJA)。
助理程序员考试针对刚刚开始使用Java技术进行应用程序开发或软件项目管理的考生。这个考试考查面向对象概念的基本知识、UML基础、Java语言编程基础以及Java平台和技术的一般知识。这一考试没有任何先决条件的要求。
程序员考试(CX-310-065)
面向针对Java 6的Sun认证Java程序员(SCJP)。
程序员考试的目的是考查与Java编程语言自身相关的知识。它要求掌握Java语言的语法、核心概念和大量常见的应用程序编程接口(API)的细节。这一考试还会考查面向对象设计概念的中级知识。它不涉及与架构相关的任何问题,也不会问你为什么一种方法比另一种方法更好,但会考查在特定的情形下指定的方法能否起作用。这一考试没有任何先决条件的要求。到2008年5月,这个考试的两个较老的版本SCJP 1.4和SCJP 5.0,仍然没有废止。
开发人员考试(CX-310-252A,CX-310-027)
面向Sun认证Java开发人员(SCJD)。
开发人员考试是程序员考试的进阶,必须先通过程序员考试才能参加开发人员考试。开发人员考试要求考生开发一个真正的程序,然后解释他的设计决策。这一考试用于考查考生对特定情况下为什么一种设计方法优于另一种的理解程度,以证明考生能够遵循开发规范开发一个正确的、可运行的、用户友好的程序。开发人员考试由两部分组成:一个项目作业和后续的论文式考试。考生完成项目的时间没有限制,但一旦提交了项目,考生接着必须到考试中心完成一个简短的论文式考试。这种设计的主要目的,是为了验证所提交的项目确实是考生亲自设计和构建的。
Web组件开发人员考试(CX-310-083)
面向针对Java EE平台的Sun认证Web组件开发人员(SCWCD)。
Web开发人员考试的对象是那些使用Java servlet和JSP(Java Server Pages)技术构建Web应用程序的考生。它基于Java Enterprise Edition(Java EE)定义的Servlet和JSP规范。这一考试要求考生已经是Sun认证Java程序员。
业务组件开发人员考试(CX-310-091)
面向针对Java EE平台的Sun认证业务组件开发人员(SCBCD)。
业务组件开发人员考试的对象是那些使用Java EJB技术构建业务层应用程序的考生,它基于Java EE中定义的EJB规范。这一考试要求考生已经是Sun认证Java程序员。
Web Services开发人员考试(CX-310-220)
面向针对Java EE平台的Sun认证Web Services开发人员(SCDJWS)。
Web Services开发人员考试的对象是那些使用Java EE和Java Web Services Developer Pack技术构建应用程序的人员。这一考试要求考生已经是Sun认证Java程序员。
架构师考试(CX-310-052,CX-310-301 A,CX-310-062)
面向针对J2EE技术的Sun认证企业架构师(SCEA)。
这一认证针对企业架构师,因此不要求考生预先通过程序员考试。架构师考试分为三个部分:基于知识点的多选题考试、架构设计作业以及后续的论文式考试。在注册并收到设计作业之前,必须先通过多选题考试。
移动应用程序开发人员考试(CX-310-110)
面向针对Java ME的Sun认证移动应用程序开发人员(SCMAD)。
移动应用程序开发人员考试的对象是那些为手机或其他支持Java的设备创建应用程序的人员。该考试涵盖Java Technology for Wireless Industry(JTWI)规范、Wireless Messaging API和MobileMedia API。这一考试要求考生已经是Sun认证Java程序员。
参加程序员考试
一般情况下,不能仅凭对一些问题的回答情况来评价一个人真正的知识水平。但生活并不完美,不可能一对一地评价每个人的知识水平。
对于大多数的认证考试,Sun都采用Sylvan Prometric公司运作的基于计算机的考试服务来评价考生。这项服务在业界相当流行,它用于很多厂家的认证规划,包括Novell的CNE和Microsoft的MCSE。由于Sylvan Prometric公司具备大量的考试设施,使得考试可以在全球范围内进行管理,通常考生在自己的所在地即可参加考试。
不同厂家采用的Sylvan Prometric考试方式基本相似。但是,关于Sun认证考试有一个重要的方面需要知道:它们采用传统的Sylvan Prometric考试形式,而不是较新的适应性考试形式。这对考生有利,因为传统方式允许在考试时复查和修改答案。
为了防止死记硬背,Sun考试尽可能为不同的考生提供一套不同的考题。在考试设计的过程中,汇集了成百上千的考题,并经过测试对它们进行了精练。从这个巨大的题库中,针对每个认证目标将考题放到一起,并汇集成了考试的许多不同版本。
每一种Sun认证考试都有指定数量的考题和考试时间,如程序员考试有72道题,考试时间是210分钟。考试的剩余时间和题数都显示在屏幕的一角。如果考试时间用完,考试即结束,未完成的题目被视为回答错误。..
考试结束后就立即进行评分,结果会显示在屏幕上,同时还会提供每个部分的分数,但系统不会指出具体是哪些考题答错了。在考试代理机构那里,会针对你的考试结果自动打印出一份报告。考试成绩会以电子形式传回Sun公司。
考题形式
Java认证考试的考题形式包括多选题和拖放题。
多选题。在早期的考试版本中,当考生遇到多选题时,题目中并没有写明有几个正确答案,但随着考试版本的更新,考试难度的加大,现在的多选题都会告知有几个答案。本书每章结尾的自测题在形式、描述和难度上都与实际考试很类似,但有两点不同:
只要有可能,就不会告诉你存在多少个正确答案,自测题中会以“Choose all that apply”(选择所有合适的答案)体现。之所以这样做,是为了帮助读者掌握所学内容。如果已经知道了正确的答案数,则有些聪明的考生就能够排除错误的答案。如果知道了有多少个答案是正确的,则选择最有可能的答案也是可行的。我们的责任是尽量模拟真实的考试。
实际的考试通常会为考题的代码行编号,而在本书中,一般不会为代码行编号,这样就可以留出空间在关键的地方加上注释。在实际的考试中,当一段代码清单从第1行开始时,就表示正在查看的是全部源代码文件。如果代码清单从大于1的行号开始,则表示正在查看的是部分源代码文件。当看到的是部分源代码时,都假定没有看到的部分是正确的(例如,除非明确指出,否则可以假定部分源代码文件有正确的导人语句和包语句)。
拖放题。尽管许多其他的Sun Java认证考试多年前就已经有了拖放题,但SCJP考试还是第一次包含这种题型。前面说过,考题是随机生成的,但一般会有大约20%~25%的拖放题。
拖放题通常由如下三部分组成:
一个场景。需要完成的任务的一个简短描述。
部分完成的任务。包括代码清单、表或目录树。部分完成的任务将包含一些空格,这些空格用框来指示(框通常是黄色的)。需要填充这些框以完成任务。
一组可能的“段”答案。需要在段(通常是蓝色的框)上单击,并将它拖放到正确的空格中。
考题场景会告知是否可以重复使用段。
多数拖放题会有4~10个需要填充的空格,而提供的段通常会比需要的多一些(即有些段不会用到)。拖放题一般是考试中最复杂的考题,而可能的答案组合使得几乎无法通过猜测来答题。
考试提示
310-065(Java 6)考试共有72道题目,考生至少要答对47道题(约65%)才能通过考试。考试时间为3小时。这些信息可能会变化,因此在参加考试前,要经常查看Sun的站点www.suned.sun.com,以了解最新的考试信息。
考生可以按任意顺序回答问题,在答完题后还可以回过头去检查答案。答错题不扣分,所以最好应该至少选择一个答案,而不要什么都不选。
一种较好的考试策略是先浏览一遍全部的考题,将能够马上给出答案的考题全部回答完毕。然后,再回过头来做其他题目。因为解答某个问题的过程,可能对如何回答以前的题目有所帮助。
对于代码样例要特别小心。首先要检查语法错误——计算波形括号(花括号)、分号和圆括号的数量,然后要保证左右括号一一对应。在尝试判断出代码功能之前,要注意字母大小写错误及其他语法错误。
考试中有很多题目都与语法有关,所以为了通过考试,必须对Java语言有深刻的理解。
备考提示
首要的是,要保证有充足的学习时间。Java是一种复杂的编程语言,不能指望在很短的时间内就能掌握所有必要的内容。最好能先花一段时间学习一部分内容,然后将所学到的知识付诸实践。可以制订自己的学习时间表并坚持它,但要注意合理安排学习计划,尤其在边工作边学习的情况下,不要对自己施加过多的压力。
准备认证考试的一种简单办法是保证每天学习15分钟。每天至少要保证有15分钟的学习时间,这会积少成多。如果今天无法专心学习,那么可以在学习15分钟后就停止。如果今天你的时间完全可自由支配,则学习时间可以长一些。只要这种可“自由支配”的日子越多,通过考试的机会就越大。
在准备程序员考试时,强烈建议使用记录卡。记录卡就是大小为3 cm×5 cm或4 cm×6 cm的索引卡,卡片正面是问题,背面是答案。学完一章后,可以将一些你认为有必要多练习或需要熟记的东西记在这些卡片上。利用这样的卡片,可以阅读考题,思考答案,之后再把卡片翻过来看你的答案是否正确。或者,也可以让另一个人拿着卡片,并将记录问题的一面朝向你,然后验证你的回答是否正确。许多学生都发现这些卡片特别有帮助,尤其是因为它们易于携带,所以可以随时随地学习。但是最好不要在开车时看它们——红灯时除外。我们就曾带着卡片到医院、饭店、剧院等你可以说出的任何地方。
认证考试学习小组是另一个极好的资源。JavaRanch.com上的Big Moose Saloon认证论坛是可以找到的最大、最具影响力的社区。如果在学习本书时遇到问题,或者有其他任何解决不了的考试问题,可在这个论坛上将问题贴出来,几乎总是能在一天或几小时之内得到答案。你会发现我们(作者)每星期都会多次登录这个论坛,以帮助那些刚刚开始备考之旅的人。(当你准备参加考试的那一刻,就不会认为这是一次令人愉快的“旅行”了。)
最后,建议你要编写大量的小Java程序!在编写本书之际,我们编写了数百个小程序,如果你询问那些最优秀考生的经验(你知道,他们就是那些答对了98%题目的考生),他们几乎总会告诉你,他们在备考时编写了大量的代码。
申请考试
参加Sun考试的考生要直接向Sun公司交费,但申请考试需要通过Sylvan Prometric公司。对于美国以外的考生,可以通过Sylvan的Web站点http://www.2test.com找到所在地的电话号码。Sylvan的代理机构可以为你申请考试,但它们不提供认证规划方面的信息。有关认证的问题由Sun的Worldwide Training department(全球培训部)管理。这些代理机构非常熟悉这些考试,只要说出名称,他们就能找到对应的考试。但是当你打电话联系时,最好告知具体的考试号。毕竟,你不想让你的考试申请出错并为此付费。
考试可以提前一年申请,但实际上没有这个必要。一般情况下,提前一两周申请就行了,这足以预备你希望的考试日期和时间。当申请考试时,操作员会在你所在的区域搜索考试中心。为方便起见,他们也会告诉你以前曾去过哪些考试中心。
注册考试时,要求你提供ID号。这个号码用于将你的考试成绩发送回Sun公司。每次注册时,请务必使用同一个ID号,以便Sun能跟踪你的认证过程。Sun将使用你第一次注册时提供的地址信息来邮寄证书和其他相关资料。在美国,通常使用社会安全号(Social Security Number)作为ID号。但是,如果你不愿意使用社会安全号,Sylvan公司可以为你分配一个唯一的ID号。
到达考场
与参加任何考试一样,考试前夕可能都会临时抱佛脚。千万别这样,这时你应该已经熟悉了所学的知识,如果早上迷迷糊糊,则会记不起已经学过的知识。考试前夜应当睡个好觉。
应提前到达考场,这样可以有时间放松一下,并回顾关键的内容。可以利用这个机会复习一下笔记。当你复习完毕时,通常可以提早几分钟开始考试。考试迟到是不受欢迎的,因为可能会取消考试资格,或者没有足够的时间完成考试。
到达考试中心后,应当向监考人员签到,签到时需提供两种证件。可使用的证件包括政府颁发的证件(如护照或驾照)、信用卡以及公司的ID证件,ID证件必须带有照片。这样做只是为了确保不出现替考行为。
除了带上满脑子里的知识外,不需要带任何其他东西进人考场。事实上,差不多也只有大脑才允许带人考场!所有的考试都是闭卷的,这表示不能随身携带任何参考资料,也不允许带任何笔记进入考场。监考人员会提供纸和铅笔,有些考试中心还可能提供小的记号板(我们建议你不应满足于一块白板)。真的要建议你带上一瓶水,要在长达3小时的时间里保持大脑活跃,足够的水有利于大脑思维。
要把寻呼机(不知道有谁还在用它——译者注)和移动电话留在汽车里,或者将它们关机。这些东西只会增加紧张气氛,因为考场内不允许带人,有时在考场外响铃时,它们仍然能够听得到。在进入考场前,必须将钱包、书本以及其他资料留在监考人员那里。
一旦进入考场,监考人员会对你的考试进行登记,而你必须检查ID号和考试号是否正确。如果你是第一次参加Sun考试,则可以选择一个简短的考试软件教程。在考试开始前,会向你提供一些有关考试的信息,包括考试时间、考题数量和通过分数等。在考试真正开始前,可能要求你填写一份简短的调查表,它会询问你的Java经验达到了何种水平。填写调查表的时间不会计算在实际的考试时间内,但即使你很快就填完了它,也不会获得更多的考试时间。还要记住,考题不会根据你回答调查表的情况而有所改变。一旦完成了调查表,就开始实际计时,考试开始了。
考试软件基于Windows,但你无法访问主桌面和任何附件。考试是以全屏幕方式显示的,每屏一道考题。导航按钮允许你前后切换考题。在屏幕的右上角,有一个计数器显示考题数和剩余的时间。最重要的是,在屏幕的左上角有一个Mark复选框——这是考试中的一个重要工具,下一节将介绍它的用法。
考试技巧
如果不讲究策略,则考生会被弄得不知所措,或者白白浪费考试时间。对于大多数考生而言,如果对考试内容熟悉,则考试时间是很充裕的。关键是不要为某个具体问题而浪费太多的时间。
显而易见,考生应该正确而快速地回答问题,但其他因素可能会分散注意力。针对如何更高效地应付考试,以下是几个技巧。
估计难度
首先,快速浏览一遍考试中的全部考题。对其中容易回答的部分,立即做出解答。简单地阅读每道考题,注意考题的类型和主题。作为准则,这一过程所花费的时间不应超过考试时间的25%。
这一步可以评估考试的范围和难度,有助于决定如何分配时间,也能让考生对从哪里找到某些问题的潜在答案有所了解。有时,一个问题的陈述可能为另一个问题提供线索,或者能将考生引入对另一个问题的思考中。
如果对某个问题的回答不是十分有把握,则无论如何都要回答它,但要选中屏幕上的Mark复选框,以备今后复查。如果用完了考试时间而无法再复查答案,则至少已经提供了“第一猜测”的答案,而不是让其空着。
其次,根据第一遍快速浏览题目得出的结论,回头再做全部考题。例如,如果整个考试看起来较难,则会知道最好在每道考题上花费一分多钟或两分钟的时间。可以根据小的转折点建立一个进度表——例如,“需要每25分钟回答10个问题”。
在这一阶段,跳过要花费很多时间的考题是一个好办法,可将这些题目留下标记,等待下一个阶段完成。这一阶段最好占用考试时间的50%~60%。
第三,回头检查用屏幕上的Mark复选框做了标记的全部考题,可使用问题回顾(question review)屏幕上的Review Marked按钮。这一步包括要再次查看在前面的步骤中没有把握的考题,以及比较耗时尚未解答的考题。将这些问题一一解决,直至所有问题都已得到回答。
如果在这一步骤中你已经对前面做过标记的问题有所把握,则现在可清除Review Marked按钮的标记。否则,应继续保留标记。接下来就可以解答那些耗时的问题,尤其是那些需要手工计算的问题。如果对答案已经满意,就清除它们的标记。
这一步结束时,除了不能确定答案是否正确的考题外,你已经解答完了试卷中的所有问题。如果没有时间进入下一步,则至少不会因为没有回答问题而丢分。如果此时你还有10%~20%的剩余时间,则对你很有利。
复查答案
现在你已经进入“巡航”阶段了!你已经解答完了所有的问题,准备进行一次质量检查。要再次(没错,是又一次)全面浏览一遍整个考题(尽管你可能想跳过拖放题的复查),快速地重新读一遍每个问题以及你的答案。
要认真地再次查看考题,找出带有欺骗性的那些。特别要小心那些包含“Does not compile”选项的考题。不要放过最后的线索。此时,你已经对每道题相当熟悉了,可能会发现一些先前被忽略的线索。
终场演奏
当你对所有答案都充满信息时,就可以提交试卷结束考试,等待分数。在似乎是你一生中最长的10秒钟以后,考试软件将用你的成绩进行响应。考试结果通常是条形图形式,显示通过分数、你的分数以及PASS/FALL(通过/失败)标志。
如果想看个究竟,这时可以查看你的分数统计。考试软件不会显示具体考题的答案,但是考题会被分门别类,并按类别统计分数结果。这些细节也会自动在监考人员桌面的报告中打印出来。
当你离开考场时,要将草稿纸留下,或者将它交给监考人员(有些考试中心会记录发给你的纸张数量,因此一定要交回全部的草稿纸)。作为交换,你会得到一份考试报告的副本。
这份报告会加盖考试中心的印章,所以应妥善保管。通常情况下,考试结果会自动传给Sun公司,但偶尔也可能需要这份书面报告来证明你已经通过了考试。
几周后,Sun公司将给你邮寄一个包裹,里面包含一张精美的证书、一个像章和一封信。你还会得到一份说明,解释如何获得徽标图案,以用在个人名片中。
重新考试
如果考试失败,不要灰心,要好好总结经验,准备再试一次。要认识到你比以前有了更多的知识,对考试形式有了更多的了解,而考试结果报告说明了你在哪些领域需要加强。
如果马上回忆刚刚参加过的考试,则很可能会记起一些答错了的考题,这将有助于你今后将学习重点放在正确的地方。
最后要记住,正是因为Sun认证考试难以通过,所以该认证才有价值。毕竟,如果任何人都能轻松得到这张证书,那么还有什么价值可言?最后,参加这项认证考试需要保持良好的学习态度,进行大量的学习,但你一定能做到!...