框架常见面试题

来源:互联网 发布:mac pro 魔兽世界 编辑:程序博客网 时间:2024/05/21 05:42
2 、 结合项目谈谈你对 MVC 的理解
MVC 是 Model—View—Controler 的简称。即模型—视图—控制器。MVC 是一种设
计模式,它强制性的把应用程序的输入、处理和输出分开。
MVC 中的模型、视图、控制器它们分别担负着不同的任务。
视图: 视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并接受用
户的输入。视图不进行任何业务逻辑处理。
模型: 模型表示业务数据和业务处理。相当于 JavaBean。一个模型能为多个视图提
供数据。这提高了应用程序的重用性
控制器: 当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型
去处理请求。
然后根据处理的结果调用相应的视图来显示处理的结果。
MVC 的处理过程:首先控制器接受用户的请求,调用相应的模型来进行业务处理,
并返回数据给控制器。控制器调用相应的视图来显示处理的结果。并通过视图呈现给用
户。
如在项目中要对应 MVC 的话:View 对应项目中 Jsp,Controler 对应 Action,Model
对应 service+dao 层的业务逻辑和持久层的操作。
3 、 项目中为什么使用 SSH
1. 使用 Struts 是因为 struts 是基于 MVC 模式的,很好的将应用程序进行了分层,使开发
者更关注于业务逻辑的实现;struts 有着丰富的标签库,能大大提高开发效率。
2. 使用 Hibernate:因为 hibernate 为 Java 应用提供了一个易用的、高效率的对象关系映
射框架(ORM)。hibernate 是个轻量级的持久性框架,功能丰富。
3. 使用 Spring:因为 spring 基于 IoC(Inversion of Control,反向控制)和 AOP 构架多层 j2ee
系统的框架。
4 、 挑选一个你做的功能说明 SSH 框架的应用原理
① 在表示层中,首先通过 JSP 页面实现交互界面,负责传送请求(Request)和接收
响应(Response),然后 Struts 根据配置文件(*-struts.xml)将 ActionServlet 接收到的
Request 委派给相应的 Action 处理。
② 在业务层中,管理服务组件的 Spring IoC容器负责向 Action提供业务模型(Model)
组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等
容器组件以提升系统性能和保证数据的完整性。
③ 在持久层中,则依赖于 Hibernate 的对象化映射和数据库交互,处理 DAO 组件
请求的数据,并返回处理结果。
结合上面的概述;然后可以把我们做的信息发布管理模块用上述的方式实例化描述一遍。
5 、 Struts 工作原理
-----------------------------------按照 Struts 工作原理图地说:
1.客户端发出一个指向 servlet 容器的请求;
2.请求会经过 StrutsPrepareAndExecuteFilter 过滤器;
3.过滤器和请求将访问 struts2 的底层框架结构。在 web 容器启动时,struts2 框架
会自动加载配置文件里相关参数,并转换成相应的类。
如:ConfigurationManager、ActionMapper 和 ObjectFactory。ConfigurationManager 存
有配置文件的一些基本信息,ActionMapper 存有 action 的配置信息。在请求过程中所有
的对象(Action,Results,Interceptors,等)都是通过 ObjectFactory 来创建的。过滤器会
通过询问 ActionMapper 类来查找请求中需要用到的 Action。
4.如果找到需要调用的 Action,过滤器会把请求的处理交给 ActionProxy。ActionProxy
为 Action 的代理对象。ActionProxy 通过 ConfigurationManager 询问框架的配置文件,找
到需要调用的 Action 类。
5.ActionProxy 创建一个 ActionInvocation 的实例。ActionInvocation 在 ActionProxy 层
之下,它表示了 Action 的执行状态,或者说它控制的 Action 的执行步骤。它持有 Action
实例和所有的 Interceptor。
6.ActionInvocation 实例使用命名模式来调用,1. ActionInvocation 初始化时,根据配
置,加载 Action 相关的所有 Interceptor。2. 通过 ActionInvocation.invoke 方法调用 Action
实现时,执行 Interceptor。在调用 Action 的过程前后,涉及到相关拦截器(intercepetor)
的调用。
7. 一旦 Action 执行完毕,ActionInvocation 负责根据 struts.xml 中的配置找到对应的
返回结果。
---------------------------------通俗地说:
发送 http 请求
Web 服务器(tomcat/weblogic...)
执行 struts 核心过滤器 StrutsPrepareAndExecuteFilter
加载 struts 配置文件中配置信息,找到对应的 Action 类并实例化
执行各类拦截器和 Action 中对应方法
配置文件中找到返回结果
转发到具体页面或其它操作
6 、 Struts 有什么优缺点
优点:
1. 实现 MVC 模式,结构清晰;
2. 丰富的 struts 的标记库,利用好能大大提高开发效率;
3. 全局结果与声明式异常;
4. 可使用 OGNL 进行参数传递
5. 各个类方便使用的拦截器
缺点:
1. 转到表现层时,需要配置结果页面;页面多了比较繁杂;
2. 对 Servlet 的依赖性过强
3. struts 标签稍微比 el 表达式繁重
7 、 为何使用 Spring
Spring 是一个轻量级的控制反转(IoC)、面向切面(AOP)、面向接口、事务管理、包容
促进其它框架;使系统中用到的其它框架耦合程度大大降低,拓展性强、简单易用好管理。
8 、 spring 在项目中如何充当粘合剂
1、在项目中利用 spring 的 IOC(控制反转或依赖注入),明确地定义组件接口(如 UserDAO),
开发者可以独立开发各个组件, 然后根据组件间的依赖关系组装(UserAction 依赖于
UserService,UserService 依赖于 UserDAO)运行,很好的把 Struts(Action)和 hibernate(DAO
的实现)结合起来;
2、spring 的事务管理把 hibernate 对数据库的操作进行了事务配置
9 、 描述在系统中如何使用了 Spring 的事务控制
Spring 事务包括编程式事务和声明式事务。在系统中使用了声明式的事务管理是用
Spring 的 AOP 来实现的;配置了只读事务和回滚事务(传播行为为 REQUIRED)当出现
错误后进行回滚操作。在项目中通过 aop 切入事务到 serivce 层,这样做能使一次业务
逻辑操作如果包括几个数据库操作都控制在一个事务中。
10 、 Hibernate 工作原理及为什么要用
原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建 SessionFactory 3.打开
Session 4.创建事务 Transation 5.持久化操作 6.提交事务 7.关闭 Session 8.关闭
SesstionFactory
为什么要用: 1. 对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐
的重复性代码。 2. Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的 ORM
实现。他很大程度的简化 DAO 层的编码工作 3. hibernate 使用 Java 反射机制,而不是
字节码增强程序来实现透明性。 4. hibernate 的性能非常好,因为它是个轻量级框架。
映射的灵活性很出色。它支持各种关系数据库,从一对一到多对多的各种复杂关系。
11 、 Hibernate 在系统中使用的优化策略
Hibernate 对数据的缓存包括两个级:一级缓存,在 Session 的级别上进行,主要是对象
缓存,以其 id 为键保存对象,在 Session 的生命期间存在;二级缓存, 在 SessionFactory
的级别上进行,有对象缓存和查询缓存,查询缓存以查询条件为键保存查询结果,在
SessionFactory 的生命期间存 在。默认地,Hibernate 只启用一级缓存。
关于这个问题答系统使用了 Hibernate 的二级缓存就好。
12 、 列举你在开发中常用的 Struts 标签
property、iterator、if、date、form、a、url、textfiled、textarea、select、radio、checkboxlist、
hidden、param
13 、 Jquery 异步获取数据的方式有几种?有何区别?
1、load 载入远程 HTML 文件代码并插入至 DOM 中
2、get
3、post
4、ajax
5、getJSON
6、getScript 通过 GET 方式请求载入并执行一个 JavaScript 文件
14 、 述 简述 UML 并说明你使用 Rose 常 于什么情况,画什么图?
Unified Modeling Language (UML) 统一建模语言;用于在软件开发各个阶段中用图形的
方式描述流程和功能需求;IBM Rational Rose是uml建模工具之一比较多的在需求阶段,
常用于画用例图、类图、时序图。
15 、 请简述导入导出的工具类;并说明你导出过的最大数据量
POI(合并单元格对象和背景色的应用)
16 、 统计图的实现方式
Fusioncharts 图表采用 SVG(可缩放矢量图形)实现,无需 Flash;跨终端
17、 易告知信息推送方式;如何实现?
在后台填写推送信息和推送名单后,系统将自动推送;后台 EE 开发人员只实现定时的
调用由客户端开发人员写的接口推送信息。
18 、 简述调查问卷的制作
不在你填写的开发功能内的;只需要描述下功能。可以制定调查题目和提供单选和多选
两种类型的选项;并可对调查结果进行统计。
19 、 系统的并发量如何?如何解决大并发量的请求?
系统并发量不大;但有在应用服务器中间件 Weblogic 上做负载均衡的配置。
20 、 项目中遇到问题如何解决?
自行解决——网络搜索——团队讨论解决
21 、 简述你在项目中的开发流程
项目课中的设计和开发都是比较贴近实际开发的,做了的话按照当时的开发情况描述。
3 拓展
1、 使用一种排序算法排序一组数字
冒泡、直接插入、选择
2、 编写一个可以体现多线程的例子
3、 编写一个 Singleton 类
原创粉丝点击