几个JAVA面试题

来源:互联网 发布:mysql3306端口是udp 编辑:程序博客网 时间:2024/04/30 18:14

1.解释内存中的栈(stack)、堆(heap)和静态区(static area)的用法。

答:
我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用内存中的栈空间;而通过new关键字和构造器创建的对象放在堆空间;程序中的字面量(literal)如直接书写的100,”hello”和常量都是放在静态区中。栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间,理论上整个内存没有被其他进程使用的空间甚至硬盘上的虚拟内存都可以被当成堆空间来使用。

E:String s = new String("Hello");

这里的变量-s-被放在栈上,new 出来的字符串放在堆上,而 “Hello” 字面量放在静态区

2.Java 中的final关键字有哪些用法?
答:
1.修饰类:表示该类不能被继承;
2.修饰方法:表示方法不能被重写;
3.修饰变量:表示变量只能一次赋值以后值不能被修改(常量)

3.怎样将ISO-8859-1编码的字符串转换为utf-8编码的字符串?
E:
String s1 = "xx";
String s2 = new String(s1.getBytes("ISO-8859-1"), "utf-8");

4.关键字:throws,throw,try…catch,finally分别如何使用?
答:
try…catch,throw,throws和finally是Java异常处理的5个关键词。 一般情况下是用 ( try ) 来执行一段程序,如果系统会抛出(throw)一个异常对象,可以通过它的类型来捕获(catch)它,或通过总是执行代码块(finally)来处理;try 用来指定一块预防所有异常的程序;catch子句紧跟在try块后面,用来指定你想要捕获的异常的类型;throw语句用来明确地抛出一个异常;throws用来声明一个方法可能抛出的各种异常;finally为确保一段代码不管发生什么异常状况都要被执行;try语句可以嵌套,每当遇到一个try语句,异常的结构就会被放入异常栈中,直到所有的try语句都完成。如果下一级的try语句没有对某种异常进行处理,异常栈就会执行出栈操作,直到遇到有处理这种异常的try语句或者最终将异常抛给JVM。

5.关于IO流
发现一张很详细的结构图,就拿来用了。关于IO流的问题以后再说,先贴图:
面试的重点以后再说

6.抽象类和接口的区别

抽象类:
1. 抽象方法,只有行为的概念,没有具体的行为实现。使用abstract 关键字修饰,没有方法体。子类必须重写这些抽象方法。
2. 包含抽象方法的类,一定是抽象类。
3. 抽象类只能被继承,一个类只能继承一个抽象类。
接口:
1.不能实例化,可以定义变量。
2.全部的方法都是抽象方法,属型都是常量。
3.一个具体类可以实现多个接口,实现多继承现象。
4.接口变量可以引用具体实现类的实例。
5.接口只能被实现,一个具体类实现接口,必须实现全部的抽 象方法。

7.sleep() 和wait()有什么区别
*seleep():
是线程中的一个方法,该方法用于控制自身线程的流程,当执行sleep()方法睡眠时保持对象锁.
*wait():
是object类中的一个方法,该方法用于让一个线程处于等待状态并释放对象锁,当该线程想要再次执行时需要调用notity方法唤醒此线程.

8.GC是什么? 为什么要有GC?
答:
GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。

0 0