软件开发面试题及答案参考
Struts框架流程:
在Struts框架中,请求的处理过程可以分为以下几个步骤:
1. 用户提交表单,Struts根据表单的请求路径,在web.xml中指定servlet,并根据<init-param>元素读取servlet的配置信息。
2. ActionServlet或者扩展的ActionServlet接收请求,并根据请求的路径来判断调用哪一个action,即action元素中的path路径,再根据action元素中的type属性,用来指定处理请求的逻辑action(属于控制器部分)。
3. 再根据其name属性来绑定form-bean,即创建一个HelloForm对象,并把用户提交的表单数据传给ActionForm对象,这个对象保存在scope设置的范围内。
4. 如果action的validate属性设置为true,则ActonServlet就调用HelloForm对象的validate()方法,对表单进行验证。
5. ActionServlet查找action是否存在,如果不存在就创建一个实例,然后调用HelloAction的execute()方法。
6. 通过execute()方法中的逻辑验证后,执行相关的业务逻辑,最后调用ActionMapping.findForward(“SayHello”)方法,其中的参数SayHello与struts-config.xml文件中的action元素的forward属性值对应,则就将请求转发到“hello.jsp”页面,结束。
SQL语句执行顺序:
1. from子句组装来自不同数据源的数据。
2. where子句基于指定的条件对记录行进行筛选。
3. group by子句将数据划分为多个分组。
4. 使用聚集函数进行计算。
5. 使用having子句筛选分组。
6. 计算所有的表达式。
7. 使用order by对结果集进行排序。
CMM(Capability Maturity Model):
CMM是指“能力成熟度模型”,其英文全称为Capability Maturity Model for Software,英文缩写为SW-CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶段的描述。CMM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研究,以使其更加科学化、标准化,使企业能够更好地实现商业目标。
XML解析方式:
1. DOM(Document Object Model):处理大型文件时其性能下降的非常厉害。这是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问。
2. SAX(Simple API for XML):不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头、文档结束、或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问。
EJB(Enterprise JavaBean):
EJB依照特性的不同,目前区分为三种,分别是Session Bean、Entity Bean、以及Message Driven Bean。
UML(Unified Modeling Language):
UML是用来对软件密集系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。UML中包括九种图:
1. 用例图(Use Case Diagram):它是UML中最简单也是最复杂的一种图。说它简单是因为它采用了面向对象的思想,又是基于用户视角的,绘制非常容易,简单的图形表示让人一看就懂。说它复杂是因为用例图往往不容易控制,要么过于复杂,要么过于简单。用例图表示了角色和用例以及它们之间的关系。
2. 类图(Class Diagram):是最常用的一种图,类图可以帮助我们更直观的了解一个系统的体系结构。通过关系和类表示的类图,可以图形化的方式描述一个系统的设计部分。
3. 对象图(Object Diagram):对象图是类图的实例,几乎使用与类图完全相同的标识。它们的不同点在于对象图显示类的多个对象实例,而不是实例的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。
4. 状态图(State Diagram):描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。通常创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。
5. 时序图(Sequence Diagram):显示了对象之间的交互,按照时间顺序排列的方式来描述对象之间的交互。