每日五道笔试题-2020-9-13

每日五道笔试题-2020-9-13

  1. 定义类中成员变量时不可能用到的修饰是()

    正确答案: B 你的答案: B (正确)

final
void
protected
static

解析:

void只能用来修饰方法

final可以用来修饰方法和变量,修饰变量就变成了常量

protected是保护的

static是静态的

  1. 有以下一个对象:
public class DataObject implements Serializable{
    
    
    private static int i=0;
    private String word=" ";
    public void setWord(String word){
    
    
        this.word=word;
    }
    public void setI(int i){
    
    
        Data0bject. i=I;
     }
}

创建一个如下方式的DataObject:

DataObject object=new Data0bject ( );
object. setWord("123");
object. setI(2); 

将此对象序列化为文件,并在另外一个JVM中读取文件,进行反序列化,请问此时读出的Data0bject对象中的word和i的值分别为:

正确答案: D 你的答案: C (错误)

"", 0
"", 2
"123", 2
"123", 0

解析:

序列化的是对象,不是类,类变量不会被序列化

  1. Java在序列化时不会实例化static变量和transient修饰的变量,因为static代表类的成员,transient代表对象的临时数据,被声明这两种类型的数据成员不能被序列化

下面关于程序编译说法正确的是()

正确答案: C 你的答案: D (错误)

java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
java编译出来的目标文件与具体操作系统有关
java在运行时才进行翻译指令
java编译出来的目标文件,可以运行在任意jvm上

解析:

A:.java编译成的是字节码,再被各系统的jvm翻译成本系统可以识别的机器码,这就是java一次编程多平台应用的跨平台性

B:java源文件生成的是class文件,与系统无关

C:注意字节码和机器码不是一回事 java程序在运行时字节码才会被jvm翻译成机 器码,所以说java是解释性语言

D:注意jvm的版本,好比人穿裤子,一条裤子能被任何人穿上吗

  1. 下列有关JAVA异常处理的叙述中正确的是()

正确答案: A B D 你的答案: A C (错误)

finally是为确保一段代码不管是否捕获异常都会被执行的一段代码
throws是用来声明一个成员方法可能抛出的各种非运行异常情况
final用于可以声明属性和方法,分别表示属性的不可变及方法的不可继承
throw是用来明确地抛出一个异常情况

解析:

throws用于在方法上声明该方法不需要处理的异常类型,用在方法上后面跟异常类名 可以是多个异常类

throw用于抛出具体异常类的对象,用在方法内 后面跟异常对象只能是一个异常类型实体. try块必须和catch块或和finally同在,不能单独存在,二者必须出现一个.

finally块总会执行,不论是否有错误出现.但是若try语句块或会执行的catch语句块使用了JVM系统退出语句,finally块就不会被执行了. 一般我们把关闭资源的代码放在finally里面 保证资源总是能关闭

然后再看这一题 A肯定对了,C根本就跟异常处理没有关系,所以不选。就算有关系也错了

final用于声明属性、方法、类。分别表示属性不可更改、方法不能被覆盖、类不能被继承。

所以C选项说方法不能被继承错误,是不能覆盖

  1. 关于volatile关键字,下列描述不正确的是?

    正确答案: B D 你的答案: A C (错误)

    用volatile修饰的变量,每次更新对其他线程都是立即可见的。
    对volatile变量的操作是原子性的。
    对volatile变量的操作不会造成阻塞。
    不依赖其他锁机制,多线程环境下的计数器可用volatile实现。
    

解析:

一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:

  1. 保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。
  2. 禁止进行指令重排序。

volatile只提供了保证访问该变量时,每次都是从内存中读取最新值,并不会使用寄存器缓存该值——每次都会从内存中读取。

而对该变量的修改,volatile并不提供原子性的保证。

由于及时更新,很可能导致另一线程访问最新变量值,无法跳出循环的情况

多线程下计数器必须使用锁保护。

猜你喜欢

转载自blog.csdn.net/qq_37924905/article/details/108570376
今日推荐