1. (不定项)JVM中垃圾回收分为scanvenge gc 和 full gc 。其中full GC 触发的条件可能有哪些()?
A. 栈空间满
B. 年轻代空间满
C. 老年代满
D. 持久代满
E. System.gc()
2. (不定项)有关线程的叙述正确的是()
A. 可以获得对任何对象的互斥锁。
B. 通过继承Thread类或实现 Runnable接口,可以获得对类中方法的互斥锁定。
C. 线程通过使用sychronized关键字 可以获得对象的互斥锁定
D. 线程调度算法是平台独立的
3. 下列叙述正确的是()
public class TestClass {
private static void testMethod() {
System.out.println(“test Method”);
}
public static void main(String[] args) {
((TestClass)null).testMethod();
}
}
A. 编译不通过
B. 编译通过,运行异常,NullPointerException
C. 编译通过,运行异常,IllegalArgumentException
D. 编译通过,运行异常,Exception
E. 运行正常,输出 test Method
4. 下面哪一项不是加载驱动程序的方法?
A. 通过 DriverManager.getConnection()方法加载
B. 调用方法 Class.forName();
C. 通过添加 系统的 jdbc.drivers 属性
D. 通过 registerDriver 方法注册
5. 执行下面函数的输出是()
Class Foo {
final int i;
int j;
public void doSomething() {
System.out.println(++j + i);
}
}
A. 0
B. 1
C. 2
D. 编译错误
//----------------------------------------分割线---------------------------------------------
答案:
CDE
CD
E
A
D
天梯180322 (答案解析)
答案详解:
1. JVM 类型题
新生代: 一,所有对象创建在新生代的Eden区,当Eden区满了之后触发新生代的Minor GC,将Eden区和非空闲Sruvivor区存活的对象 复制到 另外一个空闲的Survivor区中。二,保证一个survivor区是空的,新生代MinorGC 就是在两个survivor区之间相互复制存活对象,直到Survivor区满为止。
老年代: 当Survivor区也满了之后就通过Minor GC将对象复制到老年代。老年代也满了的话,就将触发Full GC,针对整个堆(包括新生代、老年代、持久代)进行垃圾回收。
持久代: 持久代如果满了,将触发Full GC。
栈空间满了会抛出 StackOverFlow异常;
System.gc(): 建议JVM进行full GC。
2. Java多线程相关类型题
A任何对象,太绝对,无访问权限的对象呢,
B 胡诌
C 对
D 线程调度 分为 协同式调度调度和抢占式调度,
而Java使用的是 抢占式调度,也就是每个线程将由操作系统来分配执行时间,线程的切换不由线程本身来决定(不然JDK不会无法保证线程优先级的作用)。所以是平台独立。
3. null 可以被强制类型转换成 任意类型(不是任意类型对象!),所以可以用它来执行静态方法。(要知道 对象.静态方法也是可以调用的,虽然不符合语法。你要这么想也行)
4. 加载驱动有3种方法,但A选项显然不是,A是获取数据库连接的方法。
5. final 类型的变量 必须 初始化,因为final的变量不可更改。 初始化可以实现在 声明处、代码块、构造函数 中,否则编译报错。