栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

2022-8-07 第七小组 学习日记 (day31)周测

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

2022-8-07 第七小组 学习日记 (day31)周测

目录

一、选择题(每题3分)共 60分

1.Java语言中负责并发管理机制是(单选题)

2. 下列关于线程的说法,正确的是()单选题

3. 当线程调用start( )后,其所处状态为( )。(选择一项)

4.下列关于线程的优先级说法中,正确的是( BD )。(选择两项)

5. 以下选项中关于Java中线程控制方法的说法正确的是( AD )。(选择二项)

6. 关于sleep()和wait(),以下描述错误的一项是()单选题

7. 以下锁机机制中,不能保证线程安全的是()单选题

8. 下面关于线程池好处说法不正确的是(单选题)

9、单选题 以下说法错误的是? [单选题] *

10、下列对关键字synchronized说法错误的是()[单选题] *

11、以下说法错误的是?(选择一项) [单选题] *

12 . 如果一个list初始化为{5,3,1},执行以下代码后,其结果为()?

13.   单选题 已知ArrayList的对象是list,以下哪个方法是判断ArrayList中是否包含”Hello”?[单选题] *

14. 单选题 下列哪个方法可以获取列表指定位置处的元素(选择一项)

15. 多选题 下列有关HashSet的描述正确的是()(选择两项)

16. 单选题 以下关于Set对象的创建错误的是?(选择一项) *

17.以下关于Set和List的说法,正确的是?(选择一项)

18. 下面哪个Set是排序的?单选题

19. 下列关于泛型的说法,错误的是()单选题

20.关于枚举说法不正确的是;单选题

二、简答题:每题5分 共20分

1. ArrayList和LinkedList的区别

2.List和Set的区别

3.Set集合如何确保数据的不重复?

4.run()和start()的区别

三、上机题

第一题:把成绩低于80的成绩从集合中删除:

第二题:写两个线程,一个线程打印 1-52,另一个线程打印A-Z,打印顺序是12A34B…5152Z

总结 


《Java训练营》 第四周考试题

1.D

2.B

3.C

4.BD

5.AD

6.D

7.C

8.D

9.D

10.C

11.D

12.B

13.A

14.D

15.AC

16.A

17.C

18.C

19.C

20.D

一、选择题(每题3分)共 60分

1.Java语言中负责并发管理机制是(单选题)

A。垃圾回收

B。虚拟机

C。代码安全

D。多线程

答案是 D

2. 下列关于线程的说法,正确的是()单选题

A.两个线程可以共享各类资源

B.一个进程可以包含多个线程

C.一个线程可以包含多个进程

D.单个CPU的计算机上,2个线程实际上不能并发执行

【但无论如何,都是通过不断切换需要运行的线程让其运行的方式就叫并发(concurrent)。】

【在多CPU系统中,可以让两个以上的线程同时运行,这种可以同时让两个以上线程同时运行的方式叫做并行(parallel)。】

并发和并行是即相似又有区别(微观概念):

并行:指两个或多个事件在同一时刻点发生;

并发:指两个或多个事件在同一时间段内发生。

答案是B

3. 当线程调用start( )后,其所处状态为( )。(选择一项)

A.阻塞状态

B. 运行状态

C. 就绪状态

D. 新建状态

解析:线程的五个状态也就是它的生命周期:

新建状态----通过new关键字来创建线程对象

就绪状态----调用start()方法

运行状态----调用run()方法

阻塞状态----调用sleep()、wait()、join() 、yield()、interrupt ()等方法

消亡状态----调用stop()方法,但是此方法已经过时

答案是:C

4.下列关于线程的优先级说法中,正确的是( BD )。(选择两项)

A。线程的优先级是不能改变的

B.线程的优先级是在创建线程时设置的

C.在创建线程后的任何时候都可以重新设置

D.线程的优先级的范围在1-10之间

 解析:线程的优先级可以通过setPriority(int newPriority)的方法进行设置

         线程一共有三个优先级,分别是:最低优先级(1) 中等优先级(5)

         最高优先级(10),咱们经常写的main方法就是中等优先级线程。

         A:线程的优先级是可以更改也可以获取,但是有一点,即使设置为最高

            优先级也不一定先执行,只是它优先执行的几率比较高。

         B:线程的优先级是在创建时进行设置,通过setPriority()方法设置

       C:正在执行的线程是不允许重新设置线程优先级的。

5. 以下选项中关于Java中线程控制方法的说法正确的是( AD )。(选择二项)

A.join ( ) 的作用是阻塞指定线程等到另一个线程完成以后再继续执行

B.sleep ( ) 的作用是让当前正在执行线程暂停,线程将转入就绪状态

C.yield ( ) 的作用是使线程停止运行一段时间,将处于就绪状态

D.setDaemon( )的作用是将指定的线程设置成守护线程

A:join()方法—线程的强制加入,加入的线程执行完毕之后再执行其他线程

B:sleep()方法—线程休眠,等时间过时,线程处于运行状态

C:yield()方法—线程礼让,让出CUP资源,其他线程先执行,有些与join()。

D:setDaemon()方法--将指定的线程设置成后台线程

6. 关于sleep()和wait(),以下描述错误的一项是()单选题

A. sleep是线程类(Thread)的方法,wait是Object类的方法

B. sleep不释放对象锁,wait放弃对象锁

C. sleep暂停线程、但监控状态任然保持,结束后会自动恢复

D. wait后进入等待锁定池,只针对此对象发出notify方法后获取对象锁进入运行状态。

答案:D

分析:针对此对象的notify方法后获取对象锁并进入就绪状态,而不是运行状态。另外针对此对象的notifyAll方法后也可能获取对象锁并进入就绪状态,而不是运行状态

7. 以下锁机机制中,不能保证线程安全的是()单选题

A. Lock

B. Synchronized

C. Volatile

答案:C

8. 下面关于线程池好处说法不正确的是(单选题)

A。 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。

B。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。

C。提高线程的可管理性。

D。建立线程池会额外增加系统开销

答案 D

9、单选题 以下说法错误的是? [单选题] *

A sleep方法的参数是以毫秒为单位的

B 使用实现Runnable接口的方式创建线程,一定要重写run方法

C 当创建线程对象,线程即进入新建状态

D 调用sleep方法时,不需要处理异常(正确答案)

10、下列对关键字synchronized说法错误的是()[单选题] *

A synchronized(同步),即协调不同线程之间的工作

B synchronized关键字可以用在成员方法中

C 保证多个线程可以同时执行和结束

D 保证共享对象在同一时刻只能被一个线程访问

答案是 C  

11、以下说法错误的是?(选择一项) [单选题] *

A wait()方法用于使线程等待

B notify()方法用于唤醒一个线程

C notifyAll()方法用于唤醒多个线程

D 使用wait()方法阻塞的线程,可以不用唤醒

答案是 D

12 . 如果一个list初始化为{5,3,1},执行以下代码后,其结果为()?

nums.add(6);

nums.add(0,4);

nums.remove(1);

A。[5, 3, 1, 6]

B。[4, 3, 1, 6]

C。[4, 3, 6]

D。[5, 3, 6]

答案是:B

13.   单选题 已知ArrayList的对象是list,以下哪个方法是判断ArrayList中是否包含”Hello”?[单选题] *

A list.contains("hello");

B list.add("hello");

C list.remove("hello");

D list.get("hello");

答案是 A

14. 单选题 下列哪个方法可以获取列表指定位置处的元素(选择一项)

A add(E e)

B remove()

C size()

D get(int index)

答案是 D

15. 多选题 下列有关HashSet的描述正确的是()(选择两项)

A HashSet是Set的一个重要实现类

B HashSet中的元素无序但可以重复

C HashSet中只允许一个null元素

D 不适用于存取和查找

答案是:AC

16. 单选题 以下关于Set对象的创建错误的是?(选择一项) *

A Set set=new Set();

B Set set=new HashSet();

C HashSet set=new HashSet();

D Set set=new HashSet(10);

答案是 A

17.以下关于Set和List的说法,正确的是?(选择一项)

A Set中的元素是可以重复的

B List中的元素是无序的

C HashSet中只允许有一个null元素

D List中的元素是不可以重复的

答案是 C

18. 下面哪个Set是排序的?单选题

A.LinkedHashSet

B.HashSet

C.TreeSet

D.AbstractSet

答案是 C

19. 下列关于泛型的说法,错误的是()单选题

A、泛型是一种参数化类型

B、增强了程序的灵活性和安全性

C、可以取代继承机制 

D、泛型是JDK1.5出现的新特性

答案:C

泛型是Java SE1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

T T

20.关于枚举说法不正确的是;单选题

A。枚举是一组常量的集合

B。不需要提供Set方法,枚举对象值通常为只读。

C。对枚举对象/属性使用final和static关键字修饰,实现底层优化

D。枚举对象名通常使用全部小写,常量的命名规范

答案是 D

二、简答题:每题5分 共20分

1. ArrayList和LinkedList的区别

  数据结构不同

    1. 数组

    2. 双向链表

2.List和Set的区别

   List:有序可重复

  Set:无序不可重复

3.Set集合如何确保数据的不重复?

   重写hashcoce()和equals()

4.run()和start()的区别

   start()启动线程,线程进入就绪状态

run() 执行线程任务,线程是running运行状态

三、上机题

第一题:把成绩低于80的成绩从集合中删除:

首先定义一个ArrayList集合,在生成随机数,把成绩随机生成出来存到集合中,

最后在遍历集合,把成绩小于80的从集合中删除,删除用到remove()方法

import java.util.ArrayList;
import java.util.Random;
 
//成绩低于80的从集合中删除
public class ArrayList01 {
    public static void main(String[] args) {
 
        ArrayList list = new ArrayList<>();
        Random r = new Random();
        for (int i = 0; i < 20; i++) {
            int i1 = r.nextInt(100);
            list.add(i1);
        }
 
        for (int i = 0; i < list.size(); i++) {
            int score = list.get(i);
            if (score < 80){
                list.remove(i);
                i--;
            }
        }
        System.out.println(list);
    }
}

 

第二题:写两个线程,一个线程打印 1-52,另一个线程打印A-Z,打印顺序是12A34B…5152Z
class Print1{
    private int flag=1;
    private int count=1;
    public synchronized void printNum(){
            while (flag!=1){
                try{
                    wait();
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
        System.out.print(2*count-1 );
        System.out.print(2*count);
        flag=2;
        notify();
        }

    public synchronized void Zimu(){
            while (flag!=2){
                try{
                    wait();
                }catch (InterruptedException e){
                    e.printStackTrace();
                }
            }
            System.out.print((char)(count-1+'A'));
            count++;
            flag=1;
            notify();
    }
}

public class TestAA {
    public static void main(String[] args) {
        Print1 print=new Print1();
        new Thread (()->{
            for(int i=0;i<26;i++){
                print.printNum();
            }
        }).start();

        new Thread(()->{
            for(int i=0;i<26;i++){
                print.Zimu();
            }
        }).start();
    }
}

 

总结 

        考的较差,但这是我的真实水平,我知道哪里是我的缺点,哪里有不足,哪里需要加强学习,线程、集合这块知识我自从锁之后就开始懵逼,对集合的掌握几乎于零,有时间我将会好好回头复习,把落下课程补回去,锁、List、Set、HashMap我来了!! 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1041068.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号