1. HashMap的数据结构是怎样的?
A.数组
B.链表
C.数组+链表
D.二叉树
答案:
C
解析:
JDK8以后,HashMap的数据结构是数组+链表+红黑树
2. 在 JAVA 编程中,Java 编译器会将 Java 程序转换为( )?
A.字节码
B.可执行代码
C.机器代码
D.以上都不对
答案:
A
解析:
-
编译器将Java源代码编译成字节码class文件
-
类加载到JVM里面后,执行引擎把字节码转为可执行代码
-
执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行。
3.下面有关JVM内存,说法错误的是?
A.程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B.Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C.方法区用于存储JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,是线程隔离的
D.原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
答案:
C
解析:
运行时数据区包括:虚拟机栈区,堆区,方法区,本地方法栈,程序计数器
-
虚拟机栈区:也就是我们常说的栈区,线程私有,存放基本类型,对象的引用和 returnAddress ,在编译期间完成分配。
-
堆区:JAVA 堆,也称 GC 堆,所有线程共享,存放对象的实例和数组, JAVA 堆是垃圾收集器管理的主要区域。
-方法区:所有线程共享,存储已被虚拟机加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。这个区域的内存回收目标主要是针对常量池的对象的回收和对类型的卸载。 -
程序计数器:线程私有,每个线程都有自己独立的程序计数器,用来指示下一条指令的地址。
-
JAVA中,下列语句哪一个正确()
A.class中的constructor不可省略
B.constructor必须与class同名,但方法不能与class同名
C.constructor在一个对象被new时执行
D.一个class只能定义一个constructor
答案:
C
解析:
A 省略构造函数,编译器会自动生成。
D 构造函数可以重载
B 方法是可以和类名同名的,和构造方法唯一的区别就是,构造方法没有返回值。
5.在JAVA中,假设A有构造方法A(int a),则在类A的其他构造方法中调用该构造方法和语句格式应该为()
A.this.A(x)
B.this(x)
C.super(x)
D.A(x)
答案:
B
解析:
this的作用其中一个就是在一个构造方法中调用另一个构造方法,格式为this(参数);
super是调用父类的方法;
A(a)这种形式是在new一个类时使用。
6.下列选项中属于面向对象程序设计语言特征的是()
A.继承性
B.多态性
C.相似性
D.封装性
答案:
A B D
解析:<