Java面试问题2017
参加Java面试时,Java程序员要充分展现自己,提前了解2017年的面试问题很有必要,以下是阳光网小编帮你们整理的2017Java面试问题,一起来学习啦。
2017Java面试问题(一)
1.Java反射机制的作用?
解答:Java反射机制的作用是:
1)在运行时判断任意一个对象所属的类。
2)在运行时构造任意一个类的对象。
3)在运行时判断任意一个类所具有的成员变量和方法。
4)在运行时调用任意一个对象的方法
2.你是怎么理解java的泛型的?
解答: 在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的。对于强制类型转换错误的情况,编译器可能不提示错误,在运行的时候才出现异常,这是一个安全隐患。
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
3.JAVA源文件中是否可以包括多个类,有什么限制
解答:一个java源文件中可以包含多个类,每个源文件中至多有一个public类,如果有的话,那么源文件的名字必须与之相同。如果源文件中没有public类,则源文件用什么名字都可以,但最好还是具有特定的意义,免得自己都不记得里面写的是什么了。
4.请解释分布式事务管理?
解答:分布式事务是指事务的参与者、支持事务的`服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。为了实现分布式事务,需要使用下面将介绍的两阶段提交协议。
阶段一:开始向事务涉及到的全部资源发送提交前信息。此时,事务涉及到的资源还有最后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性的失败,所有资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸免遇难并且在失败之后可以重新对所有资源进行更新。
阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中,有一个主事务管理器负责充当分布式事务协调器的角色。事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式事务,必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP便是这种协议。这就要求不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。
2017Java面试问题(二)
1.请写出JavaScript中常用的三种事件。
解答: onclick,onblur,onChange
2.请写出5种常见到的runtime exception。
解答:
NullPointerException:当操作一个空引用时会出现此错误。
NumberFormatException:数据格式转换出现问题时出现此异常。
ClassCastException:强制类型转换类型不匹配时出现此异常。
ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在的数组下标时出现此异常。
ArithmeticException:数学运行错误时出现此异常
3.数组有没有length()这个方法?String有没有length()这个方法?
解答:数组没有length()方法 它有length属性
String有length()方法。
4.请写出一个单例模式。
解答:单例模式(Singleton pattern):确保一个类只有一个实例,并提供一个全局的.访问点
public class EagerSingleton { private static final EagerSingleton m_instance = new EagerSingleton(); /** * 私有的默认构造子 */ private EagerSingleton() { } /** * 静态工厂方法 */ public static EagerSingleton getInstance() { return m_instance; } }
5.在java中,List是个接口,那实现List接口的类有哪些,有什么区别?
解答: ArrayList是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
6.char类型能否存储一个中文字符?为什么
解答:可以。一个char是两个字节,而一个中文也是两个字节。
7.Switch选择语句能否作用在String【字符串】上,也就是能否这么写:Switch(一个字符串变量)?
解答:不可以,只能处理int,byte,short,char,(其实是只能处理int,其它三种是可以promotion到int型)不能处理Sring 。
2017Java面试问题(三)
1.关键字final 分别修饰一个类,一个方法,一个变量,各起什么作用
解答:final修饰类是不能被继承
fianl修饰方法不能在子类中被覆盖
final修饰变量,称为常量,初始化以后不能改变值。
2.启动一个线程是用run()还是start()?
解答:start()。
3.是否可以继承String类
解答:不可以。因为String类有final修饰。
4.Java异常处理中,try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
解答:会执行,在return前执行。
5.EJB包含哪3种bean
解答:session bean(会话bean), entity bean(实体bean), message bean(消息bean)
6.Class.forName(String className)这个方法的作用
解答:通过类的全名获得该类的类对象
7.你认为在表上建立索引可以提高数据库系统的效率吗,为什么?
解答:不一定
建立太多的索引将会影响更新和插入的速度,因为它需要同样更新每个索引文件。对于一个经常需要更新和插入的表格,就没有必要为一个很少使用的`where子句单独建立索引了,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。
【Java面试问题】相关文章:
java面试基础问题04-03
java面试基本问题04-05
java面试问题及答案04-05
java面试问题及回答11-26
java面试会问什么问题04-05
java面试官常问的问题04-03
java面试常见题目04-03
java面试基础题04-03
java面试自我介绍03-06