2019年11月8日 java2
考点1
Which is the return type of the method main()?
- A int
- B void
- C Boolean
- D static
正确答案: B
解析
1 | public static void main(String[] args){ |
考点2
子类A继承父类B, A a = new A(); 则父类B构造函数、父类B静态代码块、父类B非静态代码块、子类A构造函数、子类A静态代码块、子类A非静态代码块 执行的先后顺序是?
- A 父类B静态代码块->父类B构造函数->子类A静态代码块->父类B非静态代码块->子类A构造函数->子类A非静态代码块
- B 父类B静态代码块->父类B构造函数->父类B非静态代码块->子类A静态代码块->子类A构造函数->子类A非静态代码块
- C 父类B静态代码块->子类A静态代码块->父类B非静态代码块->父类B构造函数->子类A非静态代码块->子类A构造函数
- D 父类B构造函数->父类B静态代码块->父类B非静态代码块->子类A静态代码块->子类A构造函数->子类A非静态代码块
正确答案: C
解析
当实例化子类对象时,
- 首先要加载父类的class文件进内存,静态代码块是随着类的创建而执行,所以父类静态代码块最先被执行,
- 子类class文件再被加载,同理静态代码块被先执行;
- 实例化子类对象要先调用父类的构造方法,而调用父类构造方法前会先执行父类的非静态代码块
考点3
有如下代码:请写出程序的输出结果。
1 | public class Test |
- A 432
- B 531
- C 421
- D 523
正确答案: B
解析
每次循环z,x,y,k对应数值为:
0,1,0,0
1,2,0,0
2,3,1,0
3,4,2,0
4,5,3,1
执行完这次以后,z++为5,不再进入for循环。
考点4
现有如下代码段:
1 | x = 2; |
假设n>=0,则其时间复杂度应为( )
- A O(log2(n))
- B O(nlog2(n))
- C O(n)
- D O(n^2)
正确答案: A
解析
1 | x = 2; //① |
语句①的频度是1,设语句2的频度是f(n),则2^f(n)<=n/2;f(n)<=log2(n/2)近似等于f(n)<=log2(n),取最大值f(n)=log2(n),T(n)=O(log2(n))
考点5
下面关于垃圾收集的说法正确的是
- A 一旦一个对象成为垃圾,就立刻被收集掉。
- B 对象空间被收集掉之后,会执行该对象的finalize方法
- C finalize方法和C++的析构函数是完全一回事情
- D 一个对象成为垃圾是因为不再有引用指着它,但是线程并非如此
正确答案: D
解析
对象空间被收集之前执行finalize()方法,而不是对象空间被收集之后再执行
考点6
1 | public void test() { |
最后输出什么?
- A 19
- B 20
- C 21
- D 22
正确答案: C
解析
- 先取值,后加一
- 先取值,后减一
考点7
哪个正确
- A abstract类只能用来派生子类,不能用来创建abstract类的对象。
- B final类不但可以用来派生子类,也可以用来创建final类的对象。
- C abstract不能与final同时修饰一个类。
- D abstract类定义中可以没有abstract方法。
正确答案: ACD
解析
1、abstract类不能用来创建abstract类的对象;
2、final类不能用来派生子类,因为用final修饰的类不能被继承;
3、如2所述,final不能与abstract同时修饰一个类,abstract类就是被用来继承的;
4、类中有abstract方法必须用abstract修饰,但abstract类中可以没有抽象方法,接口中也可以有abstract方法。
考点8
关于equals和hashCode描述正确的是 ()
- A 两个obj,如果equals()相等,hashCode()一定相等(符合代码规范的情况下)
- B 两个obj,如果hashCode()相等,equals()不一定相等
- C 两个不同的obj, hashCode()可能相等
- D 其他都不对
正确答案: ABC
解析
考点9
运用下列哪个命令能够获取JVM的内存映像
- A jinfo
- B jmap
- C jhat
- D jstat
正确答案: B
解析
1、jps:查看本机java进程信息。
2、jstack:打印线程的栈信息,制作线程dump文件。
3、jmap:打印内存映射,制作堆dump文件
4、jstat:性能监控工具
5、jhat:内存分析工具
6、jconsole:简易的可视化控制台
7、jvisualvm:功能强大的控制台
考点10
以下哪一个不是赋值符号?
- A +=
- B <<=
- C <<<=
- D >>>=
正确答案: C
解析
A.很明显是赋值符号
B.<<=左移赋值
C.不是
D.>>>= 右移赋值,左边空出的位以0填充
考点11
Java多线程有几种实现方法?
- A 继承Thread类
- B 实现Runnable接口
- C 实现Thread接口
- D 以上都不正确
正确答案: AB
解析
多线程一共有三种实现方式
方式1:继承Thread类,并重写run()方法
方式2:实现Runnable接口,实现run()方法
方式3:实现Callable接口,线程结束后可以有返回值,但是该方式是依赖于线程池的。
考点12
Java中的集合类包括ArrayList、LinkedList、HashMap等类,下列关于集合类描述正确的是()
- A ArrayList和LinkedList均实现了List接口
- B ArrayList的访问速度比LinkedList快
- C 添加和删除元素时,ArrayList的表现更佳
- D HashMap实现Map接口,它允许任何类型的键和值对象,并允许将null用作键或值
正确答案: ABD
解析
ArrayList插入和现有项的删除开销很大,除非在末端
LinkedList插入和删除开销很小
ArrayList和LinkedList都是实现了List接口
HashMap可以用null值和空字符串作为K,不过只能有一个
考点13
下面的Java赋值语句哪些是有错误的 ()
- A int i =1000;
- B float f = 45.0;
- C char s = ‘\u0639’
- D Object o = ‘f’;
- E String s = “hello,world\0”;
- F Double d = 100;
正确答案: BF
解析
不同的数据类型不能自动装箱拆箱,只有对应类型的数据类型和包装类才能自动装箱拆箱。
double类型的才可以自动装箱为Double
Double d = 100;中100为int类型,只能自动装箱为Integer
考点14
true、false、null、sizeof、goto、synchronized 哪些是Java关键字?
- A true
- B false
- C null
- D sizeof
- E goto
- F synchronized
正确答案: EF
解析
- true、false、null是字面量。
- goto、const是java保留字和关键字。