【新玩儿法】Java笔试题库11期

简介: 【新玩儿法】Java笔试题库11期

知音专栏:

JavaWeb练手项目源码下载

常用的设计模式完整总结篇

近几年的java面试题总结汇总


下面有关JVM内存,说法错误的是?


A、程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的。

B、虚拟机栈描述的是Java方法执行的内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的。

C、方法区用于存储JVM加载的类信息、常量、静态变量、以及编译器编译后的代码等数据,是线程隔离的。

D、原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的。


正确答案:C

答案解析: 方法区在JVM中也是一个非常重要的区域,它与堆一样,是被线程共享的区域。 在方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等。



下列关于构造方法不正确的是:( )

A、类的构造方法和类同名

B、一个类可以有多个构造方法

C、在实例化对象时必须调用类的构造方法

D、构造方法可以和该类其他方法一样被该类对象调用




正确答案:D

答案解析: 构造方法是用来构造对象实例的。而成员方法是用来执行某种功能的,需要对象实例来调用。所以顺序是:构造方法执行得到对象实例,对象实例调用成员方法。构造在前,实例对象在后,不可能调用!


【多选】实现或继承了Collection接口的是()

A、Map

B、List

C、Vector

D、Iterator

E、Set


正确答案:BCE

答案解析:

1、A中的Map接口以键值对(key—value)的形式存放对象,其中键(key)对象不可以重复,值(value)对象可以重复,排序方式为按照自身内部的规则。

2、B中的List接口继承了Collection接口,List接口允许存放重复的对象,排序方式为按照对象的插入顺序。

3、C中的Vector实现了List接口,即间接实现Collection接口。

4、D中的Iterator,所有的集合类,都实现了Iterator接口,这是一个用于遍历集合中元素的接口,没有实现Collection接口。

5、E中的Set接口继承了Collection接口,Set接口不允许存放重复的对象,排序方式为按照自身内部的排序规则。



好了,还是得多说几句,关于上面三道题的一点小扩展


一、关于线程隔离和线程共享

JVM中线程隔离的有:

程序计数器:

一小块内存空间,单前线程所执行的字节码行号指示器。字节码解释器工作时,通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。


JVM虚拟机栈:

Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息。是线程私有的。

 

本地方法栈:

为JVM用到的Native方法服务,SunHotSpot 虚拟机把本地方法栈和JVM虚拟机栈合二为一。是线程私有的。


JVM中线程共享的有:


方法区:


用于存储JVM加载的类信息、常量、静态变量、即使编译器编译后的代码等数据。

 

运行时常量池:


是方法区的一部分,用于存放编译器生成的各种字面量和符号引用,这部分内容将在类加载后存放到方法取得运行时常量池中。具备动态性,用的比较多的就是String类的intern()方法。

 

JVM堆:


存放所有对象实例的地方。


新生代,由Eden Space 和大小相同的两块Survivor组成


旧生代,存放经过多次垃圾回收仍然存活的对象


二、关于Java中的反射和构造方法


A和B没有疑问,C的话因为有反射,这里可能有朋友会采坑。反射虽然没有New对象,但一样依赖类的构造方法。获取想要操作类的java.lang.Class对象。每个类被加载后,系统就会为该类生成一个对应的Class对象,class对象就可以访问java虚拟机中的这个类。


获取Class有三种方法:


1、调用某个对象的getclass()方法.

例如:person person=new person();Class cla=person.getclass()调/


2、用某个类的class属性来获取该类对应的class对象

例如:Class cla=Person.class;



3、使用class类的forName()静态方法例

如:class cla=Class.ForName(“com.amuxia.person”)

 

调用其构造方法,这里举几种例子:


1、getConstructor(class[]params)作用:

    返回此class对象所表示的类的指定的public构造方法。
    例如:Constructorc=cla.getConstructor(string.class,String.class,Integer.class)


2、getConstructors作用:

    返回此class对象所表示的类的所有public构造方法。
    例如:Constructor[]arrc=cla.getConstructors()


3、getDeclaredConstructor(class[]params)作用:

   返回此class对象所表示的类的指定的构造方法,与构造方法的访问级别无关。
    例如:Consteuctorc=cla.getDeclaredconstructor(string.class,string.class,Integer.class)


4、getDeclaredConstructors()作用:

    返回此class对象所表示的类的全部构造方法。
    例如:Constructor[]arrc=cla.getDeclaredConsteructors();


三,集合图(来自博客园)


image.png



相关文章
|
6月前
|
Java
【Java】——期末复习题题库(十)
【Java】——期末复习题题库(十)
|
6月前
|
存储 Java
【Java】——期末复习题题库(七)
【Java】——期末复习题题库(七)
|
5月前
|
SQL Java
java面试题笔试常见选择题大全含答案
java面试题笔试常见选择题大全含答案
|
5月前
|
存储 Java
java面试题大全带答案_面试题库_java面试宝典2018
java面试题大全带答案_面试题库_java面试宝典2018
|
5月前
|
SQL 前端开发 Java
2019史上最全java面试题题库大全800题含答案(面试宝典)(4)
2019史上最全java面试题题库大全800题含答案(面试宝典)
|
5月前
|
存储 设计模式 Java
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
java实习生面试题_java基础面试_java面试题2018及答案_java面试题库
|
5月前
|
安全 算法 Java
java线程面试题_2019java面试题库
java线程面试题_2019java面试题库
|
5月前
|
存储 算法 Java
JAVA后端开发面试题库
JAVA后端开发面试题库
66 1
|
6月前
|
Java 索引
【Java】——期末复习题库(三)
【Java】——期末复习题库(三)
|
6月前
|
算法 Java Python
用友Java后端笔试2023-8-5
用友Java后端笔试2023-8-5
88 0
用友Java后端笔试2023-8-5
下一篇
无影云桌面