【计算机类职业资格】(Java)程序员面试-11及答案解析.doc
《【计算机类职业资格】(Java)程序员面试-11及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】(Java)程序员面试-11及答案解析.doc(30页珍藏版)》请在麦多课文档分享上搜索。
1、(Java)程序员面试-11 及答案解析(总分:100.00,做题时间:90 分钟)一、论述题(总题数:26,分数:100.00)1.Java IO 流的实现机制是什么 (分数:4.00)_2.管理文件和目录的类是什么 (分数:4.00)_3.Java Socket 是什么 (分数:4.00)_4.Java NIO 是什么 (分数:4.00)_5.什么是 Java 序列化 (分数:4.00)_6.System.out.println()方法使用需要注意哪些问题 (分数:4.00)_7.为什么说 Java 是平台独立性语言 (分数:4.00)_8.Java 平台与其他语言平台有哪些区别 (分数:
2、4.00)_9.JVM 加载 class 文件的原理机制是什么 (分数:4.00)_10.什么是 GC (分数:4.00)_11.Java 是否存在内存泄露问题 (分数:4.00)_12.Java 中的堆和栈有什么区别 (分数:4.00)_13.Java Collections 框架是什么 (分数:4.00)_14.什么是迭代器 (分数:4.00)_15.ArrayList、Vector 和 LinkedList 有什么区别 (分数:4.00)_16.HashMap、HashTable、TreeMap 和 WeakHashMap 有哪些区别 (分数:4.00)_17.用自定义类型作为 Hash
3、Map 或 HashTable 的 key 需要注意哪些问题 (分数:4.00)_18.Collection 和 Collections 有什么区别 (分数:4.00)_19.什么是线程?它与进程有什么区别?为什么要使用多线程 (分数:4.00)_20.同步和异步有什么区别 (分数:4.00)_21.如何实现 Java 多线程 (分数:4.00)_22.run()方法与 start()方法有什么区别 (分数:4.00)_23.多线程同步的实现方法有哪些 (分数:3.00)_24.sleep()方法与 wait()方法有什么区别 (分数:3.00)_25.终止线程的方法有哪些 (分数:3.00)
4、_26.synchronized 与 Lock 有什么异同 (分数:3.00)_(Java)程序员面试-11 答案解析(总分:100.00,做题时间:90 分钟)一、论述题(总题数:26,分数:100.00)1.Java IO 流的实现机制是什么 (分数:4.00)_正确答案:()解析:在 Java 语言中,输入和输出都被称为抽象的流,流可以被看作一组有序的字节集合,即数据在两设备之间的传输。 流的本质是数据传输,根据处理数据类型的不同,流可以分为两大类:字节流和字符流。字节流以字节(8 bit)为单位,包含两个抽象类:InputStream(输入流)和 OutputStream(输出流)。字
5、符流以字符(16 bit)为单位,根据码表映射字符,一次可以读多个字节,它包含两个抽象类:Reader(输入流)和 Writer(输出流)。字节流和字符流最主要的区别为:字节流在处理输入输出时不会用到缓存,而字符流用到了缓存。每个抽象类都有很多具体的实现类,在这里就不详细介绍了。下图主要介绍 Java 中 IO 的设计理念。Java IO 类在设计时采用了 Decorator(装饰者)设计模式,以 InputStream 为例,介绍 Decorator 设计模式在IO 类中的使用如下。 2.管理文件和目录的类是什么 (分数:4.00)_正确答案:()解析:对文件或目录进行管理与操作在编程中有着
6、非常重要的作用,Java 提供了一个非常重要的类(File)来管理文件和文件夹,通过类不仅能够查看文件或目录的属性,而且还可以实现对文件或目录的创建、删除与重命名等操作。下面主要介绍 File 类中常用的几个方法,见表。 File 类常用的方法 方 法 作 用 File(String patmame) 根据指定的路径创建一个 File 对象 createNewFile() 若目录或文件存在,则返回 false,否则创建文件或文件夹 delete() 删除文件或文件夹 isFile() 判断这个对象表示的是否是文件 isDirectory() 判断这个对象表示的是否是文件夹 listFiles(
7、) 若对象代表目录,则返回目录中所有文件的 File 对象 mkdir() 根据当前对象指定的路径创建目录 exists() 判断对象对应的文件是否存在 常见笔试题: 如何列出某个目录下的所有目录和文件? 答案:假设目录“C:/testDir1”下有两个文件夹(dir1 和 dir2)和一个文件 file1.txt,实现代码如下:import java.io.File; public class Test public static void main(Stringargs) File file=new File(“C:/testDir“); /判断目录是否存在 if(!file.exists
8、() System.out.println(“diretory is empty“); return; File fileList=file.listFiles(); for(int i=0; ifileList.length; i+) /判断是否为目录 if(fileListi.isDirectory() System.out.println(“dirctory is:“ +fileListi. getName(); else System. out. println(“file is:“ +fileListi.getName(); 程序运行结果为: dirctory is:dir1 dir
9、ctory is:dir2 file is:file1.txt3.Java Socket 是什么 (分数:4.00)_正确答案:()解析:网络上的两个程序通过一个双向的通信连接实现数据的交换,这个双向链路的一端称为一个Socket。Socket 也称为套接字,可以用来实现不同虚拟机或不同计算机之间的通信。在 Java 语言中,Socket 可以分为两种类型:面向连接的 Socket 通信协议(TCP,Transmission Control Protocol,传输控制协议)和面向无连接的 Socket 通信协议(UDP,User Datagram Protocol,用户数据报协议)。任何一个
10、Socket 都是由 IP 地址和端口号唯一确定的,如图所示。 4.Java NIO 是什么 (分数:4.00)_正确答案:()解析:在非阻塞 IO(Nonblocking IO,NIO)出现之前,Java 是通过传统的 Socket 来实现基本的网络通信功能的。以服务器端为例,其实现基本流程如图所示。 Socket 使用流程如果客户端还没有对服务器端发起连接请求,那么 accept 就会阻塞(阻塞指的是暂停一个线程的执行以等待某个条件发生,例如某资源就绪)。如果连接成功,当数据还没有准备好时,对 rcad 的调用同样会阻塞。当要处理多个连接时,就需要采用多线程的方式,由于每个线程都拥有自己的
11、栈空间,而且由于阻塞会导致大量线程进行上下文切换,使得程序的运行效率非常低下,因此在 J2SE 1.4 中引入了 NIO 来解决这个问题。 NIO 通过 Selector、Channel 和 Buffer 来实现非阻塞的 IO 操作,其实现原理如图所示。 5.什么是 Java 序列化 (分数:4.00)_正确答案:()解析:Java 提供了两种对象持久化的方式,分别为序列化和外部序列化。 (1)序列化(Serialization) 在分布式环境下,当进行远程通信时,无论是何种类型的数据,都会以二进制序列的形式在网络上传送。序列化是一种将对象以一连串的字节描述的过程,用于解决在对对象流进行读写操
12、作时所引发的问题。序列化可以将对象的状态写在流里进行网络传输,或者保存到文件、数据库等系统里,并在需要时把该流读取出来重新构造一个相同的对象。 如何实现序列化呢?其实,所有要实现序列化的类都必须实现 Serializable 接口,Serializable 接口位于 java.lang 包中,它里面没有包含任何方法。使用一个输出流(例如 FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,紧接着,使用该对象的 writeObject(Object obj)方法就可以将 obj对象写出(即保存其状态),要恢复时可以使用其对应的输入流。 序列化有以下两个
13、特点: 1)如果一个类能被序列化,那么它的子类也能够被序列化。 2)由于 static(静态)代表类的成员,transient(Java 语言关键字,如果用 transient 声明一个实例变量,当对象存储时,它的值不需要维持。)代表对象的临时数据,因此被声明为这两种类型的数据成员是不能够被序列化的。 Java 提供了多个对象序列化的接口,包括 ObjectOutput、ObjectInput,ObjectOutputStream 和ObjectInputStream。 下面给出一个序列化的具体实例: import java.io.FileInputStream; import java.io
14、.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; public class People implements Serializable private String name; private int age; public People() this.name=“lili“; this.age=20; public int getAge() return age; public void setAge(int
15、 age) this.age=age; public String getName() return this.name; public void setName(String name) this.name=name; public static void main(Stringargs) People p=new People(); ObjectOutputStream oos=null; ObjectInputStream ois=null; try FileOutputStream fos=new FileOutputStream(“perple.out“); oos=new Obje
16、ctOutputStream(fos); oos.writeObject(p); oos.close(); catch(Exception ex) People p1; try FileInputStream fis=new FileInputStream(“perple.out“); ois=new ObjectInputStream(fis); p1=(People)ois.readObject(); System.out.println(“name:“ +p1.getName(); System.out.println(“age:“ +p1.getAge(); ois.close();
17、catch(Exception ex) 程序运行结果为: name:lili age:20 由于序列化的使用会影响系统的性能,因此如果不是必须要使用序列化,应尽可能不要使用序列化。那么在什么情况下需要使用该序列化呢? 1)需要通过网络来发送对象,或对象的状态需要被持久化到数据库或文件中。 2)序列化能实现深复制,即可以复制引用的对象。 与序列化相对的是反序列化,它将流转换为对象。在序列化与反序列化的过程中,serialVersionUID 起着非常重要的作用,每个类都有一个特定的 serialVersionUID,在反序列化的过程中,通过serialVersionUID 来判定类的兼容性。如果
18、待序列化的对象与目标对象的 serialVersionUID 不同,那么在反序列化时就会抛出 InvalidClassException 异常。作为一个好的编程习惯,最好在被序列化的类中显式地声明 serialVersionUID(该字段必须定义为 static final)。自定义 serialVersionUID 主要有如下 3个优点。 1)提高程序的运行效率。如果在类中未显式声明 serialVersionUID,那么在序列化时会通过计算得到一个 serialVersionUID 值。通过显式声明 serialVersionUID 的方式省去了计算的过程,因此提高了程序的运行效率。 2)
19、提高程序不同平台上的兼容性。由于各个平台的编译器在计算 serialVersionUID 时完全有可能会采用不同的计算方式,这就会导致在一个平台上序列化的对象在另外一个平台上将无法实现反序列化的操作。通过显式声明 serialVersionUID 的方法完全可以避免该问题的发生。 3)增强程序各个版本的可兼容性。在默认情况下,每个类都有唯一的 serialVersionUID,因此,当后期对类进行修改时(例如加入新的属性),类的 serialVersionUID 值将会发生变化,这将会导致类在修改前对象序列化的文件在修改后将无法进行反序列化操作。同样,通过显式声明 serialVersionU
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 JAVA 程序员 面试 11 答案 解析 DOC
