2016年J2EE笔试题目及答案

发布时间:2016-10-24 00:00:00 编辑:嘉辉 手机版

  1、heap和stack有什么区别?

  答:栈是一种线形集合,其添加和删除元素的操作应在同一段完成。栈按照后进先出的方式进行处理。堆是栈的一个组成元素

  2、Java中的异常处理机制的简单原理和应用

  答:当JAVA程序违反了JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语义规则包括2种情况。一种是JAVA类库 内置的语义检查。例如数组下标越界,会引发IndexOutOfBoundsException;访问null的对象时会引发 NullPointerException。另一种情况就是JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用 throw关键字引发异常。所有的异常都是java.lang.Thowable的子类。

  3、垃圾回收的优点和原理。并考虑2种回收机制

  答:Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时 候不再需要考虑内存管理。由于有个垃圾回收机制,Java中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。垃圾回收可以有效的防止内存泄 露,有效的使用可以使用的内存。垃圾回收器通常是作为一个单独的低级别的线程运行,不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行清 楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。

  4、你所知道的集合类都有哪些?主要方法?

  答:最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。

  Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值。

  5、描述一下JVM加载class文件的原理机制?

  答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是一个重要的Java运行时系统组件。它负责在运行时查找和装入类文件的类。

  6、排序都有哪几种方法?请列举

  答: 排序的方法有:插入排序(直接插入排序、希尔排序),交换排序(冒泡排序、快速排序),选择排序(直接选择排序、堆排序),归并排序,分配排序(箱排序、基数排序)

  快速排序的伪代码。

  / /使用快速排序方法对a[ 0 :n- 1 ]排序

  从a[ 0 :n- 1 ]中选择一个元素作为m i d d l e,该元素为支点

  把余下的元素分割为两段left 和r i g h t,使得l e f t中的元素都小于等于支点,而right 中的元素都大于等于支点

  递归地使用快速排序方法对left 进行排序

  递归地使用快速排序方法对right 进行排序

  所得结果为l e f t + m i d d l e + r i g h t

  7、JAVA语言如何进行异常处理,关键字:throws,throw,try,catch,finally分别代表什么意义?在try块中可以抛出异常吗?

  答:Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。在Java中,每个异常都是一个对象,它是 Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行 处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程 序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally)由缺省处理器来处 理。

  用try来指定一块预防所有"异常"的程序。紧跟在try程序后面,应包含一个catch子句来指定你想要捕捉的"异常"的类型。

  throw语句用来明确地抛出一个"异常"。

  throws用来标明一个成员函数可能抛出的各种"异常"。

  Finally为确保一段代码不管发生什么"异常"都被执行一段代码。

  可以在一个成员函数调用的外面写一个try语句,在这个成员函数内部写另一个try语句保护其他代码。每当遇到一个try语句,"异常"的框架就 放到堆栈上面,直到所有的try语句都完成。如果下一级的try语句没有对某种"异常"进行处理,堆栈就会展开,直到遇到有处理这种"异常"的try语 句。

  8、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?

  答:可以。必须只有一个类名与文件名相同。

  9、java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?

  答:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。

  10、java中会存在内存泄漏吗,请简单描述。

  答:会。自己实现堆载的数据结构时有可能会出现内存泄露

  11、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收

  答:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap) 中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可 以。程序员可以手动执行System.gc(),通知GC运行,但是Java语言规范并不保证GC一定会执行。

  12、静态变量和实例变量的区别?

  答:static i = 10; //常量 class A a; a.i =10;//可变

  13、什么是java序列化,如何实现java序列化?

  答:序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是为了解决在对对象流进行读写操作时所引发的问题。

  序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。

  14、是否可以从一个static方法内部发出对非static方法的调用?

  答:不可以,如果其中包含对象的method();不能保证对象初始化.

  15、写clone()方法时,通常都有一行代码,是什么?

  答:Clone 有缺省行为,super.clone();他负责产生正确大小的空间,并逐位复制。

  16、在JAVA中,如何跳出当前的多重嵌套循环?

  答:用break; return 方法。

  17、List、Map、Set三个接口,存取元素时,各有什么特点?

  答:List 以特定次序来持有元素,可有重复元素。Set 无法拥有重复元素,内部排序。Map 保存key-value值,value可多值。

  18、说出一些常用的类,包,接口,请各举5个

  答:常用的类:BufferedReader BufferedWriter FileReader FileWirter String Integer

  常用的包:java.lang java.awt java.io java.util java.sql

  常用的接口:Remote List Map Document NodeList

  19、描述使用JDBC连接数据库的过程

  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

  String url = "jdbc:obdc:mydb";

  Connection con = DriverManager.getConnection(url);

  Statement stmt = con.createStatement();

  ResultSet rs = stmt.execte("select * from mytable");

  20、什么是JNDI?

  java命名目录接口

本文已影响879
+1
0