行业动态

Java的一些面试题分享-IT知识

  1、尾递归是怎样的?与递归的比较?

  答:尾递归,也即在尾部进行递归的一种递归形式,指的是在一次递归执行完毕,返回上一层之后,不再进行任何操作,也即在回归的过程中不做任何操作,且返回值不属于表达式的一部分。

  当编译器检测到一个函数调用是尾递归的时候,它就覆盖当前的活动记录而不是在栈中去创建一个新的。编译器可以做到这点,因为递归调用是当前活跃期内最后一条待执行的语句,于是当这个调用返回时栈帧中并没有其他事情可做,因此也就没有保存栈帧的必要了。通过覆盖当前的栈帧而不是在其之上重新添加一个,这样所使用的栈空间就大大缩减了,这使得实际的运行效率会变得更高。

Java的一些面试题分享-IT知识

  2、代理模式的适用场景?

  答:所谓代理模式,即为一个对象创建一个代理,以控制对这个对象的访问。

  使用代理的两种场景:

  控制访问权限,不同用户对同一对象拥有不同的访问权限

  某个客户端不能直接操作到某个对象,却又必须与其进行交互

  3、Java的垃圾回收机制是怎样的?回收的是什么样的对象?

  答:Java垃圾回收器实现对堆内存数据的自动回收,无需程序员显式地调用delete放啊。Java的垃圾自动回收机制有效地避免了因为程序员忘记释放内存而造成的内存溢出错误。

  Java使用被称为垃圾收集器的技术来监视Java程序的运行,当对象不再被使用时,即不再被引用时,就会自动释放对象所占用的内存。Java使用一系列软指针来跟踪对象的各个引用,这些软指针并不直接指向对象,而是指向对象的引用。通过软指针,Java的垃圾收集器能够以单独的线程在后台运行,并不时检查每个对象的引用。

  调用System的静态方法gc()可以运行垃圾收集器,但是并不能保证立即回收指定对象。(这就是建议回收,不能强迫回收。)

  finalize()方法可以终止一个对象来释放资源,调用之后对象不再被引用,就会被回收。

  4、bean 实例的生命周期?

  答:对于Stateless Session Bean、Entity Bean、Message Driven Bean 一般存在缓冲池管理,而对于Entity Bean 和Statefull Session Bean 存在Cache管理,通常包含创建实例,设置上下文、创建EJB Object(create)、业务方法调用、remove 等过程,对于存在缓冲池管理的Bean,在create 之后实例并不从内存清除,而是采用缓冲池调度机制不断重用实例,而对于存在Cache 管理的Bean 则通过激活和去激活机制保持Bean 的状态并限制内存中实例数量。

  5、 Struts的应用(如Struts架构)?

  答:Struts 是采用Java Servlet/JavaServer Pages 技术开发Web 应用程序的开放源码的framework。采用Struts 能开发出基于MVC(Model-View-Controller)设计模式的应用构架。Struts 有如下的主要功能:

  1)包含一个controller servlet,能将用户的请求发送到相应的Action 对象;

  2)JSP 自由tag 库,并且在controller servlet 中提供关联支持,帮助开发人员创建交互式表单应用;

  3)提供了一系列实用对象:XML 处理、通过Java reflection APIs 自动处理JavaBeans 属性、国际化的提示和消息。

  以上内容为大家分享了Java的一些面试题,本文由多测师亲自撰写,希望对大家有所帮助。了解更多相关知识:https://www.duoceshi.com/xwzx-hydt/

新闻资讯

联系我们

联系人:王女士

手机:17727591462

电话:0755-21072941

邮箱:hr@duoceshi.com

地址: 广东省深圳市龙华区龙华街道清湖和平路62号优鼎企创园D栋201室,202室

用手机扫描二维码关闭
二维码