Java笔试题总结

文章详细解释了HashSet如何利用equals()和hashCode()方法区分元素,以及Java中构造方法执行顺序和equals方法的行为。此外,还涵盖了内存管理、反射API在获取类方法中的应用,以及多线程中的同步与互斥问题。
摘要由CSDN通过智能技术生成
  1. HashSet子类依靠()方法区分重复元素。
    A toString(),equals()
    B clone(),equals()
    C hashCode(),equals()
    D getClass(),clone()

答案:C
解析: 先调用对象的hashcode方法将对象映射为数组下标,再通过equals来判断元素内容是否相同

  1. 以下程序执行的结果是:
    class X{
    Y y=new Y();
    public X(){
    System.out.print(“X”);
    }
    }
    class Y{
    public Y(){
    System.out.print(“Y”);
    }
    }
    public class Z extends X{
    Y y=new Y();
    public Z(){
    System.out.print(“Z”);
    }
    public static void main(String[] args) {
    new Z();
    }
    }
    A ZYXX
    B ZYXY
    C YXYZ
    D XYZX

答案: C
解析: 执行子类构造方法时,先调用父类的构造方法,成员变量的初始化在构造方法中执行

  1. 有这么一段程序:
    public class Test{
    public String name=“abc”;
    public static void main(String[] args){
    Test test=new Test();
    Test testB=new Test();
    System.out.println(test.equals(testB)+“,”+test.name.equals(testB.name));
    }
    }
    请问以上程序执行的结果是()
    A true,true
    B true,false
    C false,true
    D false,false

答案: C
解析: Test这个类没有重写equals方法,因此在调用的时候默认执行的是object提供的equals方法,比较的是两个对象的地址,而字符串类型重写了equals方法,比较的是对象的内容是否相同

  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);
    }
    }
    }
    其中"c.getDeclaredMethods"的作用是:
    A 取得类的公有方法对象
    B 取得类的所有公有方法名称
    C 取得类的所有方法对象
    D 以上选项都不正确
    答案 : D
    解析: 通过反射获取类的方法有两个大方法,getmethods和getDeclaredMethods
    getmethods: 获取对象实现或继承的所有的public修饰的方法,即包括继承的方法
    getDeclaredMethods: 获取对象所有的方法,不包括继承的

  2. 有如下4条语句:()
    Integer i01=59;
    int i02=59;
    Integer i03=Integer.valueOf(59);
    Integer i04=new Integer(59);
    以下输出结果为false的是:
    A System.out.println(i01==i02);
    B System.out.println(i01 ==i03);
    C System.out.println(i03 ==i04);
    D System.out.println(i02 ==i04);

答案: C
解析:

  • int与integer进行比较时,编译器会进行优化,将integer进行拆箱,变为int类型
  • i03执行valueof方法为装箱操作,具体细节如下
  • 在这里插入图片描述
  • i01为自动装箱,因此i01与i03相等
  • i04通过new关键字在堆中创建了一个新的对象,因此C选项中i03就与i04地址是不一样的
  1. 在单处理器系统中,如果同时存在有12个进程,则处于就绪队列中的进程数量最多为()
    A 1
    B 9
    C 10
    D 11

答案: D
解析: 总共12个进程,cpu目前必然会会从存储进程的队列中拿出一个进行执行,那么在队列中处于就绪状态的进程就只剩下11个了

  1. 以下关于多线程的叙述中错误的是()
    A 线程同步的方法包括使用临界区,互斥量,信号量等
    B 两个线程同时对简单类型全局变量进行写操作也需要互斥
    C 实现可重入函数时,对自动变量也要用互斥量加以保护
    D 可重入函数不可以调用不可重入函数

答案: C
解析: 线程同步的方法包括使用临界区,互斥量,事务,信号量
可重入函数: 函数被中断后返回来继续执行时,不会有影响
不可重入函数: 函数被中断后,因为可能会使用到全局变量以及中断向量表等,对代码会产生影响
自动变量: 局部变量
C选项中,因为局部变量是线程私有的,不存在多线程下的安全问题,也就不需要互斥量进行保护

  1. 整数0x12345678,在采用bigendian中内存的排序序列是( )
    A 12 34 56 78
    B 78 56 34 12
    C 87 65 43 21
    D 21 43 65 87

答案: A
解析: bigendian为大端模式,是指将数据的高字节保存在低地址中,而低字保存在高地址中
低地址–>高地址

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

答案: B
解析: 执行1bit会消耗1ns,级10^-9s

  1. 对于普通的计算机,对以下事件的平均耗时从小到大排序为____:
    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指的是level 2,也就是二级缓存,通过缓存直接与cpu进行交互,是最快的
读取硬盘的时间主要是三部分,磁盘寻道时间,数据传输时间,旋转时间

  1. 分页式虚拟存储管理系统中,页面的大小与可能产生的缺页中断次数( )
    A 成正比
    B 成反比
    C 无关
    D 成固定值

答案: C

  1. 进程调度时,下列进程状态的变化过程哪一项是不可能发生的()
    A 阻塞挂起->阻塞
    B 就绪挂起->就绪
    C 就绪挂起->阻塞挂起
    D 阻塞挂起->就绪挂起

答案: C
解析:
在这里插入图片描述

  1. 处于运行状态的操作系统程序应放在()
    A 寄存器中
    B 主存中
    C 辅存中

答案:
解析: 寄存器: 容量有限,只是加载cpu执行代码行所需要的数据(从主存中加载到寄存器)
辅存: 当线程处于挂起状态时,会存储在辅存中

  1. 在系统内存中设置磁盘缓冲区的主要目的是()
    A 减少磁盘 I/O 次数
    B 减少平均寻道时间
    C 提高磁盘数据可靠性
    D 实现设备无关性

答案: A
解析: cpu的执行速度比磁盘io的速度要快很多,对于常用的数据,就会存储在磁盘缓冲区中,可以减少io次数

  1. 下列选项中,会导致进程从执行态变为就绪态的事件是()
    A 执行 P(wait)操作
    B 申请内存失败
    C 启动 I/O 设备
    D 被高优先级进程抢占

答案: D
解析:abc条件满足时,会进入阻塞态,不是就绪态
在进行io操作时,当前线程会处于阻塞状态

  1. 下面哪一种表述不属于操作系统的主要功能?()
    A 处理机管理
    B 存储器管理
    C 设备管理和文件管理
    D 可移植

答案: D
解析:A属于进程管理

  1. 在现代操作系统中采用缓冲技术的主要目的是()。
    A 改善用户编程环境
    B 提高CPU的处理速度
    C 提高CPU和设备之间的并行程度
    D 实现与设备无关性

答案: C
解析:在这里插入图片描述

  1. 进程和程序的一个本质区别是()。
    A 前者为动态的,后者为静态的
    B 前者存储在内存,后者存储在外存
    C 前者在一个文件中,后者在多个文件中
    D 前者分时使用CPU,后者独占CPU

答案:A
解析:进程处于挂起状态时,存于辅存,也即是外存
程序是一个可执行文件,还并没有执行,因此不会占用cpu资源

  1. 选择在最近的过去很久未访问的页面予以淘汰的算法称为()。
    A Opt.
    B LRU
    C MFU
    D LFU

答案:B
解析:
在这里插入图片描述

  1. 一次I/O操作的结束,有可能导致()。
    A 一个进程由睡眠变就绪
    B 几个进程由睡眠变就绪
    C 一个进程由睡眠变运行
    D 几个进程由睡眠变运行

答案:A
解析:一次io操作只能执行一个进程

  1. 并发进程之间()。
    A 彼此无关
    B 必须同步
    C 必须互斥
    D 可能需要同步或互斥
    答案:D
    解析:

在这里插入图片描述

  • 30
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值