Java--SE简答题3
1. 面向过程和面向对象的区别。(5分)
- 编程思路不同: 面向过程以实现功能的函数开发为主,而面向对象要首先抽象出类、属性及其方法,然后通过实例化类、执行方法来完成功能。(1分)
- 封装性:都具有封装性,但是面向过程是封装的是功能,而面向对象封装的是数据和功能。(1分)
- 面向对象具有继承性和多态性,而面向过程没有继承性和多态性,所以面向对象优势是明显。(1分)
- 面向对象耦合性低,更利于修改维护。(盖浇饭/蛋炒饭)。(1分)
- 面向过程更适合解决简单问题。面向对象更适合解决复杂问题。(1分)
评分要求:如果内容不同于以上答案,但是言之有理,酌情给分。
2. Error和Exception的区别。(5分)
- Error类,表示仅靠程序本身无法恢复的严重错误,比如说内存溢出、动态链接异常、虚拟机错误。(1分)应用程序不应该抛出这种类型的对象。假如出现这种错误,除了尽力使程序安全退出外,在其他方面是无能为力的。(1分)
- Exception类,由Java应用程序抛出和处理的非严重错误,比如所需文件没有找到、零作除数,数组下标越界等。(1分)它的各种不同子类分别对应不同类型异常。可分为两类:Checked异常和Runtime异常。(1分)所以在进行程序设计时,应该更关注Exception类。(1分)
评分要求:如果内容不同于以上答案,但是言之有理,酌情给分。
3. 列举常用的字节输入流和输出流并说明其特点,至少5对。(5分)
- FileInputStream和FileOutputStream 节点流 以文件为数据源和目的地(1分)
- BufferedInputStream和BufferedOutputStream 处理流 提供了缓冲功能,提高读写效率(1分)
- DataInputStream和DataOutputStream 处理流 提供了方便读写基本数据类型和String数据的方法(1分)
- ObjectInputStream和ObjectOutputStream 处理流 不仅提供了方便读写基本数据类型和String数据的方法,也提供了读写引用类型数据的方法(1分)
- ByteArrayInputStream和ByteArrayOutputStream 节点流 以字节数组为数据源和目的地(1分)
评分要求: 正确列出每队字节输入流和字节输出流并说明特点1分,包括但不限于以上五对字节流。
4. 创建线程的两种方式分别是什么?各有什么优缺点。(5分)
- 方式1:继承java.lang.Thread类,并覆盖run() 方法。(1分)
优势:编写简单;(0.5分)
劣势:无法继承其它父类(0.5分)
- 方式2:实现java.lang.Runnable接口,并实现run()方法。(1分)
优势:可继承其它类,多线程可共享同一个Thread对象;(1分)
劣势:编程方式稍微复杂,如需访问当前线程,需调用Thread.currentThread()方法(1分)
5. 简述基于UDP的Socket编程的主要步骤(5分)
服务器端(server):
1) 构造DatagramSocket实例。(0.5分)
2) 创建数据包DatagramPacket,存取发送和接收的数据、IP和端口。(0.5分)
3) 通过DatagramSocket实例的receive方法接收客户端数据。(0.5分)
4) 通过DatagramSocket的send方法向客户端发出反馈信息。(0.5分)
5) 关闭DatagramSocket。(0.5分)
客户端(client):
1) 构造DatagramSocket实例。(0.5分)
2) 创建数据包DatagramPacket,存取发送和接收的数据、IP和端口。(0.5分)
3) 通过DatagramSocket实例的receive方法接收客户端数据。(0.5分)
4) 通过DatagramSocket的send方法向客户端发出反馈信息. (0.5分)
关闭DatagramSocket。(0.5分)