题目来源:https://www.nowcoder.com/
第一题:
1.在面向对象编程里,经常使用is-a来说明对象之间的继承关系,下列对象中不具备继承关系的是?()
A.手机与小米手机
B.企业家与雷军
C.编程语言与Java
D.中国与北京
选D
解析:
类之间存在几种常见的关系:use-a 是依赖关系、has-a是组合关系、is-a 是继承关系 。
is-a 的关系:
A:小米手机是一个手机
B:雷军是一个企业家
C:Java是一门编程语言
D:北京是一个中国?错
第二题:
2.在为传统面向对象语言的程序做单元测试的时候,经常用到mock对象。Mock对象通过反射数。请问反射最大程度破坏了面向对象的以下哪个特性?
A.封装
B.多态
C.继承
D.抽象
选A
解析:
mock对象:在测试中的利用mock对象来代替真实对象,方便测试的进行。
java的封装性:指的是将对象的状态信息隐藏在对象内部,不允许外部程序直接访问对象内部信息,通过该类提供的方法实现对内部信息的操作访问。
反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性,反射破坏代码的封装性,破坏原有的访问修饰符访问限制。
第三题:
3.下面哪些赋值语句是正确的()
A.long test=012
B.float f=-412
C.int other =(int)true
D.double d=0x12345678
E.byte b=128
选ABD
解析:
A和B中long和float,正常定义需要加l和f,但是long和float属于基本类型,会进行转化,所以不会报出异常。
C:boolean类型不能和任何类型进行转换,会报出类型异常
E.byte取值范围-128—127.报出异常: cannot convert from int to byte.
第四题:
4.下面字段声明中哪一个在interface主体内是合法的? ()
A.private final static int answer = 42;
B.public static int answer = 42;
C.final static answer = 42;
D.int answer;
选B
解析:
A:不能用private修饰;
B:在接口中,属性默认public static final,这三个关键字可以省略;
C:没写属性的类型;
D:final修饰的属性必须赋值;
第五题:
5.关于类的叙述正确的是()。
A.在类中定义的变量称为类的成员变量,在别的类中可以直接使用
B.局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中
C.使用别的类的方法仅仅需要引用方法的名字即可
D.只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数
选B
解析:
A:类的成员只能在类内部使用,外部需要“对象名.变量名”来引用
C:需要指定对象才能引用
D:原句应该为只要没有定义任何构造函数,JVM都会为类生成一个默认构造函数。
第六题:
6.以下哪项不属于java类加载过程?
A.生成java.lang.Class对象
B.int类型对象成员变量赋予默认值
C.执行static块代码
D.类方法解析
选B
解析:
类加载过程:加载、验证、准备、解析、初始化。
A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。
B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。
选项C:初始化阶段(执行类构造器<clinit>()方法)。
选项D:类方法解析发生在解析过程。
第七题:
7.Java1.8之后,Java接口的修饰符可以为()
A.private
B.protected
C.final
D.abstract
选D
解析:
接口中字段迪修饰符:public static final
接口中方法的修饰符:public abstract
第八题:
8.在java7中,下列不能做switch()的参数类型是?
A.int型
B.枚举类型
C.字符串
D.浮点型
选D
解析:
switch支持:①八大基础数据类型中支持:byte,short,char,int,不支持:boolean,long,float,double②支持枚举类型③支持String类型(java7开始支持)
第九题:
9.运行下面代码,输出的结果是()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
A.class A static class B static I'm A class class A I'm B class class B
B.class A static I'm A class class A class B static I'm B class class B
C.class A static class B static class A I'm A class class B I'm B class
D.class A static class A I'm A class class B static class B I'm B class
选A
解析:
Java程序初始化顺序:
- 父类的静态代码块
- 子类的静态代码块
- 父类的普通代码块
- 父类的构造方法
- 子类的普通代码块
- 子类的构造方法
第十题:
10.运用下列哪个命令能够获取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:功能强大的控制台
8、jinfo:如何查看当前运行程序的配置