第一周笔试题总结

ArrayList list=new ArrayList(20);中的list扩充几次

A. 0

B. 1

C. 2

D. 3

正确答案  A

我的答案  C    

解析:此代码并没有进行任何扩容操作,因为这是 ArrayList 的初始化,而不是扩容。这个初始化操作只是创建了一个具有20个初始容量的空 ArrayList。(真是坑啊,你以为是他在第二层,实际他在第一层!)

关于Map的实现类说法正确的是

A. HashMap允许null值和null键,HashTable允许null键,不允许null值

B. TreeMap底层是采用红黑树实现的,迭代时拥有固定顺序即元素添加时的顺序。

C. ConcurrentHashMap采用链式地址法解决哈希冲突,使用分段锁的方式保存线程安全。

D. HashMap底层采用数组(位桶)+链表+红黑树的方式实现,使用红黑树的目的是为了减少内存的占用。

正确答案  C

我的答案  B

解析:TreeMap底层是采用红黑树实现的,添加元素会自动排序,迭代时所有元素都是排序好的顺序。

以下对红黑树特性描述不正确的是?

A. 结点必定是红色或黑色的

B. 红黑树的根结点是黑色的

C. 每个黑色结点的子结点都是红色的

D. 从任意一个结点到每个叶子结点都经过相同数量的黑结点

正确答案  C

我的答案  D    

红黑树知识点:

红黑树(Red-Black Tree)是一种自平衡的二叉查找树,其中每个节点都有一个颜色属性,可以是红色或黑色。红黑树的平衡是通过以下五个性质来确保的:

1. 每个节点要么是红色,要么是黑色。
2. 根节点是黑色。
3. 所有叶子节点(NIL节点,空节点)都是黑色。
4. 如果一个节点是红色的,则它的两个子节点都是黑色的(没有两个连续的红色节点)。
5. 从任一节点到其每个叶子的所有简单路径都包含相同数目的黑色节点。

红黑树的这些性质确保了从根到叶子的最长路径不会超过最短路径的两倍。因此,红黑树大致是平衡的,查找操作的最坏情况时间复杂度能够保持在 O(log n)。

红黑树常用于需要快速查找、插入和删除的场景,例如在C++ STL中的 `std::map` 和 `std::set` 就是使用红黑树实现的。

红黑树的操作:

插入:在插入新节点时,为了保持红黑树的性质,可能需要进行颜色变换和旋转操作。
删除:删除节点时,也可能需要进行颜色变换和旋转来保持树的平衡。
查找:红黑树的查找操作与普通的二叉查找树相同,从根节点开始,比较节点值和查找值,根据比较结果决定是向左子树还是向右子树进行查找。

红黑树是一种高级的数据结构,它结合了二叉查找树的效率和平衡树的自平衡特性,使其在实际应用中非常实用。
 

Java创建线程的方式不包括

A. 继承Thread类,重写run方法

B. 实现Runnable接口,实现run方法

C. 实现Callable接口,实现call方法

D. 使用连接池,配置连接池的相关参数

正确答案  D

我的答案  C    

解析:线程池不是创建线程的方式,而是一种管理线程的工具,它不是直接创建线程的方式,而是对线程的创建和使用进行管理的一种机制。

类________________是异常处理机制中的根类,它有两个子类________________、________________。

正确答案

Throwable,Error,Exception

请写明该程序编译执行输出结果

public class Test{
    static{ 
        v=5; System.out.print(9); 
    }
    static int v=1;   

    public Test(){
        System.out.print(v);
    }	
    
    public static void main(String[] args){
        System.out.print(v); 
        Test t= new Test();
    }
}

正确答案  911

我的答案  951

解析:

什么是死锁?死锁的四个必要条件?(背全,漏了2)

        死锁:多个线程并发执行时,各自占有了部分资源不放弃,又在等待其它线程占用的资源,陷入无限的等待状态

1- 互斥条件:线程对资源的占用是互斥独占的,一个线程占用资源时其它线程不可访问

2- 请求保持:线程占用了一些资源不释放,又要请求占用新的资源

3- 不可剥夺:线程占用资源时,其它线程不可抢夺,只能自己释放

4- 环路等待:多个线程对资源的占用和请求形成环形链

什么是类加载器?类加载器有哪些?它们的作用?(一个没记住,不多说,背!)

        类加载器是JVM系统中的一部分,主要负责将Java的字节码文件加载到JVM内存中以供执行。

类加载器包括:

启动类加载器:C++编写,负责加载JRE核心类库中的类

扩展类加载器:Java编写,ClassLoader子类,负责加载JRE扩展类库

应用类加载器:Java编写,ClassLoader子类,负责加载当前应用下的类

Java中获取类的Class对象的方式有几种?

正确答案

1- 对象.getClass()

2- 类名.class

3- Class.forName("类的全限定名");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值