• Java刷题day23


    1. 考虑下面这个简单的例子,让我们看看reflection是如何工作的。

    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);
    }
    }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    其中"c.getDeclaredMethods"的作用是:
    A 取得类的公有方法对象
    B 取得类的所有公有方法名称
    C 取得类的所有方法对象
    D 以上选项都不正确
    答案:D
    解析:

    • **public Method[] getDeclaredMethods()**返回类或接口声明的所有方法,包括public, protected, default (package) 访问和private方法的Method对象,但不包括继承的方法。当然也包括它所实现接口的方法。
    • **public Method[] getMethods()**返回类的所有public方法,包括其继承类的公用方法,当然也包括它所实现接口的方法。

    C选项是方法,不是对象。

    2.以下多线程对int型变量x的操作,哪个不需要进行同步()

    A ++x
    B x=y
    C x++
    D x=1
    答案:D
    解析:

    • A.由于y的值不确定,所以要加锁;

    • B,C 两个在多线程情况下是必须要加锁的,因为他们是先被读入寄存器,然后再进行+1操作,如果没有加锁,那么可能会出现数据异常;

    • D 原子操作,所以不需要加锁

      原子性:指该操作不能再继续划分为更小的操作。
      Java中的原子操作包括
      1、除long和double之外的基本类型的赋值操作
      2、所有引用reference的赋值操作
      3、java.concurrent.Atomic.* 包中所有类的一切操作

    3.在单处理器系统中,如果同时存在有12个进程,则处于就绪队列中的进程数量最多为()

    A 1
    B 9
    C 10
    D 11
    答案:D
    解析:一个在运行,其余十一个都在就绪队列中。

    4. 以下关于多线程的叙述中错误的是()

    A 线程同步的方法包括使用临界区,互斥量,信号量等
    B 两个线程同时对简单类型全局变量进行写操作也需要互斥
    C 实现可重入函数时,对自动变量也要用互斥量加以保护
    D 可重入函数不可以调用不可重入函数
    答案:C
    解析:可重入函数可认为是可以被中断的函数,自动变量定义的时候才被创建,函数返回时,系统回收空间,他是的是局部作用域变量,不需要互斥量。可重入函数对全局变量才需要互斥量保护。

    5. 系统死锁的可能的原因是()

    A 进程死循环
    B 资源循环等待
    C 程序内存访问越界
    D 进程释放资源
    答案:B
    解析:
    (1) 互斥条件:一个资源每次只能被一个进程使用。
    (2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
    (3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
    (4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

    6. 整数0x12345678,在采用bigendian中内存的排序序列是( )

    A 12 34 56 78
    B 78 56 34 12
    C 87 65 43 21
    D 21 43 65 87
    答案:A
    解析:bigendian:大端存储,即高地址的数据存储在低地址,低地址的数据存储在高地址
    整数0x12345678 12所在为低地址,所以存储在内存中的高地址处,78所在为高地址,所以存储在内存中的低地址处
    而内存中的布局为:

    高地址                                                    低地址
    12                                                        78
    
    • 1
    • 2

    7. 使用C语言将一个1G字节的字符数组从头到尾全部设置为字’A’,在一台典型的当代PC上,需要花费的CPU时间的数量级最接近()

    A 0.001秒
    B 1秒
    C 100秒
    D 2小时
    答案:B
    解析:执行1条语句约1ns即10的-9次方秒,1G=1024M=10241024k=10241024* 1024byte,每次赋值1byte都要执行一次语句,故至少花费102410241024*10^-9=1.073741824s

    8. 对于普通的计算机,对以下事件的平均耗时从小到大排序为____:

    A.读取1KB内存数据 B.从硬盘连续读取1KB数据 C.读取一次L2缓存 D.一次磁盘寻道
    A C,A,D,B
    B C,D,A,B
    C D,C,A,B
    D D,A,C,B
    答案:A
    解析:首先, 速度最快的当然是缓存, 接着消耗时间最少的是内存, 磁盘寻道时间, 然后是硬盘连续读取时间

    一个个来分析, L2缓存是level2缓存是二级缓存的意思, 通过缓存直接与cpu进行数据交互, 这个是最快最直接的。
    这部分内容涉及到cpu缓存, 分为一级缓存,二级缓存,三级缓存。

    • 一级缓存(L1 Cache)就是指cpu第一层级的高速缓存, 主要担当的工作是缓存指令和缓存数据。 一级缓存容量与结构对cpu的影响十分大, 但是由于它的结构比较复杂,又考虑到成本等因素, 一般来说,cpu的一级缓存较小, 通常cpu的一级缓存也就做到256kb左右的水平。
    • 二级缓存(L2 Cache66)就是指cpu的第二层级的高速缓存, 而二级缓存的容量会直接影响到cpu的性能, 二级缓存的容量越大越好。 例如intel的第八代i7-8700处理器, 共有六个核心数量, 而每个核心都拥有256kb的二级缓存, 属于各核心独享, 这样二级缓存总数就达到了1.5mb。
    • 三级缓存(L3 Cache)就是指cpu的第三层级的高速缓存, 其租用是进一步降低内存的延迟, 同时提升海量数据量计算时的性能。 和一级缓存,二级缓存不同的是, 三级缓存是核心共享的, 能够将容量做的很大。
      第二个,内存读取时间, 当通过缓存寻找数据时发现数据在缓存中不存在,这时需要通过到内存中去寻找, 但是内存的传输速度就没有缓存这么快了, 所以, 内存读取数据的时间消耗要大于缓存。
      第三个,从硬盘连续读取1kb,这个意思就是读取硬盘数据, 其中读取硬盘数据的时间消耗主要是由寻道时间, 数据传输时间, 还有旋转时间三部分时间组成, 所以磁盘寻道时间一定小于总的此案读取时间

    9. 分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数( )

    A 成正比
    B 成反比
    C 无关
    D 成固定值
    答案:C
    解析:
    由于内存的大小是固定的,所以无论页面是大是小,可以进入内存的大小也是固定的,最多不超过内存的大小。实际上,分页的大小并不影响进入内存作业的数量。从宏观上看,进入内存的页面内容是没有变化的。 所以分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数关系不大。

    10. 关于子进程和父进程的说法,下面哪一个是正确的()

    A 一个父进程可以创建若干个子进程,一个子进程可以从属于若干个父进程
    B 父进程被撤销时,其所有子进程也被相应撤消
    C 子进程被撤销时,其从属的父进程也被撤销
    D 一个进程可以没有父进程或子进程
    答案:D
    解析:
    1.孤儿进程
    如果父进程先退出,子进程还没退出那么子进程将被 托孤给init进程,这是子进程的父进程就是init进程(1号进程).
    init进程没有父进程.

    2.僵尸进程
    进程终止后进入僵死状态(zombie),等待告知父进程自己终止,后才能完全消失.但是如果一个进程已经终止了,但是其父进程还没有获取其状态,那么这个进程就称之为僵尸进程.僵尸进程还会消耗一定的系统资源,并且还保留一些概要信息供父进程查询子进程的状态可以提供父进程想要的信息.一旦父进程得到想要的信息,僵尸进程就会结束.

    11. 关于线程和进程,下面说法正确的是()

    A 终止一个进程比终止一个线程花费的时间少
    B 进程切换比同一进程内部的线程切换花费的时间少
    C 线程提高了不同执行程序间的通信效率
    D 进程和线程都是资源分配和调度的基本单位
    答案:C
    解析:
    线程提高了不同的执行程序间通信的效率。在大多数操作系统中,独立进程间的通信需要内核的介入,以提供和保护通信所需要的机制。但是,由于在同一个进程中的线程共享内存和文件,它们无须调用内核就可以互相通信。

    12. 进程调度时,下列进程状态的变化过程哪一项是不可能发生的()

    A 阻塞挂起->阻塞
    B 就绪挂起->就绪
    C 就绪挂起->阻塞挂起
    D 阻塞挂起->就绪挂起
    答案:C
    解析:在这里插入图片描述
    C跨越了两个阶段

  • 相关阅读:
    mini-vue 代码块
    你可能从未使用过的13个Python特性
    【2012NOIP普及组】T3. 摆花 试题解析
    6-1 汉诺塔
    【Vue3从零开始-实战】S16:详情页样式优化及tab栏内容联动功能实现
    FPGA实现平衡小车(文末开源!!)
    Kafka-Java四:Spring配置Kafka消费者提交Offset的策略
    法语初级学习笔记-03-疑问句
    一、爬虫基本概念
    带你走进并发编程的世界
  • 原文地址:https://blog.csdn.net/m0_52322019/article/details/126145444