Java - 中级试题 联系客服

发布时间 : 星期一 文章Java - 中级试题更新完毕开始阅读a57628d226fff705cc170a52

Java笔试题

-----------------------------------------Part I ,总计70分----------------------------------------------------

一、 单选题(共12题,每题2分,共24分)

1.下面关于Java的表述有错误的是________

A.Java中没有sizeof操作符,所有数据类型的长度都是确定的,与平台无关。 B.在Java中,局部变量不会被自动初始化,需要显式的赋初值。

C.Java中的instanceof运算符,可以判断一个对象是否属于某个类的实例。

D.一个Java文件里可以有多个public类,但Java文件名必须和包含main方法的那个public类名精确一致。

2.下面关于Java中static关键字的表述错误的是________

A.被static修饰的类成员变量在编译时由内存分配一块空间,直到程序停止运行才会被释放。 B.被static修饰的类方法只能访问其自身类未被static修饰的实例方法,而不能访问其他类的。 C.被static修饰的类方法不能使用this关键字。

D.在没有创建该类的对象时,该类中用static修饰的类方法就可以被调用。

3.下面关于Java中abstract关键字的表述有错误的是________

A.用abstract修饰不在类内实现的方法,称为抽象方法;抽象方法必须在子类派生时被重载。 B.用abstract修饰的类为抽象类;抽象类可以同时被static或final关键字修饰。 C.抽象类中不一定包含抽象方法,但包含抽象方法的类一定要声明为抽象类。 D.如果一个类被定义为抽象类,则该类不能进行实例化。

4.下面关于Java中垃圾回收(gc)的表述有错误的是_______

A.在String str1 = \中,对象\不会被垃圾回收。 B.调用Runtime.getRuntime().gc()会立即启动垃圾回收线程对当前程序进行垃圾回收。 C.调用Systmer.gc()只是提示垃圾回收器进行垃圾回收操作,但并不保证gc线程立即启动。 D.当垃圾回收器将要释放无用对象的内存时,先调用该对象的finalize()方法。

5.下面关于Java中接口(interface)的表述有错误的是________

A.在接口中定义的常量可以被多个类共享,具有public,final,static属性,可被任意类访问。 B.接口中只对方法进行声明而没有实现体,而且用分号结尾,具有public和abstract属性 C.子接口中定义了与父接口同名的常量或者相同的方法,则父接口的常量被隐藏,方法被重写 D.实现接口的类必须实现接口和其父接口中的所有方法。

6.下面哪个方法不属于String类提供的______ A.IndexOf() B.getChar2() C.replace() D.append()

7.在Java多线程中,调用下面哪种方法不会使线程进入阻塞状态?________

A.sleep() B.suspend() C.wait() D.yield()

8.下面程序被编译运行时,下面哪些描述是正确的_________。

class B{ public int f(int i){ return i+i; } public int f(int i, int j){ return i+j; } public int f(char c){ return c; } }

public class Test extends B{ public int f(int i, int j){ return super.f(i,j); } public int f(int j){ return -j; } public static void main(String[] args){ B x = new Test(); System.out.println(x.f(5,10)+\+x.f(4)+\+x.f('A')); } }

A.编译不通过,B x = new Test() 出错,类型不匹配

B.编译不通过,原因是B.f(char c),一个char类型不能直接当做int类型返回 C.编译通过,运行输出结果是15 -4 65 D.编译通过,运行输出结果是15 8 65

9.下面哪个类或接口定义了wait()、notify()、notifyAll()方法_______ A.java.lang.Thread B.java.lang.Runnable C.java.lang.Object D.java.lang.TreadGroup

10.在Java API文档中,下面的哪部分未被包括在内_______ A.类的用途的描述 B.类层次

C.父类方法的列表 D.成员变量的列表

11.下面列出的修饰符中,哪一个用来修饰方法(method)要求此方法必须显式地获得某个对象才能执行________ A.final B.synchronized C.static

D.public

12.下面的各种异常中,哪种异常在一个方法中没有声明抛出此异常时也可以在其方法体中直接抛出________

A.java.lang.ClassNotFoundException B.java.lang.Exception

C.java.lang.NullPointerException D.java.ioException

二、 多选题(共5题,每题3分,共15分)

1.下面对操作系统中线程和进程的表述有错误的是_______

A.进程是程序的运行实例,它包含内存和资源,而线程是由进程进一步派生出来的一组代码的执行过程 B.每个进程都有一个主线程,还可以建立另外的线程。进程中的线程是并行执行的,每个线程占用CPU的时间由此进程来调度。

C.进程中的所有线程共享进程的虚拟地址空间,这意味着所有线程都可以访问进程的全局变量和资源。 D.进程中的每个线程的声明周期都在该进程中,每个线程都有自己的私有虚拟地址空间。

2.下面关于HashMap与Hashtable区别的表述正确的是______ A.HashMap与Hashtable采用的hash/rehas算法基本一致。

B.HashMap允许将null作为一个entry得key或value,而Hashtable不允许。 C.HashMap与Hashtable都是Map interface的实现。

D.Hashtable的方法是syncronized的,而HashMap不是,因此HashMap非线程安全

3.对于一个abstract的method,不能用下面哪个Java关键字同时修饰_______ A.static B.native C.synchronized D.final

4.下面关于Java中Vector、ArrayList、LinkedList的表述正确的是_______ A.这三个类都实现了java.util.List接口,但只有Vector是线程安全的

B.ArrayList与Vector在从指定位置用index检索一个元素的时候,时间开销是O(1)

C.LinkedList在插入、删除任意位置元素的时间开销都是O(1),但它在索引一个元素的时候比较慢,为O(i),其中i是索引的位置。

D.当向这几种类型中增加元素时,如果数目超出了其目前的长度,Vector缺省情况下自动增长原来一倍的长度,而ArrayList与LinkedList则增长50%的长度。

5.在J2EE中,JSP可以使用下列哪些技术对客户端会话状态进行跟踪__________ A.建立匿名的表格字段 B.使用URL重写 C.使用持久化Cookies D.使用session会话机制

三、 填空题(共5题,每题3分,共15分)

1.下面程序的运行结果为_________

public class Test{ public static void main(String[] args){ B obj = new B(); } }

class A{ static {System.out.print(\);} public A(){System.out.print(\);} }

class B extends A{ static {System.out.print(\);} public B(){System.out.print(\);} }

2.下面程序的运行结果为_________

public class Test{ public static void main(String[] args) { Sub obj = new Sub(); obj.print(); } }

class Base{ public String s = \; public void print() { System.out.print(s); printAgain(); } public void printAgain() { System.out.print(\); } }

class Sub extends Base{ public String s = \; public void printAgain() { System.out.print(\); } }

3.下面程序的运行结果为________

public class Test{ static int func(int i, int j){ try{ return i/j; }catch(ArithmeticException e){ System.out.print(\); return 0; }catch(Exception e){ System.out.print(\); return 0; }finally{ System.out.print(\); } } public static void main(String[] args){