《软件工程师面试题(含答案).docx》由会员分享,可在线阅读,更多相关《软件工程师面试题(含答案).docx(16页珍藏版)》请在第一文库网上搜索。
1、一、你对MVC的理解,MVC有什么优缺点?结合StrUts,说明在一个Web应用如何去使用?答:MVC设计模式(应用观察者模式的框架模式)M:Mode1(Businessprocess1ayer),模型,操作数据的业务处理层,并独立于表现层(IndePendentofpresentation)V:View(Presentation1ayer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。C:Contro11er(Contro11ayer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图MVC框架的一种实现模型模型二(SerVIet-Centri
2、c):JSP+Serv1et+JavaBean,以控制为核心,JSP只负责显示和收集数据,Sev1et,连接视图和模型,将视图层数据,发送给模型层,JavaBean,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这种MVC的实现模式。StrutsMVC框架(Webapp1icationframeworks)Struts是使用MVC的实现模式二来实现的,也就是以控制器为核心。Struts提供了一些组件使用MVC开发应用程序:Mode1:Struts没有提供mode1类。这个商业逻辑必须由Web应用程序的开发者以JavaBean或EJB的形式提供View:
3、Struts提供了actionform创建formbean,用于在COmrO11er和view间传输数据。此外,Struts提供了自定义JSP标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。Contro11er:Struts提供了一个核心的控制器ActionServ1et,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,自定义Action需要符合Struts的自定义Action规范,还需要在StnnS-COnfig.xm1的特定配置文件中进行配置,接收JSP输入字段形成ACtio
4、nform,然后调用一个AetiOn控制器。ACtiOn控制器中提供了mode1的逻辑接口。二、什么是WebService?答:WebSerViCe是一个SoA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于HttP协议的网络应用间的交互。WebSerViCe实现不同语言间的调用,是依托于一个标准,WebSerViCe是需要遵守WSD1(Web服务定义语言)/SOAP(简单请求协议)规范的。WebService=WSD1+SOAP+UDDI(webservice的注册)Soap是由Soap的part和0个或多个附件组成,一般
5、只有part,在part中有Enve1ope和Body.WebService是通过提供标准的协议和接口,可以让不同的程序集成的一种SOA架构。WebService的优点(I)可以让异构的程序相互访问(跨平台)(2)松耦合(3)基于标准协议(通用语言,允许其他程序访问)WebService的基本原理(I)ServiceProvider采用WSD1描述服务(2) ServiceProvider采用UDD1将服务的描述文件发布到UDDI服务器(RegiSterSerVer)(3) ServiceRequestor在UDDI服务器上查询并获取WSD1文件(4) Servicerequestor将请求绑
6、定到SOAP,并访问相应的服务。三、什么是中间件?中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。中间件(midd1eware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成更杂的应用软件。在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通
7、信。分类:数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间件。举例:1, RMI(RemoteMethodInvocations,远程调用)2, 1OadBa1aneing(负载均衡,将访问负荷分散到各个服务器中)3, TransparentFai1-OVer(透明的故障切换)4, CIUStering(集群,用多个小的服务器代替大型机)5, BaCk-end-Integration(后端集成,用现有的、新开发的系统如何去集成遗留的系统)6, TranSaCtiOn事务(全局/局部)全局事务(分布式事务)局部事务(在同一数据库联接内的事务)7, DynamiCRedeP1Oym
8、ent(动态重新部署,在不停止原系统的情况下,部署新的系统)8, SyStemManagement(系统管理)9, Threading(多线程处理)10, MeSSage-OrientedMidd1eWare面向消息的中间件(异步的调用编程)11, Component1ifeCyC1e(组件的生命周期管理)12, Resourcepoo1ing(资源池)13, Security(安全)14, Caching(缓存)四、什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?答:(I)PreSentation1ayer(表示层)(1)表示逻辑(生成界面代码)(2)接收请求(3)处理业
9、务层抛出的异常(4)负责规则验证(数据格式,数据非空等)(5)流程控制(2) Service1ayer(服务层/业务层)(I)封装业务逻辑处理,并且对外暴露接口(2)负责事务,安全等服务Persistence1ayer(持久层)(I)封装数据访问的逻辑,暴露接口(2)提供方便的数据访问的方案(查询语言,API,映射机制等)Domain1ayer(域层)(1)业务对象以及业务关系的表示(2)处理简单的业务逻辑(3)域层的对象可以穿越表示层,业务层,持久层软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。五、什么是OOP?OoP相对于面向过程编程有哪些优点?OOP,Obje
10、ct-OrientedProgramming,面向对象编程不同于面向过程编程:(I)OOP关注对象和角色,也就是事物的本质1)OOP把客观世界中的对象抽象成对应的类;2)通过类构造实例;3)通过依赖、继承、实现等形式建立对象间的通信关系(2) OoP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码(3) OOP易于建模,OoP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型六、谈谈Over1oad和OVerride的区别。答:方法的重写OVerriding和重载Over1oading是Java多态性的不同表现。重写Overriding是
11、父类与子类之间多态性的一种表现,重载OVeHOading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(OVeITiding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(OVeHoading)。Over1oaded的方法是可以改变返回值的类型。七、谈谈HashMap和Hashtab1e的区别。答:HaShMaP是轻量级的(线程不安全的,效率高的)集合,HaShtabIe是重量级的(线程安全的,效率低的)集合
12、。都属于M叩接口的类,实现了将惟一键映射到特定的值上。HashMap类没有分类或者排序。它允许一个nu11键和多个nu11值。Hashtab1e类似于HaShMaP,但是不允许nu11键和nu11值。它也比HaShMaP慢,因为它是同步的。八、请问abstractc1ass和interface有什么区别?答:1)接口没有任何的实现,而抽象类它可以有部分的实现也可以没有;2)如果需要复用或者共享部分代码,应该用抽象类而不是接口;3)继承无法解决类型的转换问题,接口就是为了解决这一问题而产生的(JaVa的单继承是接口产生的根本原因)接口是一种抽象的第三方规范,跟对象没什么直接关系。九、请问软件开发
13、中的设计模式你会使用哪些?答:我熟悉的设计模式有单例模式,DAo模式,模板方法,工厂模式,委托代理模式,MVC模式等。Sing1eton模式主要作用是保证在Java应用程序中,一个类C1ass只有一个实例存在。Sing1eton模式一般形式:定义一个类,它的构造函数为PriVate的,它有一个StatiC的PriVate的该类变量,在类初始化时实例话,通过一个pub1ic的get1nstance方法获取对它的引用,继而调用其中的方法。十、类的核心特性有哪些?类具有封装性、继承性和多态性。封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实
14、现细节。继承性:类的继承性提供从己存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部成员。多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。十一、请问类与对象有什么区别?类类就是某一种事物的一般性的集合体,是相同或相似的各个事物共同特性的一种抽象。对象在面向对象概念中,对象(ObjeCt)是类的实例(instance)0对象与类的关系就像变量与数据类型的关系一样。十二、写出生产者消费者模型的实现十三、用软件工程和JaVa来叙述购物车(ShoPPingCart)系统实现十四、文件系统的几个类:FiIe1nPUtSIream、
15、Fi1eOutputStream,FiIeReader、Fi1eWri1er的区另IJ十五、请写出JaVaAP1中最常用的五个包,并且各举两个类加以说明。十六、请问你在“电信运营支撑系统”中遇到了哪些问题?你是怎么解决的?做这个项目你最大的收获是什么?十七、请说出几个常用的异常类答:Nu11pointException(空指针异常)C1assNotFoundException(类找不到异常)C1assCastException(类型转换异常)I11ega1ArgumentException(非法参数异常)ArithmeticException(算术异常)NumberFormatException(数据格式异常)IndexOutOfBoundsException(数组下标越界异常)11Iega1StateException(非法语句异常)十八、什么是进程和线程?两者的区别是什么?十九、请简要描述一下你做的ShoppingCart项目。二十、请问网络7层协议,1cpip4层协议是什么?二H、JaVa面向对象的四大特点二十二、pub1ic,private,protected,defau1t访问权限(可见性)答:pub1ic:全局可见protected:继承体系结构之间可见defau1t