2017最新java面试题

1、概述struts,以及struts如何实现MVC架构的?
答:struts framework是一种基于java的技术,Web应用程序开发人员通过struts framework即可充分利用面向对象设计、代码重用以及"编写一次、到处运行"的优点。Struts提供了一种创建Web应用程序的框架,其中对应用程序的显示、表示和数据的后端代码进行了抽象。Struts采用jsp作为MVC的视图,由ActionServlet具体指定的action动作类作为控制器即MVC中的C,负责视图与模型之间的交互。控制器的每个入口点都由名为struts-config.xml的配置文件设置。该文件把来自视图的请求映射为特定的JAVA类以进行相应的处理,控制器还指定下一个视图的位置。Struts中的模型主要指的就是javabean,它是模型的代表,主要封装数据和业务逻辑。
Struts的处理流程:
l 控制器进行初始化工作,读取配置文件,为不同的Struts模块初始化相应的ModulConfig对象。
l 控制器接收Http请求,并从ActionConfig中找出对应于该请求的Action子类,如果没有对应的Action,控制器直接将请求转发给JSP或者静态页面,否则控制器将请求分发至具体的Action类进行处理。
l 在控制器调用具体的Action的Execute方法之前,ActionForm对象将利用Http请求中的参数来填充自已。还可以在ActionForm类中调用Validate方法来检查请求参数的合法性,并且可以返回一个包含所有错误信息的ActionErrors对象。
l 执行具体的的Execute的方法,它负责执行相应的业务逻辑。执行完后,返回一个ActionForward对象,控制器通过该ActionForward对象来进行转发工作。也可以把Action要处理的业务逻辑封装在JavaBean中,如果系统中还有EJB,那么通过JavaBean调用EJB以完成业务处理;如果没有EJB,那么就直接在JavaBean中连接数据库,进行数据库相关的操作。

2、概述MVC体系结构。
答:MVC包括三类对象,model是应用对象,view是视图,controller是控制器,它定义用户界面对用户输入的响应方式。
在MVC体系中,模型通常被称为"业务逻辑",是真正完成任务的代码,视图就是使用界面,反映数据的变化。控制器控制着模型和视图之间的交互过程,它决定着向用户返回怎样的视图、检查通过界面输入的信息以及选择处理输入信息的模型
在MVC中,表示层和逻辑层分离,各部分可相互独立进行开发,便于开发和维护,提高了开发效率。

3、多线程的优点。
答:可分两方面来答:
1、 相对于单线程而言 :
可以响应多任务的并发操作。
多线程取消了主循环和轮流检测机制,一个线程可以暂停而不阻止系统其他的部分的执行,而且当程序中一个线程阻塞时,只有那个被阻塞的线程暂停,所有其他的线程继续执行。
2、 相对于进程而言:(可以答也可以不答)
它所要求的开销比较小,转换成本较小。
所有线程共享同一地址空间,相互协作。
彼此之间通信很容易。

4、EJB概述
答:EJB是企业级的JavaBean,它提供了构建企业级业务逻辑的一种组件模型。
EJB分为三种:Session Bean Entity Bean Message-Driven Bean 三种,其中Session Bean分为有状态和无状态Session Bean两种,Entity Bean分为容器管理的Entity Bean ( CMP ) 和 Bean管理的 Entity Bean ( BMP )。每一个EJB由一个远程接口、一个本地接口和一个EJB容器实现组成,远程接口声明了提供给EJB客户调用的各种应用方法,本地接口声明了创建新的EJB实例的create方法、寻找EJB实例的查找(finder)方法以及刪除EJB实例的remove方法。EJB容器提供了EJB的运行环境和生命周期的管理。
5、 用java访问Oracle数据库、取得记录并输出到界面
答:..........................
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection( url , username , password );
Statement stmt=conn.createStatement();
String str="select * from [table]";
ResultSet rs=stmt.executeQuery(str);
While(rs.next())
{
........................
}
rs.close();
stmt.close();
conn.close();

6、 概述java垃圾回收机制
答:它的工作原理如下:
当不存在对一个对象的引用时,我们就假定不再需要那个对象,那个对象所占有的存储单元可以被收回,可通过System.gc()方法回收,但一般要把不再引用的对象标志为null为佳。


7、 java类是否可以多继承,怎么实现多继承?
答:java没有多继承,但可以通过接口的形式来达到多继承的目地。

8、 面向对象的特点
答:面向对象有三大特点:封装、继承、多态。(如果要回答四个,可加上 抽象性 这一特点)

9、接口有什么优点
答:接口有以下优点:
A 接口只是一个框架而没有实现,因此在接口定义时不需要考虑接口中的方法如何实现。
B 利用接口可达到实现多继承的目地。
C 可以在不暴露对象的类的前提下,暴露对象的编程接口。
D 不用强迫类关系在无关类中截获相似处(采用适配器就可以了)。
E声明想执行的一个或多个方法。

1、 ArrayList 与 Vector 的区别
答:主要从两个方面来说明:
A 安全、效率方面
如果要实现同步安全,则要用Vector,否则则用ArrayList,因为ArrayList不考虑同步安全的问题,所以效率要高些。
B 资源方面
当两者的容量已满时,它们都会自动增长其容量,但Vector是按其容量的一倍增长,而ArrayList则按其容量的5%增加,所以Vector更能节省资源。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值