Java企业教程系列

Java面试题

  问:如果main方法声明为私有?

答:程序编译正常,但在运行时它会发出“ Main方法不是公共的。 ”的消息。

 

问:什么是通过引用传递的意思和价值在Java中传递?

答:通过引用方式传递,传递的地址本身,而不是传递值。按值方式传递值的拷贝传递。

 

问:如果你重写equals方法,有什么其它方法你也可以考虑?

答:hashCode()方法

 

问:什么是字节码?或 问:Java“一次编写,到处运行”的性质是什么?

答:所有Java程序被编译成包含字节码的类文件。这些字节码可以在任何平台上,这样Java被认为是独立于平台上运行。

 

问:解释一下public static void main(String args[])每个词?

答:public – main(..) 是当一个程序被执行时由java环境调用的第一种方法,所以它必须能从Java运行环境访问。因此,访问控制符必须是公共的。
static: Java环境应该能够在无需创建类的实例情况下调用此方法,,所以这种方法必须声明为静态的。
void:不返回任何东西,因此返回类型必须是void
String参数字符串表示这是在命令行给出的的一个字符串数组。

 

问:什么是==和. equals()方法的区别?

或问:比较两个字符串变量 - 选择==还是equals方法( ) ?

答:==运算符比较两个对象,以确定它们是否在内存中,即存在于相同的内存位置相同的对象。这是可能的两个String对象具有相同的值,但位于不同的存储区域。

==是比较引用,而equalss是比较内容。该方法public boolean equals(Object obj) 由Object类提供的,并且可以被覆盖。当对象是与自身相比时默认的实现返回true 。对于两个String对象,值相等意味着它们含有相同的字符序列。对于包装类,值相等的意思是原始值是相等的。

 

问:如果static修饰符是从main方法的签名去掉?

或问:如果我不提供String数组作为参数传递给方法?

答:程序可以编译。但在运行时抛出一个错误“ NoSuchMethodError ” 。

 

问:final, finally 和finalize区别是什么?

答:final – 宣称是常量 一旦赋值不再改变
finally – 处理出错
finalize –帮助垃圾回收

接口中的值是显式的final,一个final 类不能被继承,final能够让编译器做一些优化,并且线程安全更容易实现,一个final方法也不能被覆盖。

finalize()方法被用于之前的对象被销毁和垃圾收集。

finally: 在出错时无论是否抛出Exception,都肯定执行的,可以用在关闭数据库连接等方面。

 

问:什么是Java API?

答:该Java API是一个大集合现成的软件组件,提供了许多有用的功能,如图形用户界面(GUI )的部件。

 

问:什么是ResourceBundle类?

答:ResourceBundle类用于存储特定的语言环境的本地化区域设置资源。,可以通过程序加载到定制程序的外观。

 

问:为什么在Java中没有全局变量?

答:全局变量是全局可访问的。 Java不支持全局可访问的变量,由于以下原因:

全局变量打破了引用透明
全局变量在命名空间中引起冲突。

 

问: while语句和do语句之间的区别是什么?

答:while语句循环。 do语句总是至少执行一次循环体。

 

问:描述的OOPS的原则。

答:主要的原则多态,继承和封装。

 

问:请解释的继承原则。

答:继承是由哪一个对象获得另一个对象的属性的过程。继承运行重复使用,一次修改能够影响相关类。(从这点说,继承也是一种紧耦合)

 

问:什么是封装,继承和多态性

或问:请解释多态性原则。解释不同形式的多态性。

多态性简单来说是指一个多种形式的名词。多态性存在三种不同的形式在Java中:

方法重载
方法覆盖通过继承
通过Java接口的方法覆盖

 

问:请解释的封装原则。

答:封装是绑定数据和数据的操作行为到单个实中的方法。这使数据免于从外部接口和滥用。


问:什么是Java虚拟机(JVM ) ?

答:Java虚拟机是一种软件,可以移植到各种基于硬件的平台

 

问:System.out.println() ,System是什么?

答:System是一个预定义的final类, out是一个的PrintStream对象,println是其重载方法。

 

问: JVM中维护一个缓存本身?

答:是的,在JVM本身维护一个缓存。它在堆上创建对象,但引用这些对象是在栈上。

 

问:什么是幻象记忆?

答:幻影内存错误记忆。这在现实中并不存在的记忆。

 

问:什么是瞬态transient 变量?

答:瞬态变量不能被序列化。例如,如果一个变量被声明为transient,在Serializable类和类被写入到一个ObjectStream时 ,该变量的值不能被写入流。从ObjectStream检索到的变量的值也是空。

 

问:同步是什么?

答:同步是在多个线程控制共享资源的访问,在同一时间只有一个线程可以访问一个资源。在非同步多线程应用程序,一个线程修改共享对象,而另一个线程在使用或更新对象的值,会造成数据混乱。同步防止这种类型的数据损坏与混乱。

 

问:volatile是什么?

答:每次检查。每个线程都保持volatile变量的最新值

 

针对.NET程序员的Java基础指南

Java企业系列面试题

Java Collection集合面试题

Java面向对象面试参考指南

Java多线程面试题