我们找工作的人都会面临一个难题,那就是面试,根据工作性质的不同,面试的要求也会不公,好点的工作,面试官都会问我们一些问题,尤其是学术性较强的工作。那么今天我们就来说说我们学Java的求职者面试时会遇到的一些面试题及答案吧。
问题一:struts中的prepare怎么用?
答:prepare是在validate拦截器之前执行
在使用struts2checkboxlist,select绑定list时,有时候会出现以下异常
Therequestedlistkey'users'couldnotberesolvedasacollection/array/map/enumeration/iteratortype.Example:peopleorpeople.{name}
-[unknownlocation]这样的错误。是因为list的值为空
解决办法是把初始化list的工作放到prepare拦截器中
publicclassRoleActionextendsActionSupportimplemen
tsPreparable{
@Override
publicvoidprepare()throwsException{
//初始化list
}}
问题二:haShtable的原理
答:原理:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址
问题三:java是如何进行异常处理的Java通过面向对象的方法进行异常处理,把各种不同的异常进行分类,并提供了良好的接口。
在Java中,每个异常都是一个对象,它是Throwable类或其它子类的实例。当一个方法出现异常后便抛出一个异常对象,该对象中包含有异常信息,调用这个对象的方法可以捕获到这个异常并进行处理。Java的异常处理是通过5个关键词来实现的:try、catch、throw、throws和finally。一般情况下是用try来执行一段程序,如果出现异常,系统会抛出(throws)一个异常,这时候你可以通过它的类型来捕捉(catch)它,或最后(finally
)由缺省处理器来处理
问题四:dao是什么及作用
dao是数据访问对象DAO负责管理与数据源的连接来获取和储存其中的数据
问题五:简述spring的事务传播行为和隔离级别
spring的事务传播行为:Spring在TransactionDefinition接口中规定了7种类型的事务传播行为,它们规定了事务方法和事务方法发生嵌套调用时事务如何进行传播:
PROPAGATION_REQUIRED:如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择。
PROPAGATION_SUPPORTS:支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY:使用当前的事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW:新建事务,如果当前存在事
务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER:以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。
Spring的隔离级别
1、Serializable:最严格的级别,事务串行执行,资源消耗最大;
2、REPEATABLEREAD:保证了一个事务不会修改已经由另
一个事务读取但未提交(回滚)的数据。避免了“脏读取”和“不可重复读取”的情况,但是带来了更多的性能损失。
3、READCOMMITTED:大多数主流数据库的默认事务等级,保证了一个事务不会读到另一个并行事务已修改但未提交的数据,避免了“脏读取”。该级别适用于大多数系统。
4、ReadUncommitted:保证了读取过程中不会读取到非法数据。
问题六:Struts2实现拦截器的原理?
实现原理:Struts2拦截器是在访问某个Action或Action的
某个方法、字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现。当请求struts2的action时,Struts2会查找配置文件,并根据其配置实例化相对的拦截器对象,然后串成一个列表,最后一个一个地调用列表中的拦截器。
问题七:forward与redirect的区别?有哪些方式实现1).重定向后url地址栏地址不变还是原来的地址;而response.sendRedirect()重定向后url地址栏地址显示的请求后的新地址。
2).重定向的时候可以保存回话信息,因此可以使用request来进行参数传递,在新页面可以使用request.getAttribute()来得到参数。而response.sendRedirect()不支持此通过request进行参数传递。它唯一的传值方式为response.sendRedirect(“example.jsp?aa=123”),在新的页面通过request.getParameter(“aa”)来得到参数值
问题八:静态的多态和动态的多态的区别
静态的多态:即为重载;方法名相同,参数个数或类型不相同。(overloading)
动态的多态:即为重写;子类覆盖父类的方法,将子类的实例传与父类的引用调用的是子类的方法实现接口的实例传与接口的引用调用的实现类的方法。
问题九:extends和implement的不同
extends是继承父类,只要那个类不是声明为final或者那个类定义为abstract的就能继承,JAVA中不支持多重继承,但是可以用接口来实现,这样就要用到implements,继承只能继承一个类,但implements可以实现多个接口,用逗号分开就行了比如classAextendsBimplementsC,D,E
问题十:Hibernate中离线查询与在线查询的区别
Criteria和DetachedCriteria的主要区别在于创建的形式不一样,Criteria是在线的,所以它是由HibernateSession进行创建的;而DetachedCriteria是离线的,创建时无需Session,DetachedCriteria提供了2个静态方法forClass(Class)或forEntityName(Name)进行DetachedCriteria实例的创建。
以上就是动力节点java学院小编介绍的“Java软件工程师求职面试题总结”的内容,希望对大家有帮助,更多java最新面试题请继续关注动力节点java学院官网,每天会有精彩内容分享与你。
相关java面试题推荐
你适合学Java吗?4大专业测评方法
代码逻辑 吸收能力 技术学习能力 综合素质
先测评确定适合在学习