10.11牛客刷题

1 以下语句的执行结果是什么?
1+”10”+3+”2”
正确答案: A 你的答案: A (正确)
A ”11032”
B “16”
C 16
D “32101”
2 以下不属于构造方法特征的是()
正确答案: D 你的答案: D (正确)
A 构造方法名与类名相同
B 构造方法不返回任何值,也没有返回类型
C 构造方法在创建对象时调用,其他地方不能显式地直接调用
D 每一个类只能有一个构造方法
3 在Java中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同,传回的值也可以不相同。这种面向对象程序特性称为()
正确答案: C 你的答案: C (正确)
A 隐藏
B 重写
C 重载
D Java不支持此特性
4 JUnit主要用来完成什么
正确答案: D 你的答案: D (正确)
A 发送HTTP请求
B 建立TCP连接
C 集成测试
D 单元测试
5 下面关于Java类的构造方法的说法中正确的是:( )
正确答案: A 你的答案: A (正确)
A 一个类至少有一个构造方法
B 构造方法的返回值类型必须是void
C 构造方法的可见性修饰符必须是public
D 构造方法必须显式的定义
6 在java7中,下列哪个说法是正确的:
正确答案: D 你的答案: B (错误)
A ConcurrentHashMap使用synchronized关键字保证线程安全
B HashMap实现了Collection接口
C Arrays.asList方法返回java.util.ArrayList对象
D SimpleDateFormat对象是线程不安全的
解析:hashMap在单线程中使用大大提高效率,在多线程的情况下使用hashTable来确保安全。hashTable中使用synchronized关键字来实现安全机制,但是synchronized是对整张hash表进行锁定即让线程独享整张hash表,在安全同时造成了浪费。concurrentHashMap采用分段加锁的机制来确保安全
7 下列哪个说法是正确的()
正确答案: D 你的答案: B (错误)
A ConcurrentHashMap使用synchronized关键字保证线程安全
B HashMap实现了Collction接口
C Array.asList方法返回java.util.ArrayList对象
D SimpleDateFormat是线程不安全的
8 其中"c.getDeclaredMethods"的作用是:

import java.lang.reflect.*;
public class DumpMethods{
    public static void main(String[] args) {
        try {
            Class c=Class.forName(args[0]);
            Method m[]=c.getDeclaredMethods();
            for (int i = 0; i < m.length; i++) {
                System.out.println(m[i].toString());
            }
        } catch (Throwable e) {
            System.err.println(e);
        }
    }
}

正确答案: D 你的答案: C (错误)
A 取得类的公有方法对象
B 取得类的所有公有方法名称
C 取得类的所有方法对象
D 以上选项都不正确
解析:public Method[] getDeclaredMethods()返回类或接口声明的所有方法,包括public, protected, default (package) 访问和private方法的Method对象,但不包括继承的方法。当然也包括它所实现接口的方法。
public Method[] getMethods()返回类的所有public方法,包括其继承类的公用方法,当然也包括它所实现接口的方法。
9 下面有关java threadlocal说法正确的有?
正确答案: A B C D 你的答案: B D (错误)
A ThreadLocal存放的值是线程封闭,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
B 线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
C 在Thread类中有一个Map,用于存储每一个线程的变量的副本。
D 对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式
解析:ThreadLocal存放的值是线程封闭,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递
线程的角度看,每个线程都保持一个对其线程局部变量副本的隐式引用,只要线程是活动的并且 ThreadLocal 实例是可访问的;在线程消失之后,其线程局部实例的所有副本都会被垃圾回收
在Thread类中有一个Map,用于存储每一个线程的变量的副本。
对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式
10 关于ThreadLocal类 以下说法正确的是
正确答案: D E 你的答案: 空 (错误)
A ThreadLocal继承自Thread
BThreadLocal实现了Runnable接口
C ThreadLocal重要作用在于多线程间的数据共享
D ThreadLocal是采用哈希表的方式来为每个线程都提供一个变量的副本
E ThreadLocal保证各个线程间数据安全,每个线程的数据不会被另外线程访问和破坏
解析:选DE.
1、ThreadLocal的类声明:
public class ThreadLocal
可以看出ThreadLocal并没有继承自Thread,也没有实现Runnable接口。所以AB都不对。
2、ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量。
所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立,C选项错。
由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,不会被其他线程访问,
变量被彻底封闭在每个访问的线程中。所以E对。
3、ThreadLocal中定义了一个哈希表用于为每个线程都提供一个变量的副本:
static class ThreadLocalMap {

    static class Entry extends WeakReference<ThreadLocal> {
        /** The value associated with this ThreadLocal. */
        Object value;

        Entry(ThreadLocal k, Object v) {
            super(k);
            value = v;
        }
    }

    /**
     * The table, resized as necessary.
     * table.length MUST always be a power of two.
     */
    private Entry[] table;

}
所以D对。

猜你喜欢

转载自blog.csdn.net/fearless212/article/details/83242030