Java SE02部分

0812错题集

2. 关于 java.io.Serializable 接口说法正确的是:()
A. java.io.Serializable 中有一个 serialUID 属性,但是没有方法
B. 类通过实现 java.io.Serializable 接口以启用其对象的序列化功能
C. java.io.Serializable 中有一个 run 方法,但是没属性
D. java.io.Serializable 接口没有方法或属性,仅用于标识可序列化的语义。

答案:BD


3. 以下说法错误的是:
A. try … catch … catch,多个 catch 时,后一个 catch 捕获类型一定是前一
个的父类
B. try … catch … finally 可以组合使用
C. throw 抛出一些异常,程序不进行处理,程序编译也无错误
D. throws 一定是写在方法后面

解析:
A:catch的类型没有联系,只是父类在后
答案:A


7. 请看下列代码:


关于上述代码编译运行的结果的是:()
A. 编译错误
B. 实现向文件 record.dat 追加写入字符 a
C. 实现向文件 record.dat 覆盖写入字符 a
D. 文件 record.dat 无任何内容

 

缓冲区要手动刷新对象或者关闭缓冲区,不然文件一直在缓冲区里不写入
答案:D


8. 下列代码编译和运行的结果是:()


A. 输出:test
B. 输出:Exception
C. 编译失败
D. 输出:NullPointerException

 

父类异常要放在子类后面,所以编译报错;Expection是最父类的
答案:C


10.请看下列测试代码:


控制台异常信息:


A. 如果 main 方法声明抛出 ArithmeticException 异常 程序可以正常运行
B. UserService.java 中的第 6 行,发生了数学异常,原因是整除除数为零
C. TestUser.java 的第六行调用了 UserService.java 中的 divide 方法
D. UserService.java 的第六行调用了 TestUser.java 中的 main 方法

 

 

这题我都没错,比较基础,考的是对异常信息的理解
答案:BC


11.请看下列代码:


关于上述代码说法正确的是:
A. Foo 类的第 7 行将被执行
B. A 类的第 5 行将被执行
C. B 类的第 5 行将被执行
D. C 类的第 3 行将被执行

try里new A,A里new B,B里new C,C抛运行时异常,返回到B,不继续执行,返回到A,不继续执行,返回到try里解决,程序结束
答案:AD


13.下列代码编译和运行的结果是:


A. 输出:B
B. 无输出
C. A 类的 process 方法处出现编译错误
D. B 类的 process 方法处出现编译错误

 

考父子类重写,方法重写中,子类异常比父类小或同级
答案:A


14.关于进程和线程的说法正确的是:
A. 每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较
大的开销
B. 线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程
有独立的运行栈程序计数器,线程切换的开销小
C. 多进程是在同一应用程序中有多个顺序流并发执行
D. 多线程是在操作系统中能并发运行多个任务(程序)

答案:AB


16.下面能使线程处于阻塞状态的是:
A. sleep();
B. notify();
C. synchronized(Object obj) {}
D. wait();

线程状态
1.新建状态: New
  start() -> 就绪状态
2.就绪状态: Runnable
  分配时间片 -> 运行状态
3.运行状态: Running
  yeild() -> 就绪状态 模拟归还时间片
4.阻塞状态: Block -> 回到就绪状态
  1.计时等待: sleep(100) wait(100) join(100)
  2.无限等待: wait()-notify()/notifyAll() join()
  3.锁阻塞: 没有获取到锁对象的线程被阻塞 - 锁释放
  4.io阻塞: 未输入完成导致阻塞的发生
5.死亡状态: Dead
答案ACD

17.下列代码编译和运行的结果是:()


A. 输出 Exception
B. 输出 A,B,Exception
C. 编译失败
D. 在运行时抛出 NullPointerException 异常

 

父类不抛异常,子类一定不能抛异常,所以run()方法里只能try/catch
答案:C


18.下列代码运行的结果是:()


A. 输出:4
B. 在运行时抛出 NullPointerException 异常
C. 在运行时抛出 NumberFormatException 异常
D. 在运行时抛出 IllegalStateException 异常

 

int和Integer之间会自动装箱拆箱,但是Integer多了一个null,所以会遇到空指针异常
答案:B


23.下列选项中关于 synchronized 的使用正确的是:()

 

B少了锁的对象
答案:C


24.有 Person 类如下,下面语法正确的是:()

 

 

考的是新特性lambda,A正确,B错误,forEach和count都是终结方法
答案:AD


25.下面关于 RandomAccessFile 描述正确的是
A. RandomAccessFile 类的实例支持对随机访问文件的读取和写入
B. 可以通过 RandomAccessFile 类实例的 getFilePointer 方法获取文件指针
位置
C. 可以通过 RandomAccessFile 的 seek 方法设置文件指针的位置
D. RandomAccessFile 类只提供了读取一个字节的方法

答案:ABC


26.下列代码编译和运行的结果是:


A. 编译失败
B. 输出 ClassC
C. 代码正确运行,但无输出
D. 在运行时抛出异常

class b里运行时抛出空指针异常
答案:D


27.请看下列代码:


关于 A,B 两个类说法正确的是:
A. A、B 两个类都编译成功
B. A、B 两个类都编译失败
C. A 类编译成功,B 类编译失败
D. A 类编译失败,B 类编译成功

 

又考重写
答案:C


28.下列代码运行的结果是:


A. Exception
B. A Exception
C. A Exception B
D. A B Exception

 

第一个异常被抓了,第二个异常让sout B跳过了
答案B


32.下列代码说法正确的是:()


A. 名为 dt 的线程为守护线程
B. 运行上述代码,main 线程一退出,则虚拟机退出
C. 运行上述代码,程序会一直跑下去,因为 main 线程结束了,但 dt 线程是
一个无限循环,还没有结束,虚拟机不能退出
D. main 线程是守护线程

 

答案:AB


33.下列有关线程的叙述中正确的是:
A. 一旦一个线程被创建,它就立即开始运行
B. 使用 start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行
C. 当一个线程调用 sleep()方法,时间到了,线程会立即开始运行。
D. 一个线程不可能从阻塞状态直接进入运行状态

C会重新进入就绪状态,等待CPU分配时间片
答案:BD


35.下列代码编译和运行的结果是:


A. 代码"Object[] myObjects = { "行,编译出错
B. 代码"Arrays.sort(myObjects); "行,编译出错
C. 代码"Arrays.sort(myObjects); "行,抛出 ClassCastException 异常
D. 代码"System.out.print(myObjects[i].toString());"行,抛出ClassCastException 异常

 

C排序时类型转换异常


36.下面程序段中,没有编译错误的是:

 

B没抛异常
答案C


37.请看下列代码:


如果 B 类的第 3 行抛出 TestException 异常,那么下列说法正确的是:
A. Test 类的第 4 行,调用方法的代码要放置在 try…catch 块中
B. A 类的第 5 行调用 method2 方法不需要放置在 try…catch 块中
C. Test 类的 method 方法一定要声明抛出 RuntimeException.
D. 调用 A 类的 method1 方法,不需要捕获异常

 

答案D


38.下列代码编译和运行的结果是:


A. 编译错误
B. 抛出运行时异常
C. 输出:foo
D. 代码正常运行,但是无输出

正常运行
答案:C


40.下列代码中,能实现按行读取文件的内容的是:

 

答案:AC


42.关于 sleep 和 wait,以下描述错误的是:()
A. sleep 是线程类的方法,wait 是 object 的方法
B. sleep 不释放对象锁,wait 放弃对象锁
C. sleep 暂停线程,但监控状态依然保持,结束后会自动恢复
D. wait 进入等待锁定池,只有针对此对象发出 notify 方法获得对象锁进入运行状态

wait()是Object类的sleep持有锁,sleep释放锁对象    
答案:D


44.假设如下代码中,若 t1 线程在 t2 线程启动之前已经完成启动。代码的输出
是()


A. Thread 1 wake up
Thread 2 sent notify.
B. Thread 2 sent notify.
Thread 1 wake up
C. A、B 皆有可能
D. 程序无输出卡死

 

B运行时持有锁,所以运行完再唤醒A
答案:B

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值