Java|资深架构师整理分享60道全套Java核心技术面试题及答案( 六 )


/ /使用快速排序方法对 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
47、JAVA 语言如何进行异常处理 , 关键字:throwsthrowtrycatchfinally 分别代表什么意义?在 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 语句 。
48、一个\".java\"源文件中是否可以包括多个类(不是内部类)?有什么限制?
答:可以 。 必须只有一个类名与文件名相同 。
49、java 中有几种类型的流?JDK 为每种类型的流提供了一些抽象类以供继承 , 请说出他们分别是哪些类?
答:字节流 , 字符流 。 字节流继承于 InputStream OutputStream , 字符流继承于 InputStreamReader OutputStreamWriter 。 在 java.io 包中还有许多其他的流 , 主要是为了提高性能和使用方便 。
50、java 中会存在内存泄漏吗 , 请简单描述 。
答:会 。 自己实现堆载的数据结构时有可能会出现内存泄露 , 可参看 effective java.
51、java 中实现多态的机制是什么?
答:方法的重写 Overriding 和重载 Overloading 是 Java 多态性的不同表现 。 重写 Overriding是父类与子类之间多态性的一种表现 , 重载 Overloading 是一个类中多态性的一种表现 。
52、垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收
答:对于 GC 来说 , 当程序员创建对象时 , GC 就开始监控这个对象的地址、大小以及使用情况 。
通常 , GC 采用有向图的方式记录和管理堆(heap)中的所有对象 。 通过这种方式确定哪些对象是\"可达的\" , 哪些对象是\"不可达的\" 。 当 GC 确定一些对象为\"不可达\"时 , GC 就有责任回收这些内存空间 。 可以 。 程序员可以手动执行 System.gc() , 通知 GC 运行 , 但是 Java 语言规范并不保证GC 一定会执行 。
53、静态变量和实例变量的区别?
答:static i = 10; //常量 class A a; a.i =10;//可变
54、什么是 java 序列化 , 如何实现 java 序列化?