自测一下你的Java掌握得怎么样?

来源:互联网 发布:为什么网络喷子那么多 编辑:程序博客网 时间:2024/04/30 01:47

自测一下你的Java掌握得怎么样?

 

====================================================================

注:

 

以下是我为北京理工大学计算机学院2008级学生设计的Java试题,感兴趣的朋友不妨自我测试一下,看看你能得多少分。

 

目前我正在批改学生的试卷,此工作完成后,过几天我会发布试题点评以及对考试结果的分析,其中会有一些比较值得关注的东西。

 

                                                                                                                    金旭亮

 

建议朋友先自己做,然后,点击以下链接看:

 

本套试题参考答案及点评

 

另外,CSDN的博客存在着不少BUG,如果使用FireFox浏览此网页,可能看不到网页上的试题,换用IE就好了。

 

====================================================================

 

北京理工大学计算机科学技术学院 20102011学年第一学期

Java技术与应用考试试题(A)

班级         学号           姓名           成绩   _      

 

说明:

       1)本次考试为开卷考试,允许学生携带相关的书籍及其他纸面资料,但不

         得使用计算机、智能手机等电子设备。

       2)考试时间为2小时。

       3)简答题和编程题写在试卷后所附的答题纸上,标明题号。

       4)特设卷面整洁分,凡卷面不整洁导致代码及文字难于识别者,扣除5

       5)部分题目没有标准答案,只要言之成理,均可给分。

 

*******************************************************************************

 

一、判断题(正确的描述打钩,错误的打叉,每题1分,共10分)

 

1.       一个Java源文件中只能定义一个公有类,并且类名必须与文件名一致。(   

 

2.       通过在程序中引入“import javax.swing.*;”语句,就可以使用javax.swing包中的所有类(包括其嵌套的子包中的类)。    

 

3.       J2SE的功能是J2ME的一个子集。(   

 

4.       Java字节码只有被装入到内存中之后,才能被执行。(   

 

5.       Swing是一套GUI组件,采用了新的思路设计Java应用程序的界面,它完全地替换掉了原有的AWT。(   

 

6.       在编程时编写过多的注释,会使编译之后生成的程序文件变大。(   

 

7.       Java Applet可运行于浏览器中,这意味着浏览器本身就可以直接执行Applet程序。(   

 

8.       JDK 5.0增加的枚举类型(enum)是一个原始数据类型。(   

 

9.       Java规定所有的方法都必须放到某个类中,不存在独立于类的方法。(   

 

10.    面向对象软件系统设计师们经常用到的UML是一种编程语言。(   


 

二、简答题(请将答案写到答题纸上,注明题号。每题4分,共40分)

 

1.       现代编程语言有很多种分类方法,以下是我们常见的一种划分方法:

       1编译型编程语言:比如C,程序源码必须经过编译才能运行;

       2解释型编程语言:这种类型的语言(比如早期的Basic)通常都拥有一个交互环境,用户输入一句代码计算机就执行一句代码。

       Java属于上述哪种类型?如果你认为Java不属于上述任何一种类型,那么它是不是属于另外一种编程语言类型?

 

2.       Java中有两个关键字:voidnull,它们有什么区别?

 

3.       简述类(class类库(class library)”包(package“jar文件这四个概念间的联系。

 

4.       面向对象的程序在运行时会创建多个对象,这些对象之间通常可以相互发送消息,谈谈你对对象之间发送消息这句话的理解,并编写几句Java示例代码展示对象之间发送消息的具体编程实现方法。

 

5.       加法运算符“+”可以施加于原始数值类型(比如int)的变量,但我们发现一些对象类型(比如Integer)的变量,也支持“+”运算:

 

    Integer v1 = 100;

    Integer v2 = 200;

    System.out.println(v1 + v2);  //输出:300

 

       这看上去好象Integer类型重载了“+”运算符,一些编程语言比如C++可以重载运算符,但Java本身并不支持这一特性。依你的理解或猜测,Java采用什么方法处理两个Integer对象直接+的语句?

 

6.       在一个很大的循环(比如循环100000次)中,如果需要进行大量字符串的连接操作,通常人们会使用StringBuffer(或StringBuilder)而不是String类型,请解释这么做的理由。

 

7.       现有两个长度不同的数组:

 

    int[] arr1 = new int[10];

    int[] arr2 = new int[100];

   

    那么以下语句能通过编译吗?

 

    arr1 = arr2;

 

    如果你认为可以通过编译,得到这个结论的依据是什么?如果不能通过编译,你认为其原因是什么?

8.  请看以下代码

 

    double d1 = 100.1;

    double d2 = 1001/10;

    System.out.println(d1 == d2); //输出false

 

       明明d1d2是相等的为什么程序运行时会输出一个让人意外的结果false

 

9.       当使用多个catch语句捕获多个异常时,Java规定捕获Exceptioncatch语句必须排在最后,如下所示:

 

    try { …… }

    catch(ClassCastException ex){……}

    catch(NumberFormatException ex){……}

    catch(Exception ex){……}  //此句必须放在最后!

 

    为什么会有这个限制?谈谈你的理解。

 

10. 请看以下示例代码:

 

    String s1 = "Hello";

    String s2 = "Hello";

    System.out.println(s1== s2);  //输出:true

 

    String s3 = new String("Hello");

    String s4 = new String("Hello");

    System.out.println(s3== s4);  //输出:false

 

       请解释一下为什么上述代码中“System.out …”两句代码输出完全不同的结果

 

编程题(共50分)

 

说明:

       1)编程题共分为两组:简单编程题与综合编程题。

       2)请在试卷后所附的答题纸上书写程序代码,注明题号。

       3)要求代码书写规范,并添加相应的注释。

 

1部分:简单编程题(每题5分,共35分)

 

1.       编写一个程序,用户输入任何一个字符串之后,反转输出其结果。其运行结果如下所示:

       请输入一个字串:我在学习Java程序设计

       您输入了:计设序程avaJ习学在我

 

 

2.       编写一个方法,它接收一个int数组作为参数,外界只需调用一次这个方法,可以马上得到这个数组的最大值、最小值和平均值信息。

 

3.       请编写一个方法,其声明如下:

 

     public static int[]getRandomizeNumbers(int begin, int end, int count)

 

     此方法将生成一个数组,包容count[begin,end)范围内的随机整数.

 

4.       数学中,一个复数包容着一个实部(Real)和一个虚部(Imaginary)。请设计一个Complex类,它的实例代表一个复数,并且用户可以这样使用它:

 

     //创建一个实部为3,虚部为4的复数

    Complexobj = new Complex(3,4);

    //Complex对象具备按照数学中复数的习惯表示形式输出的能力。

    System.out.println(obj);  //输出:3+4i

 

5.       ABC是三个类,它们之间有着以下的组合关系( 1):


 

1

 

       请编写一个示例程序,这个程序可以完成对A对象的深复制(deep copy)。

 

6.       我们可以调用Integer.parseInt()方法将一个字串转换为int类型,但当要转换的字串不是一个有效的数字时(比如“a123”),此方法会抛出一个NumberFormatException

你需要编写一个程序,当程序运行时让用户从键盘上输入一个字串,代表考试成绩,然后调用Integer.parseInt()方法将其转换为int类型,并给出是否通过的提示:

       请输入您的考试成绩:76

       恭喜您通过了考试!

       由于无法控制用户的输入,因此可能出现以下两种出错情况:

(1)     用户输入了一个无法转换为int类型的字符串。

(2)     用户输入的数字不在[0,100]区间内。

       请设计一个自定义的异常类InvalidScoreException,当出现上述出错情景时能抛出此异常对象。要求程序运行时,对用户的错误输入能给以明确的提示。

 

 

7.   设计一个类,实现以下的状态机(2):


 

2

 

       提示:

       2 说明,当使用new关键字创建此类对象时,对象居于Created状态(这是初始状态),这时,调用对象的open()方法,对象转换到Opened状态,再调用对象的close()方法,对象转入“Closed”状态,这是终止状态。

 

       2部分: 综合编程题(15分)

 

       一个图书管理系统的面向对象设计方案如 3所示:



 

3

 

       Book代表书,有“Name(书名)“Author(作者名)“Price(单价)“IsBorrowed(是否被借出)四个属性。


       Library代表图书馆,其内部字段books用于保存图书馆中所有的书。它的FindBook()方法依据书名查找同名的书(可能有多本)。另一个GetAllBooks()方法获取馆藏所有书的详细信息。


       Reader代表读者,Name字段代表其姓名,读者可以“ReturnBook(还书)“BorrowBook(借书)


       请编程完成以下工作:


1.             Java编程实现上述3个类。(12分)


2.             main()方法内书写以下测试代码:(3分)

(1)     创建一个Library类的实例myLittleLibrary,其中预存有以下3本书:

              Java程序设计,张三著,45

              Java核心技术,李四著,50

              Java程序设计,王五著,38

(2)     显示图书馆中所有图书的信息,输出样例如下:

              Java程序设计,张三著,45元,可借

              Java核心技术,李四著,50元,可借

              Java程序设计,王五著,38元,未还

(3)     创建一个Reader类的实例oneBeautifulGirl,她先在myLittleLibrary中查找《Java程序设计》

(4)     oneBeautifulGirl借了张三著的那一本书。现在显示图书馆中所有图书的信息.

(5)     oneBeautifulGirl把书还了,再次显示图书馆中图书信息。

 

注意:

       在满足题目要求实现功能的前提下,你可以依据自己的考虑修改系统设计方案(比如给某个类添加或修改类的方法,甚至是添加新的类)。