甲骨文大赛校内测试题(含答案)
甲骨文程序设计大赛试题
姓名: 专业班级:
一、单项选择题:
1. Map>map;
请问以下哪个赋值语句会出错?(D )
A 、map=new HashMap( );
B 、map=new HashMap>( );
C 、map=new HashMap>( );
D 、map=new LinkedHashMap>( );
2. 代码片段:
public class Certkiller3 implements Runnable {
public void run( ) {
System.out.print("running");
}
public static void main(String[ ] args) {
Thread t = new Thread(new Certkiller3( ));
t.run( );
t.run( );
t.start( );
}
}
运行结果是(E )。
A 、编译出错 B 、运行时抛出异常 C 、代码正常执行并且输出:running
D 、代码正常执行并且输出:runningrunning
E 、代码正常执行并且输出:runningrunningrunnng
3. 代码片段:
public class Test {
private int a;
public int b;
protected int c;
int d;
public static void main(String[ ] args) {
Test test = new Test( );
int a = test.a++;
int b = test.b--;
int c = test.c++;
int d = test.d--;
System.out.println(a + " - " + b + " - " + c + " - " + d);
}
}
下列哪个说法是正确的?(C )
A 、编译错误,因为变量a,b,c 和d 没有被初始化 B 、编译错误,因为变量a 无法被访问
C 、编译成功并输出0–0–0–0 D 、编译成功并输出1 - - 1 – 1 - - 1
4. 代码片段1:
public class ComplexCalc {
public int value;
public void calc( ) { value += 5; }
}
代码片段2:
public class MoreComplexCalc extends ComplexCalc {
public void calc( ) { value -= 2; }
public void calc(int multi) {
calc( );
super.calc( );
value *= multi;
}
public static void main(String[ ] args){
MoreComplexCalc calc = new MoreComplexCalc( );
calc.calc(3);
System.out.println("Oh it is: " + calc.value);
}
}
请问编译运行结果是 ?( A )
A 、Oh it is: 9 B 、编译出错 C 、Oh it is: 15 D 、Oh it is: -6
E 、代码正常执行但没有输出 F 、运行时抛出异常
G . 、Oh it is: 6 H 、Oh it is: -15
5. 代码片段:
void waitForSignal( ){
Object obj=new Object( );
synchronized(Thread.currentThread( )){
obj.wait( );
obj.notify( );
}
}
以下哪个描述是正确的?( A )
A 、需要处理InterruptedException
B 、代码能编译但可能运行时抛出IllegalStateException
C 、运行10分钟后代码抛出TimeOutException
D 、需要把obj.wait( )替换为((Thread)obj).wait( )后代码才能通过编译。
E 、把obj.wait( )和obj.notify( )这两句调换一下位置,能使代码执行。
6. 代码片段:
contestKiller=new ReallyBigObject( );
//这里省略部分代码
contestKiller=null;
/*在这里补充代码*/
以下哪一项的代码是告诉虚拟机尽最大的能力去回收contestKiller 这个对象所占用的内存?( B )
A 、Runtime.getRuntime( ).freeMemory( ) B 、Runtime.gc( )
C 、System.freeMemory( ) D 、Runtime.getRuntime( ).growHeap( )
7. 代码片段:
public void aSafeMethod(Object value){
//在这里检查方法的参数
//这里省去其他的代码
Sytem.out.println(value.toString( ));
}
代码中的方法要求传入的参数是非空的,请问有什么比较好的方式去处理一个空值?(B )
A 、assert value=null;
B 、if(value==null){throw new IllegalArgumentException(“value can not be null”);}
C 、if(value==null){throw new AssertionException(“value can not be null”);}
D 、assert value !=null :”value can not be null”;
8. 代码片段:
package certkiller;
class Target{
p ublic String name=”hello”;
}
哪些类能够直接访问并且改变name 这个变量的值?( A )
A 、任意类 B 、只有Target 这个类 C 、certkiller 包下的类 D 、Target 的子类
9. 代码: String text="Welcome to Java contset";
String[ ] words=text.split("\s");
System.out.println(words.length);
请问编译运行的结果是什么?( D )
A 、0 B 、1 C 、4 D 、编译出错 E 、运行时抛出一个异常
10. 代码: String[ ] elements={ "for","tea","too" };
String first=( elements.length > 0 ) ? elements[0] : null ;
以下哪个是正确的结果?(D )
A 、编译失败 B 、运行时抛出异常 C 、first 的值被设为null D 、first 的值被设为“for ”
11. 代码片段: System.out.format("Pi is approximately %d.", Math.PI);
请问执行的结果是什么?(D )
A 、编译出错 B 、Pi is approximately 3.
C 、Pi is approximately 3.141593. D 、运行时抛出异常
12. 代码:public class Test {
public Test( ){
System.out.print("test ");
}
public Test(String val){
this( );
System.out.print("test with "+val);
}
public static void main(String[ ] args){
Test test=new Test("wow");
}
}
请问编译运行的结果是什么?( B )
A 、test B 、test test with wow C 、test with wow D 、编译失败
13. 代码片段:
public class JavaContest {
public static void fun(short n){ System.out.print("short "); }
public static void fun(Short n){ System.out.print("SHORT "); }
public static void fun(Long n){ System.out.print("LONG ");}
public static void main(String[ ] args){
Short y=0;
int z=y;
fun(y);
fun(z);
}
}
请问编译运行的结果是什么?( C )
A 、short Long B 、SHORT LONG C 、编译出错 D 、运行时抛出异常
14. 如下代码:
public static void main(String[ ] args){
method1(1,2);
System.out.print(" java"); }
public static void method1(int x1,int x2){
System.out.print("hello"); }
public static void method1(int x1,int x2,int x3){
System.out.print("hi");
}
}
请问编译运行的结果是什么?( A )
A 、hello java B 、编译失败 C 、hi java D 、hellohi java E 、hihello java
15. 代码:public class Person {
private String name;
public Person(String name) { this.name=name; }
public boolean equals(Person p){ return p.name.equals(this.name); } }
哪个选项的描述是正确的?( C )
A 、equals 方法没有正确覆盖Object 类中的equals 方法
B 、编译这段代码会出错,因为第五行的私有属性p.name 访问不到。
C 、如果要与基于哈希的数据结构一起正常地工作,只需要在这个类中再实现hashCode 方法即可。
D 、当添加一组Person 对象到类型为Java.util.Set 的集合时,第四行中的equals 方法能避免重复。
二、多项选择题:
16. 给出一个尚未使用泛型的方法:
11. public static int getSum(List list){
12. int sum=0;
13. for(Iterator iter=list.iterator( ) ; iter.hasNext( ) ; ) {
14. int i=((Integer)iter.next( )).intValue( );
15. sum+=i;
16. }
17. return sum;
18.}
为了使用泛型,需要对代码做一下那三项改动?( ACF )
A 、删除第14行 B 、第14行替换成int i=iter.next( );
C 、将第13行替换成for(int i:intList){
D 、将第13行替换成for(Iterator iter: intList)
E 、方法的参数声明改为getSum(List intList)
F 、方法的参数声明改为getSum(List intList)
17. 代码片段:
public Sudo { public void crazy(String s); }
请问以下哪些选项中的类定义是正确的?( BC )
A 、public abstract class MySudo implements Sudo{
public abstract void crazy(String s){ }
}
B 、public abstract class YourSudo implements Sudo{}
C 、public abstract class HerSudo implements Sudo{
public void crazy(String i){ }
public void crazy(Integer s){ }
}
D 、public class HisSudo implements Sudo{
public void crazy(Integer i){ }
}
E 、 public class ItsSudo extends Sudo{
public void crazy(Integer i){}
}
18. public class Test {
public static void main(String[ ] args){
int i=3,j;
outer: while(i>0){
j=3;
inner: while (j>0){
if(j
System.out.println(j+" and "+i);
j--;
}
i--;
}
}}
请问哪些选项的内容会出现在输出中?(AE )
A 、3 and 3 B 、3 and 2 C 、3 and 1 D 、3 and 0 E 、 2 and 3
19. 如下代码:
import java.io.*;
class Directories {
static String[ ] films={"sora","shu"};
public static void main(String[ ] args){
for(String fp : films){
//在这里插入第一句代码
File file=new File(path,args[0]);
//在这里插入第二句代码
}
}
}
有一个文件夹,他有2个子文件夹,分别是“sora ”和“shu ”,“sora ”里面有只名为“aoi.txt ”的文件,“shu ”里面只有名为“qi.txt ”的文件。
在此文件夹下以执行以下命令:
java Directories qi.txt
输出结果是:“false true”.
请问把以下哪些选项的代码分别插入到上面代码中能达到此效果?( AC )
A 、//第一句代码
String path=fp;
//第二句代码
System.out.print(file.exists( )+””);
B 、//第一句代码
String path=fp;
//第二句代码
System.out.print(file.isFile( )+””);
C 、//第一句代码
String path=File.separator+fp;
//第二句代码
System.out.print(file.exists( )+””);
D 、//第一句代码
String path=File.separator+fp;
//第二句代码
System.out.print(file.isFile( )+””);
20.
A 、long n1=12_3_45___789;
B 、long n2=__123_45_678_9;
C 、int n3=0xFc_aB_C3_353;
D 、double n4=0b11001_001_0_0_11;
E 、float n5=1.4_142_13;
F 、float n6=0_1_2_3;
三、编程题:
21. 写一个名叫Square 的类用于求一个数的平方。类里面提供两个静态方法,名字叫square 。其中一个方法的参数和返回值都是long 类型,另一个方法的参数和返回值是
double 型。
22. 给出以下接口HelloWorld ,请编写一个类MyHelloWorld 实现该接口,并满足接口中所要求的功能。
给定如下的代码:
public interface HelloWorld {
} /** * 返回name+" say:hello world!". */ String sayHelloWorld(String name );
请您写出一个类名为MyHelloWorld 的类,要求满足题意。
23. 给出如下shape 类,请实现一个共有类Rectangle ,满足以下要求:
1. 继承于Shape ,实现Shape 所规定的功能
2. 有int 类型的width 和height 属性(宽和高)及相应的getter 和setter
3. 有一个带两个int 参数的共有构造方法,第一个参数用于设置宽,第二个参数用于设置高 给定如下代码:
public abstract class Shape {
/*
* 计算形状的面积
*/
abstract public int getArea( );
}
请写出一个类名为Rectangle 的类,要求能满足题意。
24. 在某软件公司里,小蔡接到上头的一个任务:某位离职的员工留下了一个接口IList ,但是该接口的实现类的源码却已丢失,现在需要为该接口重新开发一个实现类MyList 。 下面提供了IList
接口的代码。
要实现的MyList 类是一个公有类,里面需要提供一个公有无参构造方法MyList( ),用于创建一个空的(不含任何元素的)IList 。
请你帮小蔡写出这个实现类的代码。
(注意:若要使用java.lang 包之外的类,请别忘了import
,竞赛时将不会有此提醒) /**
* 精简的列表(List ),用于存储一系列的元素(对象)。
* IList里面存储的元素会按插入的顺序排放,也能根据下标获取这些元素。下标从0开始。
*/
public interface IList {
}
请你写出MyList 类,要求能满足题意。 /** * 往列表的尾部增加一个元素 */ void add(Object elem ); /** * 获取下标所指定的元素。当下标越界时抛出java.lang.IndexOutOfBoundsException */ Object get(int index ); /** * 获取列表里当前元素的个数 */ int size( ); /** * 清空列表,移除列表里的所有元素 */ void clear( );