1、heap 和 stack 有什么区别?

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

2、Java 的接口和 C++的虚类的相同和不同处。 答:由于 Java 不支持多继承,而有可能某个类或对象要使用分别在几个类或对象里面的方法或属性, 现有的单继承机制就不能满足要求。 与继承相比,接口有更高的灵活性,因为接口中没有任何实现代码。 当一个类实现了接口以后,该类要实现接口里面所有的方法和属性, 并且接口里面的属性在默认状态下面都是 public static,所有方法默认情况下是 public. 一个类可以实现多个接口。
3、Java 中的异常处理机制的简单原理和应用。 答:当 JAVA 程序违反了 JAVA 的语义规则时,JAVA 虚拟机就会将发生的错误表示为一个异常。 违反语义规则包括 2 种情况。 一种是 JAVA 类库内置的语义检查。 例如数组下标越界,会引发 IndexOutOfBoundsException;访问 null 的对象时会引发 NullPointerException。 另一种情况就是 JAVA 允许程序员扩展这种语义检查, 程序员可以创建自己的异常,并自由选择在何时用 throw 关键字引发异常。 所有的异常都是 java.lang.Thowable 的子类。
4、垃圾回收的优点和原理。并考虑 2 种回收机制。 答:Java 语言中一个显著的特点就是引入了垃圾回收机制,使 c++程序员最头疼的内存管理的问题迎刃而解, 它使得 Java 程序员在编写程序的时候不再需要考虑内存管理。 由于有个垃圾回收机制,Java 中的对象不再有"作用域"的概念,只有对象的引用才有"作用域"。 垃圾回收可以有效的防止内存泄露,有效的使用可以使用的内存。 垃圾回收器通常是作为一个单独的低级别的线程运行, 不可预知的情况下对内存堆中已经死亡的或者长时间没有使用的对象进行 清楚和回收,程序员不能实时的调用垃圾回收器对某个对象或所有对象进行垃圾回收。 回收机制有分代复制垃圾回收和标记垃圾回收,增量垃圾回收。
5、你所知道的集合类都有哪些?主要方法? 答:最常用的集合类是 List 和 Map。 List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表, 比较适合构建、存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。 Map 提供了一个更通用的元素存储方法。 Map 集合类用于存储元素对(称作"键"和"值") ,其中每个键映射到一个值。
6、描述一下 JVM 加载 class 文件的原理机制? 答:JVM 中类的装载是由 ClassLoader 和它的子类来实现的, Java ClassLoader 是一个重要的 Java 运行时系统组件。 它负责在运行时查找和装入类文件的类。
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 中会存在内存泄漏吗,请简单描述。 答:会。自己实现堆载的数据结构时有可能会出现内存泄露,可参看 effective java.
11、java 中实现多态的机制是什么? 答:方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现。 重写 Overriding 是父类与子类之间多态性的一种表现,重载 Overloading 是一个类中多态性的一种表现。
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、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收。 答:对于 GC 来说,当程序员创建对象时,GC 就开始监控这个对象的地址、大小以及使用情况。 通常,GC 采用有向图的方式记录和管理堆(heap)中的所有对象。 通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。 当GC 确定一些对象为"不可达"时,GC 就有责任回收这些内存空间。 可以。程序员可以手动执行 System.gc(),通知 GC运行,但是 Java 语言规范并不保证 GC 一定会执行。



联系我们 | 友情链接