1、一、 基本知识,不定项选择(总分 20 分,每题 2 分) 1.在 Java 中,关于 static 关键字的说法错误的是 : A.static 可以修饰方法 B.static 可以修饰成员 C.static 可以修饰代码块 D.static 可以修饰局部变量和形参 2.在 Java 中,关于 final 关键字的说法正确的是 : A. 如果修饰局部变量,该局部变量必须在定义时赋值,且赋值后不可改变。 B. 如果修饰类,则该类只能被一个子类继承 C. 如果修饰方法,则该方法不能在子类中被覆盖 D. 如果修饰方法, 则该方法所在的类不能被继承 E. 如果修饰成员变量,则该成员变量只能在声明时赋值
2、或在构造函数中赋值,除此之外,不能在其他任何位置赋值 。 F. 用 static final 修饰的属性必须在声明时赋值。 3.下列哪些情况出现时一般不会导致类被加载: A. 生成该类的对象。 B. 生成其子类对象。 C. 生成其父类的对象。 D. 访问类的静态成员。 E. 声明该类的变量(引用)。 4.下列关于 JVM 的说法错误的是: A. JVM 的栈空间用来存储方法调用时的临时变量,当调用新 方法时,新方法的存储空间入栈,当方法调用结束时,方法的空间出栈。 B. JVM 的堆空间是用来存储对象的空间,该空间由 JVM 自动管理。 C. 我们可以通过设置参数来调整 JVM 的栈空间和堆空
3、间的大小。 D. 一个程序运行时,只有一个栈。 5.下列关于继承的说法正确的是: A. 子类构造函数一定会调用父类构造函数。 B. 构造函数的第一行一定是 super()或 this();而且,这样的调用也只能出现在构造函数的第一行。 C. 任何时候,将父类对象强制转换为其子类的对象,在编译时都能通过 。 D. 如果( a instanceof A)的值为 true,则 a 可以转换为 A 类型。 6.关于抽象类的说法正确的是: A. 抽象类中一定包含抽象方法,否则会出现编译错误。 B. 包含抽象方法的类一定是抽象类。 C. 抽象方法可以没有方法体,也可以有方法体。 D. 抽象类的父类也只能是
4、抽象类。 7.关于 JAVA 多线程开发,以下描述错误的是: A. sleep 是 Thread 类的静态方法, wait 是 Object 类的实例方法。 B. sleep 不释放对象锁, wait 释放对象锁。 C. wait 方法一般出现在 synchronized 代码块内部,而 sleep 方法可以出现在任意有效的代码位置。 D. 一个线程执行 a.wait();方法时它将释放 a 对象的锁标志,进入 a 对象的等待池等待,直到另一个线程执行 a.notify()或 a.notifuAll()方法,将其从等待池转移到锁池。 E. 在多线程程序中, this 和 Thread.curr
5、entThread()代表的是同一个对象。 F. 为保证线程的并发安全,当一个线程进入到一段 synchronized 锁定的代码块内部执行时,操作系统会一直等待该线程执行完这段锁定的代码,才会换其他线程来执行。 G. 死锁是指在一段 synchronized 代码块内部有死循环,导致一个线程进入这段代码块后一直占用着 CPU,而其他线程无法执行的情况。 8.关于 Object 类中的方法,描述正确的有: A. Object 类中的所有方法都可以覆盖。 B. Object 类中有些抽象方法,所以 Object 类是个抽象类。 C. 在 Object 类中 toString()方法默认的返回值是
6、 “ 类名 ”+hashCode ()的返回值 。 D. 在 Object 类中 equals()方法默认的返回值是 ”false” 。 9.给出如下声明: String s = “Example”; 合法的代码有哪些? A. s=3 B. s3=”X” C. int i = s.charAt(0); D. s = s+10; 10.关于异常 (Exception),下列描述正确的是: A. 所有继承自 RuntimeException 类的异常无需 try-catch 处理,因为一般来讲它们不是程序的缺陷。 B. 所有 RuntimeException 之外的异常都必须 try-catch
7、处理,因为一般来讲它们是程序的缺陷。 C. 异常应该尽可能在出现的位置处理,而不是抛给外层的程序处理。 D. 在某个方法中可以通过抛出异常来向上一级方法返回值,从某种意义上能达到返回值的效果。 二、 程序排错:(总分 30分,每题 3分) 1.以下程序将 ArrayList 中的数据取出,转换后存入整形数组,程序最有可能报告何种异常。 A.ArrayIndexOutOfBoundsException B.ArithmeticException C.NullPointerException D.ClassCastException 2.以下程序在控制台输出 “Say Hello ! ” : 在
8、Eclipse 中运行该程序产生如下的错误信息: 以下哪一项是正确的修改方法: A.将 main 方法的修饰符声明为 public static B.将 main 方法的形参定义为: String args C.(A),(B)两项都需要修改 D.将 main 方法的形参定义为: java.lang.String args 3.如下程序截图中,第 5行代码报错,错误提示为: Type mismatch: cannot convert from java.lang.String to com.tarena.pm_exam.javase.case01.String 产生该错误最有可能的原因是: A.
9、程序的包名命名不符合规范。 B.程序的变量名命名不符合规范。 C.应该将程序中的 “Hello” 改为 new String(“Hello”); D.在包中包含一个同名的类 String 4.运行某段程序时,系统提示: Exception in thread “main“ java.lang.StackOverflowError 造成此异常最有可能的原因是: A.程序中生成了太多的对象,造成内存空间不够。 B.程序中有死循环,造成内存空间不够。 C.方法的递归调用没有退出条件。 D.方法中定义的变量太多,导致存储空间不够。 5.运行某段程序,系统提示: Exception in thread
10、“main“ java.lang.OutOfMemoryError: Java heap space 造成此异常最有可能的原因是: A.程序中生成了太多的对象,造成内存空间不够。 B.程序中有死循环,造成内存空间不够。 C.方法的递归调用没有退出条件。 D.方法中定义的变量太多,导致存储空间不够。 6.以下程序代码用来向 ArrayList 中添加元素,然后将其删除: 以上代码运行时最有可能报告何种异常: A.ArrayIndexOutOfBoundsException B.ConcurrentModificationException C.NullPointerException D.Num
11、berFormatException 7.以下程序用来对 HashSet 做操作,程序运行后的输出结果是: A.1 B.2 C.3 D.4 8.以下程序用来对 Student 对象按照年龄从小到大排序输出,年龄相同的按照姓名的字典顺序排序。 9.以下程序用来完成对数组的插入排序,请在空白处填写正确的代码? 10.以下程序实现文件的拷贝,为提高读写效率,程序中定义了一个 4K 的缓存,请将程序中空白位置补充完整。 (5) fis.read(buff)=BUFF_SIZE (6) fos.write(buff) 三、 代码调试:(总分 30分,每题 6分) 1.以下代码向一个 List 中插入数据,运行将报告异常,请简述异常产生的原因,及解决办法。 错误原因: _ 修改代码: 将第 _行至 _行代码修改为: _ 2.以下代码期望输出 2 100 以内哪些是素数,哪些不是素数,但程序并未按照预想输出, 请将代码修改正确。