面试题4

JAVA笔试题(40分钟)

选择题(每题5分,共40分)

1. 下面的程序运行结果是(false

String str1 = “zhongan”;

String str2 = “zhong” + new String(“an”);

System.err.println(str1 == str2);

2. 下列说法正确的是(C

A. class中的constructor不可省略

B. constructor必须与class同名,但方法不能与class同名

C. constructor在一个对象被new时执行

D. 一个class只能定义一个constructor

3. 下列程序的运行结果:(C

public static void main(String args[]){

Thread t = new Thread(){

Public void run(){

Show();

}

};

t.run();

System.out.pint(“abc”);

}

static void show(){

System.out.println(“xyz”);

}

A. abcxyz    B.xyzabc    C.abcxyzxyzabc    D.都不输出

4.下面哪个流类属于面向字符的输入流(D   

A.BufferedWriter    B.FileInputStream  

C.ObjectInputStream  D.InputStreamReader

5.不通过构造函数也能创建对象吗(A

A.              B.]

解析:Java创建对象的几种方式(重要):
(1) new语句创建对象,这是最常见的创建对象的方法。
(2) 运用反射手段,调用java.lang.Class或者java.lang.reflect.Constructor类的newInstance()实例方法。
(3) 调用对象的clone()方法。
(4) 运用反序列化手段,调用java.io.ObjectInputStream对象的 readObject()方法。
(1)(2)都会明确的显式的调用构造函数 ;(3)是在内存上对已有对象的影印,所以不会调用构造函数 ;(4)是从文件中还原类的对象,也不会调用构造函数。

6.下面程序的运行结果是()

 image.png

结果:

static A

static B

T'm A class

HelloA

T'm B class

HelloB

 

7. System.out.println(5+2):的输出结果应该是(A).

A52    B.7    C.2    D.5

8. 下面的方法,当输入为2的时候的返回值是多少?( D)

Public  static  int  getValue(int  i){
    int  result = 0;
    switch (i) {
    case 1:
        Result = result +i;
    case 2:
       result = result +i *2;
    case 3:
       result = result + i *3;
    }
    return  result;
}

 

A 0     B 2        C 4      D 10

 

, 基础部分

1. 请在下面的表格中,使用√勾选不同可见性关键字对应的作用域

 image.png

2.什么叫线程安全,什么叫线程不安全? ThreadLocal为什么能避免线程安全问题?

线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。

TreadLocal实现线程安全的原理:

ThreadLocalMapThreadLocal类的一个静态内部类,它实现了键值对的设置和获取(对比Map对象来理解),每个线程中都有一个独立的ThreadLocalMap副本,它所存储的值,只能被当前线程读取和修改。ThreadLocal类通过操作每一个线程特有的ThreadLocalMap副本,从而实现了变量访问在不同线程中的隔离。因为每个线程的变量都是自己特有的,完全不会有并发错误。还有一点就是,ThreadLocalMap存储的键值对中的键是this对象指向的ThreadLocal对象,而值就是你所设置的对象了。

 

2. try{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?

finally中的内容会被执行,在return后执行。

下面代码输出什么?

public static void main(String[] args) {
    System.out.println(a());
}

public static String a() {
    String s = null;
    try {
        s = "b";
        return s;
    }catch (Exception e) {
        return "e";
    }finally {
        return "f";
    }
}




查看原文:http://www.coder306.cn/?p=157
posted @ 2018-03-05 10:40  两粒  阅读(147)  评论(0编辑  收藏  举报