• 面试题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
  • 相关阅读:
    2-1Java简介
    02-安装JDK
    任务34:Cookie-based认证实现
    任务31:课时介绍 & 任务32:Cookie-based认证介绍 &任务33:34课 :AccountController复制过来没有移除[Authorize]标签
    任务30:RoutingMiddleware介绍以及MVC引入
    任务29:自己动手构建RequestDelegate管道
    任务28:RequestDelegate管道实现思路
    任务27:Middleware管道介绍
    任务26:dotnet watch run 和attach到进程调试
    任务25:IHostEnvironment和 IApplicationLifetime介绍
  • 原文地址:https://www.cnblogs.com/coder306/p/13087692.html
Copyright © 2020-2023  润新知