软件开发面试题及答案

上传人:zou****hua 文档编号:210635625 上传时间:2023-05-17 格式:DOCX 页数:7 大小:32.54KB
收藏 版权申诉 举报 下载
软件开发面试题及答案_第1页
第1页 / 共7页
软件开发面试题及答案_第2页
第2页 / 共7页
软件开发面试题及答案_第3页
第3页 / 共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的,

16、又被声明为final的。将变量或方法声明 为final,可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,而在以 后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载 finally再异常处理时提供finally块来执行任何清除操作。如果抛出一个异常,那么相匹配的 catch子句就会执行,然后控制就会进入finally块(如果有的话)finalize方法名。Java技术允许使用finalize。方法在垃圾收集器将对象从内存中清除出去之前 做必要的清理工作。这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是 在Object类

17、中定义的,因此所有的类都继承了它。子类覆盖finalize。方法以整理系统资源或者 执行其他清理工作。finalize。方法是在垃圾收集器删除对象之前对这个对象调用的。18、面向对象的特征有哪些方面答:1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽 象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是 过程抽象,二是数据抽象。2. 继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象 的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新

18、类称为原始 类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实 例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。3. 封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概 念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其 他对象。4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性 语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。19、int 和 Integer 有什么区别答:Ja

19、va提供两种不同的类型:引用类型和原始类型(或内置类型)。Int是java的原始数据类型, Integer是java为int提供的封装类。Java为每个原始类型提供了封装类。原始类型封装 类,booleanBoolean,charCharacter,byteByte,shortShort,intInteger,longLong,floatFloat,doubl eDouble 引用类型和原始类型的行为完全不同,并且它们具有不同的语义。引用类型和原始类型具有不同的特 征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类 型用作某个类的实例数据时所指定的缺省值。

20、对象引用实例变量的缺省值为null,而原始类型实例 变量的缺省值与它们的类型有关20、什么是JDK,举出几个公司开发的JDK。 答:JDK(Java Development Kit)是整个 Java 的核心,包括了 Java 运行环境(Java Runtime Envirnment), 一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的 JDK。因此掌握JDK是学好Java的第一步。最主流的JDK是Sun公司发布的JDK,除了 Sun之外,还 有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有

21、GNU组 织开发的JDK等等。21、什么是应用服务器(App Server) ?简要介绍几种常用的App Server。答:App Server是运行Java企业组件的平台,构成了应用软件的主要运行环境。当前主流的App Server 是BEA公司的Weblogic Server和IBM公司的Websphere以及免费的Jboss。22、说出Servlet的生命周期。答:Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service 方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调 用其dest

22、roy方法。23、说出ArrayList,Vector, LinkedList的存储性能和特性答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和 插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索 引数据快而插入数据慢Vector由于使用了 synchronized方法(线程安全),通常性能上较ArrayList 差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据 时只需要记录本项的前后项即 可,所以插入速度较快。24、forward 和 redirect

23、的区别答: forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来, 然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏 中还是原来的地址。redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说 浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。25、EJB 与 JAVA BEAN 的区别?答:Java Bean是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可 以是一个Bean。但通常情况下,由于Java

24、 Bean是被容器所创建(如Tomcat )的,所以Java Bean应 具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。 Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的Enterprise Java Bean相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可 以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中, EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组

25、件的代 理,EJB组 件由容器所创建和管理。客户通过容器来访问真正的EJB组件。26、JSP中动态INCLUDE与静态INCLUDE的区别?答:动态 INCLUDE 用 jsp:include 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。静态 INCLUDE 用 include 伪码实现,定不会检查所含文件的变化,适用于包含静态页面27、Java中的异常处理机制的简单原理和应用答:当JAVA程序违反了 JAVA的语义规则时,JAVA虚拟机就会将发生的错误表示为一个异常。违反语 义规则包括 2 种情况。一种是 JAVA 类库内置的语义检 查。例如数组下标越界,会

26、引发 IndexOutOfBoundsException;访问 null 的对象时会引发 NullPointerException。另一种情况就是 JAVA允许程序员扩展这种语义检查,程序员可以创建自己的异常,并自由选择在何时用throw关键字 引发异常。所有的异常都是java.lang.Thowable的子类。28、请说出你所知道的线程同步的方法答:wait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 InterruptedException 异常。notify():唤醒一个处于等待状态的线程

27、,注意的是在调用此方法的时候,并不能确切的唤醒某一个等 待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们 竞争。29、JSP的内置对象及方法答:request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于 获取cookie, header,和session数据的有用的方法。response表示HttpServletResponse对象,并提供了几个用于设置送回浏览器的响应的方法 (如cookies,头信息等)out对象是javax.j

28、sp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输 出结果。pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的 名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的状 态信息applicaton 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎 和servlet环境的信息confi

29、g表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始 化参数。page表示从该页面产生的一个servlet实例30、四种会话跟踪技术答:会话作用域ServletsJSP页面描述page否是代表与一个页面相关的对象和属性。一个页面由一个编译好的Java servlet类(可以带有 任何的 include 指令,但是没有 include 动作)表示。这既包括 servlet 又包括被编译成 servlet 的 JSP 页面request是是代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉 及多个Web组件(由于forward指令和include动作的关系)session 是是代表与用于某个 Web 客户机的一个用户体验相关的对象和属性。一个 Web 会话可以也 经常会跨越多个客户机请求application是是代表与整个Web应用程序相关的对象和属性。这实质上是跨越整个Web应用程序, 包括多个页面、请求和会话的一个全局作用域

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!