刷题 day 04 Java

1.下列Java常见的事件类中哪个是鼠标事件类(C)

A InputEvent
B KeyEvent
C MouseEvent
D WindowEvent

2.方法通常存储在进程中的哪一区(D)

A 堆区
B 栈区
C 全局区
D 方法区
解析:1:栈区 主要用于存放局部变量,传递参数,存放函数的返回地址。esp 始终指向栈顶, 栈中的数据越多, esp的值越小。
2.堆区:用于存放动态分配的对象。
3.全局区(静态区)(static)全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。
3.方法区:方法区是存放虚拟机加载类的相关信息,如类,静态变量和常量。

3.以下描述错误的一项是(C)

A 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B 原则上讲,所有的对象都是在堆区上分配内存,是线程之间共享的
C 方法区用于存储JVM加载的类信息,常量,静态变量,即使编译器编译后的代码等数据是线程隔离的
D Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
解析:方法区: 1.又叫静态区,跟堆一样,被所有的线程共享。方法区包含所有的class和static变量。 2.方法区中包含的都是在整个程序中永远唯一的元素,如class,static变量。

4.下面有关SPRING的事务传播特性,说法错误的是(B)

A PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行
B PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就抛出异常
C PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事务,把当前事务挂起
D PROPAGATION_NESTED:支持当前事务,新增Savepoint点,与当前事务同步提交或回滚

5.Java语言中,方法的重写(Overriding)和重载(Overloading)是多态性的不同表现。下边哪些说法是正确的(AC)

A 重写是父类与子类之间多态性的一种表现
B 重写是一个类中多态性的一种表现
C 重载是一个类中多态性的一种表现
D 重载是父类与子类之间多态性的一种表现
解析:重写是子类继承父类方法并对其进行修改,可选择调用父类方法或子类重写后的同名方法;重载是一个类可以存在同名但参数列表不同的方法,可根据传入的参数调用相应的方法

6 关于HashMap和Hashtable正确的说法有(AC)

A 都实现了Map接口
B Hashtable类不是同步的,而HashMap类是同步的
C Hashtable不允许null键或值
D HashMap不允许null或值
解析:1、继承不同。public class Hashtable extends Dictionary implements Map

public class HashMap extends AbstractMap implements Map

2、Hashtable 中的方法是同步的,而HashMap中的方法在缺省情况下是非同步的。在多线程并发的环境下,可以直接使用Hashtable,但是要使用HashMap的话就要自己增加同步处理了。

3、Hashtable中,key和value都不允许出现null值。

在HashMap中,null可以作为键,这样的键只有一个;可以有一个或多个键所对应的值为null。当get()方法返回null值时,即可以表示 HashMap中没有该键,也可以表示该键所对应的值为null。因此,在HashMap中不能由get()方法来判断HashMap中是否存在某个键, 而应该用containsKey()方法来判断。

4、两个遍历方式的内部实现上不同。

Hashtable、HashMap都使用了 Iterator。而由于历史原因,Hashtable还使用了Enumeration的方式 。

5、哈希值的使用不同,HashTable直接使用对象的hashCode。而HashMap重新计算hash值。

6、Hashtable和HashMap它们两个内部实现方式的数组的初始大小和扩容的方式。HashTable中hash数组默认大小是11,增加的方式是 old*2+1。HashMap中hash数组的默认大小是16,而且一定是2的指数

7.关于OutOfMemoryError,下面说法正确的是(ABC)

A java.lang.OutOfMemoryError: PermGen space 增加-XX:MaxPermSize这个参数的值的话,这个问题通常会得到解决。
B java.lang.OutOfMemoryError: Requested array size exceeds VM limit当你正准备创建一个超过虚拟机允许的大小的数组时,这条错误将会出现
C java.lang.OutOfMemoryError: Java heap space 一般情况下解决这个问题最快的方法就是通过-Xmx参数来增加堆的大小
D java.lang.OutOfMemoryError: nativeGetNewTLA这个异常只有在jRockit虚拟机时才会碰到
解析:A 查了一下为"永久代"内存大小不足,“永久代”的解释应该为JVM中的方法区,主要用于存储类信息,常量,静态变量,即时编译器编译后代码等。本错误仅限于Hotspot虚拟机,本区进行垃圾回收很少,不够直接加大简单粗暴。
B 直接翻译报错信息:数组过长导致堆内存溢出,加大堆内存或者减少数组长度。
C 堆内存不足,直接增大堆内存。

8 true ,false, null, sizeof, goto, synchronized哪些是关键字(goto synchronized)

解析:1,Java 关键字列表 (依字母排序 共50组):
abstract, assert, boolean, break, byte, case, catch, char, class, const(保留关键字), continue, default, do, double, else, enum, extends, final, finally, float, for, goto(保留关键字), if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while
2,保留字列表 (依字母排序 共14组),Java保留字是指现有Java版本尚未使用,但以后版本可能会作为关键字使用:
byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto (保留关键字) , const (保留关键字) , null

9 JDK提供的用于并发编程的同步器有哪些 (ABC)

A Semaphore
B CyclicBarrier
C CountDownLatch
D Counter
解析:Semaphore 信号量,用于表示资源共享数量。用acquire()获取资源,用release()释放资源
CyclicBarrier 线程达到屏障后等待,当一组线程都达到屏障后才一起恢复执行
CountDownLatch 初始时给定一个值,每次调用countDown值减1,当值为0时阻塞的线程恢复执行。

猜你喜欢

转载自blog.csdn.net/phoebeziz/article/details/83243209