`

java面试题目(2)

 
阅读更多

75.What might form part of a correct inner class declaration or combined declaration and instantiation? 
A. private class C 
B. new SimpleInterface(){ 
C. new ComplexInterface(x){ 
D. private final abstract class( 
E. new ComplexClass() implements SimpleInterface 

76. Which statements are true about the garbage collection mechanisms? 
A. The garbage collection mechanism release memory at pridictable times. 
B. A correct program must not depend upon the timing or order of garbage collection 
C. Garbage collection ensures that a program will NOT run out of memory during execution 
D. The programmer can indicate that a reference through a local variable is no longer going to be used. 
E. The programmer has a mechanism that explicitly and immediately frees the memory used by Java objects.





==================================================== 
答案及详细分析: 
1。B、E 
JAVA的垃圾回收机制是通过一个后台系统级线程对内存分配情况进行跟踪实现的,对程序员来说是透明的,程序员没有任何方式使无用内存显示的、立即的被释放。而且它是在程序运行期间发生的。 
答案B告诉我们程序员可以使一个本地变量失去任何意义,例如给本地变量赋值为“null”;答案E告诉我们在程序运行期间不可能完全释放内存。 
2。D 
第6行将null赋值给a以后,a以前保存的引用所指向的内存空间就失去了作用,它可能被释放。所以对象a可能最早被垃圾回收是在第7行以前,故选择D选项。 
3。B 
请查阅JAVA类库。getID方法的返回值是“event type”。在认证考试中,总会有类似的书本以外的知识,这只能靠多实践来增长知识了。 
4。A、D 
控件可以同时使用多个“addXxxxListener”方法加入多个监听器。并且当多个监听器加入到同一控件中时,事件可以响应多个监听器,响应是没有固定顺序的。 
5。D、F 
本题主要考察考生对流程控制的掌握情况。这是当型循环,条件为真执行,条件为假则退出。循环体至少执行一次,故会输出D。循环体以外的语句总会被执行,故输出F。 
6。B.C 
在开关语句中,标号总是不被当做语句的一部分,标号的作用就是做为条件判断而已,一旦匹配成功,就执行其后的语句,一直遭遇break语句为止。(包括default语句在内) 
7。D、F 
IOException异常类是Exception的子类。根据多态性的定义,IOException对象也可以被认为是Exception类型。还要注意在方法声明中抛出异常应用关键字“throws”。 
8。D 
只有两种情况:大于4时输出“Test1”,小于等于4时输出“Test3”。 
9。A、C、D 
在正常情况下,打印Test1、Test3、Test4;在产生可捕获异常时打印Test2、Test3、Test4;在产生不可捕获异常时,打印Test3,然后终止程序。注意finally后面的语句总是被执行。 
10。B 
线程的执行是从方法“run( )”开始的,该方法是由系统调用的。程序员手工调用方法start(),使线程变为可运行状态。 
11。A 
此题考查内部类及关键字“super”的用法。内部类不能与外部类同名。另外,当B继承A时,A中的构造函数是带参数的,B中缺省构造函数的函数体为空;而JAVA编译器会为空构造函数体自动添加语句“super();”调用父类构造函数,更进一步是调用父类的参数为空的构造函数。而父类中没有参数为空的构造函数。 
12。A 
此关键字可以在两个线程同时试图访问某一数据时避免数据毁损。 
13。C 
当一个类中未显式定义构造函数时,缺省的构造函数是以类名为函数名,参数为空,函数体为空。虽然父类中的某一构造函数有字符串参数s,但是子类继承父类时并不继承构造函数,所以它只能使用缺省构造函数。故在第11行出错。 
14。A、B 
注意,题中问的是如何正确声明一个一维数组,并非实例化或者初始化数组 
15。A、E 
X处可以是一个输入,包的定义,类的定义。由于常量或变量的声明只能在类中或方法中,故不能选择C;由于在一个文件中只能有一个public类,故不能选择D。 
16。B 
静态方法除了自己的参数外只能直接访问静态成员。访问非静态成员,必须先实例化本类的一个实例,再用实例名点取。 
17。A、B、D 
polygon的顶点信息存放在Vector类型的对象内部,color定义为Color,length和width定义为int。 
注意,这是考试中常见的题型。 
18。C 
此题考点是高级访问控制。请考生查阅高级访问控制说明表格。 
19。B 
native关键字指明是对本地方法的调用,在JAVA中是只能访问但不能写的方法,它的位置在访问权限修饰语的后面及返回值的前面。 
20。final 
定义常量的方法是在变量定义前加final关键字。 
21。D 
main()方法没有返回值,所以必须用void修饰。main()方法的返回值不能任意修改。 
22。B 
main()方法的参数是字符串数组,参数名可以任意定义。 
23。public class Employee extends Person 
这也是真实考试中常见的一种题型。要注意题目叙述中“is a”表示 “extends”的含义。 
24。A、B、C 
考察的知识点是方法覆盖,其中要注意的是方法覆盖时,子类方法的访问权限不能小于父类方法的访问权限。另外,选项A并不是父类构造函数,它是子类中的新方法。 
25。A、B 
考察“==”及方法“equals()”的用法。注意以下几点区别: 
1) 引用类型比较引用;基本类型比较值。 
2) equals()方法只能比较引用类型,“==”可比较引用及基本类型。 
3) 当用equals()方法进行比较时,对类File、String、Date及封装类(Wrapper Class)来说,是比较类型及内容。 
4) 用“==”进行比较时,符号两边的数据类型必须一致(可相互转换的基本类型除外),否则编译出错。 
26。A、C、E 
考察的知识点是比较基本类型与对象类型的不同之处,基本类型进行的是值比较,而对象类型进行的是地址比较,也就是对指向它们内存地址的指针进行比较。 
27。E 
在程序中实现字节与字符转换时,采用规范“ISO8859-1”是最适宜的方式。 
28。B、D、E 
移位操作只对整型有效,故不能选A;String类型并非数组,故不能用C所示方法取其中的某一位;B中的length方法返回字符串长度;D中trim方法返回字符串去掉其前后的空格后的新字符串;字符串可以用“+”进行合并。 
29。E 
回答本题时要细心阅读程序,注意“void Mistery(){}”并非构造函数,因为构造函数是没有返回值时,它只是与类名一致的方法名而已。注意到这一点,此题就没有什么难度了。 
30。C、D 
考察对布局管理器知识的掌握情况。BorderLayout的特性是当容器的尺寸改变时,North、South、West、East位置控件的较窄边长度不变,较长边长度变化。但控件的相对位置不变。 
31。A 
FlowLayout的特性是其中的控件大小不随着容器尺寸的变化而变化,但控件的相对位置会有所改变。 
32。A(多选) 
请注意,此题虽然是多选题,但正确答案只有一个。不管在什么情况下,图形要进行重绘,最终总会调用paint()方法,而且也只有paint()方法总会被调用。 
33。A、D 
Java中的标识符是以字符开头,字符包括字母、下划线“_”、美圆符“$”。不能以数字开头,也不能是Java关键字。 
34。A、B、D、E 
注意:goto、const是Java关键字,但是不使用。 
35。D 
cs是运行时可选择的java命令的参数,类名后才是由用户指定的传入程序中的实参,并且参数是字符串类型,故E也是不正确的。 
36。C 
数组是引用类型,它的元素相当于类的成员变量,而成员变量是可以被隐式初始化的,所以数组的元素也可以被隐式初始化,int类型被隐式初始化为0,所以选择C。 
37。A 
自动变量不能被static修饰,如果将static关键字去掉,答案选择C。 
38。014 
将十进制化成八进制后在数字前加“0”。 
39。0x7 
十六进制数用在数字前加“0x”表示。 
40。B 
字符类型是用16位UniCode表示的。 
41。B 
整型数的取值范围是- 2n~2n-1,n表示各种类型的表示位数。 
42。B 
JAVA 中的参数传递全是值传递,所不同的是,对于引用类型来说,变量内部存放的是对象内存空间的引用,所以引用类型在进行参数传递时,是将引用拷贝给形式参数。所以在方法中绝不可能改变主调方法中引用变量的引用,但是可能改变主调方法中引用变量的某一属性(就象对ch[0]的改变一样)。 
43。A 
注意main()方法的参数数组是在程序运行时由系统创建的,大小已经固定了。选项C、D引用args[count]可能会导致数组指针越界异常。 
44。B 
请查阅类结构,并注意他们的继承关系。这主要考查流链知识点。 
45。B 
控件TextArea如题中的构造方法的后两个参数分别表示行、列。注意题中的关键词语“prorortional pitch”,所以不一定是5列字,但一定是5行。 
46。B 
“5”表示可以选择的项目数显示为5行,但可以拖动滑块观察其它选项。“true”表示可以多选。 
47。this(a,b); 
注意教材中提到使用this方法可以简化构造函数的编写。此时它必须放在构造函数的第一句。 
48。C、D、E 
JAVA语言中声明数组时,方括号与变量的位置关系非常灵活。 
49。A、E 
Java中大小写敏感,注意文件名是Fred.java,故B错误;Java中不支持多继承,故C错误;Java中与文件名相同的类名的访问权限一定是public,故D错误。 
50。C 
请查阅关于访问权限的表格说明。 
51。A、B 
注意,每个对象变量在未初始化前都为“null”,并不为“空”。当为“空”时,它已经被分配具体内存空间了,与“null”有本质的区别。 
52。D 
菜单控件只能添加到叫做菜单容器的特殊对象中,而且布局管理器对菜单控件不起任何作用。 
53。C 
事件监听器方法就是句柄方法,所有句柄方法的访问权限都是public,返回值类型都是void。 
54。MouseEvent 
此题是考试中常见的题型。一般来说,句柄方法的参数类型与监听器类型是匹配的,只有监听器MouseMotionListener的句柄方法的参数类型是MouseEvent,与相应监听器类型名称不匹配。 
55。B、C 
“>>” 是带符号右移,高位是“1”则补“1”,否则补“0”;“>>>”是无符号右移,又叫补零右移,不论高位是什么,都是补“0”。 
56。A、E 
注意标号的使用。另外,break表示跳出本语句块的执行,continue继续本块的执行。 
57。A 
回答此题时,要仔细阅读程序,注意到语句“if(Test4.this.flag);”有一分号,这是没有执行语句的条件语句,所以“sample()”方法总是被调用。 
58。D 
“|”是按位或运算符,先将4和7转为二进制数。转换后就是计算“100|111”,所以得到结果是“111”,转为十进制整形数是7。此题提醒考生注意,要熟悉各种运算符号的含义。 
59。C 
这是多态性的定义方式,p是父类引用指向子类对象。此时,编译器认为p是一个person,而不是man ,所以p只能实现父类的功能。但是当p调用被覆盖方法时,是指向子类中的该方法。 
60.A 
多态性的定义允许父类引用指向子类对象,但是不允许两个平等的子类有这样的操作。所以该表达式是不合法的。 
61.B 
自动变量前不能用“static”修饰。 
以下定义都是允许的: 
final Date d = new Date(); 
String [] s = {“Hello”,”abc”}; 
int i = x+4; 
所以只有B选项是正确。 
62.C、E 
所有自定义异常,在方法体中抛出了,就必须在方法声明中抛出。所以除了C选项外,E也必须入选。 
63.A、C 
逻辑运算符“&&”、“||”,在运算中有“短路”行为:例如 A&&B,如果A的值为false,则直接将整个表达式的值置为false,对B的值不加考察。而运算符“&”、“|”就没有这种行为。所以在选项A、C中,“s.length()”会导致抛出空指针异常。 
64.D 
源程序的第27行,是多态性的定义。对象b调用被覆盖方法时是调用子类中的该方法。 
65.D、E 
一个控件可以注册多个监听器,并且事件的响应没有特定的顺序。句柄方法的参数是类AWTEvent类的子类。 
66.D 
main()方法是静态方法,静态方法不能直接访问非静态成员。 
67.D 
此题考察学生对内部类属性的掌握情况。内部类可以实现接口;匿名类是内部类的一种;内部类通过各种方式可以在包含它的类的外部被访问到;内部类被定义在块中时,只能访问包含它的块的final类型变量。故选择D。 
68.C 
此题考察考生对类GridBagLayout、及类GridBagConstraints的掌握情况,请考生查阅API文档。 
69.B、C 
此题考察考生对事件处理的理解。D选项是错的,因为控件可以监听自己的事件。另外,当实现一个接口时,必须实现它内部的所有的方法,所以E选项也是错的。 
70.A 
命令行参数是紧跟在类名后面的。所以本题中参数由“cat”提供。 
71.E 
在完全封装类中,一般的定义方式是将所有的成员变量定义为“private”,而将访问这些变量的方法定义为非“private”类型,这样可以在类的外部间接地访问这些变量。所以E选项是最符合这个意思的。 
72.B 
此题考察“Collection API”的一些知识。实现接口“Set”的类内部所存储的对象是没有顺序,但是允许重复的。另请注意其它几个接口的特征。 
73.A、B、D、E 
当新线程被创建时,只是使它变为可运行状态而已,并不能使当前线程停止执行。当调用read()方法时,它与输入输出打交道,可能造成线程的暂停执行。 
74.D、E 
程序的执行完毕是以用户线程(user threads)的结束而标志结束的,与超级线程(daemon threads)无关。所以D选项是对的。E选项说明的是当不同线程对相同数据进行访问时,可能造成数据毁损。 
75.A、B 
76.B、D 
程序的代码是无法对垃圾回收进行精确控制的,程序代码与垃圾回收是相互独立的系统,并不互相影响。答案D告诉我们程序员可以使一个本地变量失去任何意义,例如给本地变量赋值为“null”;

<script id="wumiiRelatedItems" type="text/javascript"></script>
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics