软件开发面试题及答案

上传人:ni****g 文档编号:547735369 上传时间:2024-01-04 格式:DOCX 页数:7 大小:32.54KB
返回 下载 相关 举报
软件开发面试题及答案_第1页
第1页 / 共7页
软件开发面试题及答案_第2页
第2页 / 共7页
软件开发面试题及答案_第3页
第3页 / 共7页
软件开发面试题及答案_第4页
第4页 / 共7页
软件开发面试题及答案_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《软件开发面试题及答案》由会员分享,可在线阅读,更多相关《软件开发面试题及答案(7页珍藏版)》请在金锄头文库上搜索。

1、1、请讲一下struts的流程答:用户提交表单Struts根据表单的请求路径,在web.xml中指定servlet,并根据init-param 元素读取servlet的配置信息ActionServlet或者扩展的ActionServlet接收请求,并根据请求的路径来判 断调用哪一个action,即action元素中的path路径,再根据action元素中的type属性,用 来指定处理请求的逻辑action (属于控制器部分),再根据其name属性来绑定form-bean, 即创建一个HelloForm对象,并把用户提交的表单数据传给ActionForm对象,这个对象保存 在scope设置的范围

2、内。如果 action 的 validate 属性设置为 true,则 ActonServlet 就调用 HelloForm 对象的validate()方法,对表单进行验证。ActionServlet查找action是否存在,如果不存在就创建一个实例,然后调 用 HelloAction 的 execute()方法。通过execute()方法中的逻辑验证后,执行相关的业务逻辑,最后调用 ActionMapping.findForward“SayHello” 方法。其中的参数 SayHello 与 struts-config.xml 文件中的action元素的forword属性值对应,则就将请求转

3、发到hello.jsp页面,结束。2、一条SQL语句的执行顺序是怎么样的?答:1、from子句组装来自不同数据源的数据;2、where子句基于指定的条件对记录行进行筛选;3、group by子句将数据划分为多个分组;4、使用聚集函数进行计算;5、使用having子句筛选分组;6、计算所有的表达式;7、使用order by对结果集进行排序。3、CMM是什么?CMM是指能力成熟度模型,其英文全称为Capability Maturity Model for Software,英文缩写为 SW-CMM,简称CMM。它是对于软件组织在定义、实施、度量、控制和改善其软件过程的实践中各个发展阶 段的描述。C

4、MM的核心是把软件开发视为一个过程,并根据这一原则对软件开发和维护进行过程监控和研 究,以使其更加科学化、标准化、使企业能够更好地实现商业目标。4、XML有几种解析方式?5、EJB分为几种BEAN? 答:EJB依照特性的不同,目前区分为三种,分别是Session Bean , Entity Bean,以及Message Driven Bean 。6、什么是UML?答:统一建模语言(UML是Unified Modeling Language的缩写)是用来对软件密集系统进行可视化 建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。7、你使用过UML哪些?答:

5、UML中包括九种图:用例图、类图、对象图、状态图、时序图、协作图、活动图、组件图、配置图。1)用例图(Use Case Diagram)它是UML中最简单也是最复杂的一种图。说它简单是因为它采用了面向对象的思想,又是基于用户视角的, 绘制非常容易,简单的图形表示让人一看就懂。说它复杂是因为用例图往往不容易控制,要么过于复杂, 要么过于简单。用例图表示了角色和用例以及它们之间的关系。2)类图(Class Diagram)是最常用的一种图,类图可以帮助我们更直观的了解一个系统的体系结构。通过关系和类表 示的类图,可以图形化的方式描述一个系统的设计部分。3)对象图()对象图是类图的实例,几乎使用与类

6、图完全相同的标识。它们的不同点在于对象图显示类的多个对象实例, 而不是实例的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时 间段存在。4)状态图描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的。 通常创建一个UML状态图是为了以下的研究目的:研究类、角色、子系统、或组件的复杂行为。5)时序图又称顺序图,描述了对象之间动态的交互关系,着重体现对象间消息传递的时间顺序。顺序图由一组对象构成,每个对象分别带有一条竖线,称作对象的生命线,它代表时间轴,时间沿竖线向 下延伸。顺序图描述了这些对象随着时间的推移 相互之间交换消息

7、的过程。消息用从一务垂直的对象生命 线指向另一个对象的生命线的水平箭头表示。图中还可以根据需要增加有关时间的说明和其他注释。6)协作图 协作图用于显示组件及其交互关系的空间组织结构,它并不侧重于交互的顺序。协作图显示了交互中各个 对象之间的组织交互关系以及对象彼此之间的链 接。与序列图不同,协作图显示的是对象之间的关系。另 一方面,协作图没有将时间作为一个单独的维度,因此序列号就决定了消息及并发线程的顺序。协作图是 一 个介于符号图和序列图之间的交叉产物,它用带有编号的箭头来描述特定的方案,以显示在整个方案过 程中消息的移动情况。协作图用途:通过描绘对象之间消息的移动情况来反映具体的方案。显示

8、对象及其交互关系的空间组织结构,而非交互的顺序。7)活动图(Activity Diagram)UML活动图记录了单个操作或方法的逻辑,单个用户案例,或者单个业务流程的逻辑。描述系统中各种活 动的执行顺序,通常用于描述一个操作中所要进行的各项活动的执行流程。同时,它也常被用来描述一个 用例的处理流程,或者某种交互流程。活动图由一些活动组成,图中同时包括了对这些活动的说明。当一个活动执行完毕之后,控制将沿着控制 转移箭头转向下一个活动。活动图中还可以方便地描述控制转移的条件以及并行执行等要求。8)组件图(Component Diagram)组件图是用来反映代码的物理结构。从组件图中,可以了解各软件

9、组件(如源代码文件或动态链接库)之 间的编译器和运行时依赖关系。使用组件图可以将系统划分为内聚组件并显示代码自身的结构。组件图的主要目的是显示系统组件间的结构关系。9)配置图配置图描述系统中硬件和软件的物理配置情况和系统体系结构。在配置图中,用结点表示实际的物理设备,如计算机和各种外部设备等,并根据它们之间的连接关系,将 相应的结点连接起来,并说明其连接方式。在结点里面,说明分配给该结点上运行的可执行构件或对象, 从而说明哪些软件单元被分配在哪些结点上运行8、存储过程和函数的区别?答:存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存 储过程,而函数通常是数

10、据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。9、事务是什么?答:事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为ACID(原子性、 一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性:事务必须是原子工作单元;对于 其数据修改,要么全都执行,要么全都不执行。一致性:事务在完成时,必须使所有的数据都保持一致状 态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有 的内部数据结构(如B树索引或双向链表)都必须是正确的。隔离性:由并发事务所作的修改必须与任何 其它并发事务所作的修改隔离。事务查看数据

11、时数据所处的状态,要么是另一并发事务修改它之前的状态, 要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装 载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。持久性:事务完 成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。10、游标的作用?如何知道游标已经到了最后?答:游标用于定位结果集的行,通过判断全局变FETCH_STATUS可以判断是否到了最后,通常此变 量不等于0表示出错或到了最后。11、触发器分为事前触发和事后触发,这两种触发有和区别。语句级触发和行级触发有何区别。答:事前触发器运行于触发事

12、件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器 可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所 影响的每一行触发一次。12、&和&的区别答:&是位运算符,表示按位与运算,&是逻辑运算符,表示逻辑与(and)13、Collection 和 Collections 的区别答:Collection是集合类的上级接口,继承于他的接口主要有Set和List.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线 程安全化等操作。14、Overload和Override的区别。Overloaded的方法

13、是否可以改变返回值的类型?答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类 与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义 某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方 法时,将调用子类中的定义,对它而言,父类中的定义如同被屏蔽了。如果在一个类中定义了多个 同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载 (Overloading)。 Overloaded的方法是可以改变返回值的类型。15、err

14、or和exception有什么区别答:error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程 序能处理这样的情况。exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常, 从不会发生的情况。16、ArrayList 和 Vec tor 的区别,HashMap 和 Hash table 的区别答:就ArrayList与Vector主要从二方面来说.一. 同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的 二数据增长:当需要增长时Vector默认增长为原来一培,而ArrayList却是原来的一半

15、 就HashMap与HashTable主要从三方面来说。一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个 实现二. 同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步 的三. 值:只有HashMap可以让你将空值作为一个表的条目的key或value。17、谈谈 final, finally, finalize 的区别答:final修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作 为父类被继承。因此一个类不能既被声明为abstract的,又被声明为final的。将变量或方法声明 为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以 后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch子句就会执行,然后控制就会进入finally块(如果有的话)finalize方法名。Java技术允许使用finalize。方法在垃圾收集器将对象从内存中清除出去之前 做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是 在Objec

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号