赞
踩
Java中类之间的六种关系:
B.HashMap允许存在多条null值
C.HashMap允许且仅允许一条null键
D.Map就是通过键/值形式保存数据的
2、CMS垃圾回收器在那些阶段是没用用户线程参与的
正确答案: A C
A.初始标记
B.并发标记
C.重新标记
D.并发清理
CMS收集器是一种以获取最短回收停顿时间为目标的收集器,它是基于标记清除算法实现的,它的运作过程相对于其他收集器来说要更复杂一些,整个过程分为四个步骤,包括:初始标记、并发标记、重新标记、并发清除。其中初始标记、重新标记这两个步骤需要暂停整个JVM。
初始标记仅仅只是标记一下GC Roots能直接关联到的对象,速度很快。
并发标记阶段就是从GC Roots的直接关联对象开始遍历整个对象图的过程,这个过程耗时较长但是不需要停顿用户线程,可以与垃圾收集线程一起并发运行。
重新标记阶段则是为了修正并发标记期间,因用户程序继续运作而导致标记产生变动的那一部分对象的标记记录,这个阶段的停顿时间通常会比初始标记阶段稍长一些,但也远比并发标记阶段的时间短。
并发清除阶段,清理删除掉标记阶段判断的已经死亡的对象,由于不需要移动存活对象,所以这个阶段也是可以与用户线程同时并发的。
3、只有实现了()接口的类,其对象才能序列化。
正确答案: A
A.Serializable
B.Cloneable
C.Comparable
D.Writeable
4、下面有关java final的基本规则,描述错误的是?
正确答案: B
A.final修饰的类不能被继承
B.final修饰的成员变量只允许赋值一次,且只能在类方法赋值
C.final修饰的局部变量即为常量,只能赋值一次。
D.final修饰的方法不允许被子类覆盖
final修饰的成员变量为基本数据类型时,在赋值之后无法改变。当final修饰的成员变量为引用数据类型时,在赋值后其指向地址无法改变,但是对象内容还是可以改变的。
final修饰的成员变量在赋值时可以有三种方式。1、在声明时直接赋值。2、在构造器中赋值。3、在初始代码块中进行赋值。
final修饰的方法,不允许被子类覆盖。
final修饰的类,不能被继承。
final修饰的变量,不能改变值。
final修饰的引用类型,不能再指向别的东西,但是可以改变其中的内容。
5、表达式(short)10/10.2*2运算后结果类型是()
正确答案: C
short
int
double
float
6、Hashtable 和 HashMap 的区别是:
正确答案: B C D E
A.Hashtable 是一个哈希表,该类继承了 AbstractMap,实现了 Map 接口
B.HashMap 是内部基于哈希表实现,该类继承AbstractMap,实现Map接口
C.Hashtable 线程安全的,而 HashMap 是线程不安全的
D.Properties 类 继承了 Hashtable 类,而 Hashtable 类则继承Dictionary 类
E.HashMap允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。
Hashtable:
(1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。
(2)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。
(3)HashTable直接使用对象的hashCode。
HashMap:
(1)由数组+链表组成的,基于哈希表的Map实现,数组是HashMap的主体,链表则是主要为了解决哈希冲突而存在的。
(2)不是线程安全的,HashMap可以接受为null的键(key)和值(value)。
(3)HashMap重新计算hash值
Hashtable,HashMap,Properties继承关系如下:
public class Hashtable<K,V> extends Dictionary<K,V>
implements Map<K,V>, Cloneable, java.io.Serializable
public class HashMap<K,V>extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
java.lang.Objecct
java.util.Dictionary<K,V>
java.util.Hashtable<Object,Object>
java.util.Properties
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
\W 匹配非字母、数字、下划线。等价于 '[^A-Za-z0-9_]'。
7、在java中,下列对继承的说法,正确的是( )
正确答案: A
A.子类能继承父类的所有成员
B.子类继承父类的非私有方法和状态
C.子类只能继承父类的public方法和状态
D.子类只能继承父类的方法
8、有关静态初始化块说法正确的是?
正确答案: A B C
A.无法直接调用静态初始化块
B.在创建第一个实例前或引用任何静态成员之前,将自动调用静态初始化块来初始化
C.静态初始化块既没有访问修饰符,也没有参数
D.在程序中,用户可以控制何时执行静态初始化块
JAVA的初始化顺序:
父类的静态成员初始化>父类的静态代码块>子类的静态成员初始化>子类的静态代码块>父类的代码块>父类的构造方法>子类的代码块>子类的构造方法
注意:
1.静态成员和静态代码块只有在类加载的时候执行一次,再次创建实例时,不再执行,因为只在方法区存在一份,属于一整个类。
2.上述的是通用的加载顺序,如果没有则省略。
9、下面的switch语句中,x可以是哪些类型的数据:()
switch(x)
{
default:
System.out.println(“Hello”);
}
10、下面所示的java代码,运行时,会产生()类型的异常
int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);
正确答案: D
A.ArithmeticException
B.NullPointException
C.IOException
D.ArrayIndexOutOfBoundsException
11、哪个正确
正确答案: A C D
A.abstract类只能用来派生子类,不能用来创建abstract类的对象。
B.final类不但可以用来派生子类,也可以用来创建final类的对象。
C.abstract不能与final同时修饰一个类。
D.abstract类定义中可以没有abstract方法。
12、以下哪些jvm的垃圾回收方式采用的是复制算法回收
正确答案: A D
A.新生代串行收集器
B.老年代串行收集器
C.并行收集器
D.新生代并行回收收集器
E.老年代并行回收收集器
F.cms收集器
两个最基本的java回收算法:复制算法和标记清理算法 复制算法:两个区域A和B,初始对象在A,继续存活的对象被转移到B。此为新生代最常用的算法 标记清理:一块区域,标记可达对象(可达性分析),然后回收不可达对象,会出现碎片,那么引出 标记-整理算法:多了碎片整理,整理出更大的内存放更大的对象 两个概念:新生代和年老代 新生代:初始对象,生命周期短的 永久代:长时间存在的对象 整个java的垃圾回收是新生代和年老代的协作,这种叫做分代回收。 P.S:Serial New收集器是针对新生代的收集器,采用的是复制算法 Parallel New(并行)收集器,新生代采用复制算法,老年代采用标记整理 Parallel Scavenge(并行)收集器,针对新生代,采用复制收集算法 Serial Old(串行)收集器,新生代采用复制,老年代采用标记整理 Parallel Old(并行)收集器,针对老年代,标记整理 CMS收集器,基于标记清理 G1收集器:整体上是基于标记 整理 ,局部采用复制 综上:新生代基本采用复制算法,老年代采用标记整理算法。cms采用标记清理。
13、下面哪些接口直接继承自Collection接口()
正确答案: A C
A.List
B.Map
C.Set
D.Iterator
14、Java 中,以下不是修饰符 final 作用的是( )。
正确答案: C
A.修饰常量
B.修饰不可被继承的类
C.修饰不可变类
D.修饰不可覆盖的方法
final的作用:
1. 修饰变量,变量的引用地址不可变,但是地址中的内容可以变。
2. 修饰方法,方法不可被重写,但是还是可以重载
3. 修饰类,类不可继承。
不可变类,说的是一个类一旦被实例化,就不可改变自身的状态。常见的比如String和基本数据类型的包装类,对于这种不可变类,一旦在进行引用传递的时候,形参一开始就和实际参数指向的不是一个地址,所以在方法中对形参的改变,并不会影响实际参数。
15、要导入java/awt/event下面的所有类,叙述正确的是?()
正确答案: C
A.import java.awt.和import java.awt.event.都可以
B.只能是import java.awt.
C.只能是import java.awt.event.
D.import java.awt.*和import java.awt.event.*都不可以
java.awt.*是导入java\awt包下所有的类,并不包括其子包下的类。
java.awt.event.*才能导入java\awt\event包下的类。
16、下面代码输出结果是?
int i = 5;
int j = 10;
System.out.println(i + ~j);
正确答案: C
A.Compilation error because”~”doesn’t operate on integers
B.-5
C.-6
D.15
-n=~n+1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。