几个有深度的问题有答案.
一、你对MVC的理解,M VC有什么优缺点?结合Stru ts,说明在一个We b应用如何去使用?
答:
MVC设计模式(应用观察者模式的框架模式)
M: Mode l(Bus iness proc ess l ayer),模型,操作数据的业务处理层,并独立于表现层(In depen dentof pr esent ation)。
V: Vie w(Pre senta tionlayer),视图,通过客户端数据类型显示数据,并回显模型层的执行结果。
C: Cont rolle r(Con trollayer),控制器,也就是视图层和模型层桥梁,控制数据的流向,接受视图层发出的事件,并重绘视图
MVC框架的一种实现模型
模型二(S ervle t-cen tric):
JS P+Ser vlet+JavaB ean,以控制为核心,JSP只负责显示和收集数据,Sevle t,连接视图和模型,将视
图层数据,发送给模型层,J avaBe an,分为业务类和数据实体,业务类处理业务数据,数据实体,承载数据,基本上大多数的项目都是使用这
种M VC的实现模式。
Stru tsMVC框架(We b app licat ion f ramew orks)
St ruts是使用MVC的实现模式二来实现的,也就是以控制器为核心。
Strut s提供了一些组件使用MVC开发应用程序:
Mod el:St ruts没有提供mo del类。这个商业逻辑必须由W eb应用程序的开发者以Java Bean或EJB的形式提供
View:Stru ts提供了actio n for m创建fo rm be an, 用于在con troll er和vi ew间传输数据。此外,Stru ts提供了自定义JS P标签库,辅助开发者用JSP创建交互式的以表单为基础的应用程序,应用程序资源文件保留了一些文本常量和错误消息,可转变为其它语言,可用于JSP中。
Contr oller:Stru ts提供了一个核心的控制器Ac tionS ervle t,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Actio n,自定义Actio n需要符合Strut s的自定义Actio n规范,还需要在st ruts-confl的特定配置文件中进行配置,接收JSP输入字段形成A ction form,然后调用一个Act ion控制器。Act ion控制器中提供了model的逻辑接口。
二、什么是W ebSer vice?
答:
WebS ervic e是一个S OA(面向服务的编程)的架构,它是不依赖于语言,不依赖
于平台,可以实现不同的语言间的相互调用,通过I ntern et进行基于Http协议的网络应用间的交互。
W ebSer vice实现不同语言间的调用,是依托于一个标准,w ebser vice是需要遵
守W SDL(w eb服务定义语言)/SOAP(简单请求协议)规范的。
We bServ ice=W SDL+S OAP+U DDI(w ebser vice的注册)
Soap是由Soa p的par t和0个或多个附件组成,一般只有part,在par t中有
En velop e和Bod y。
Web S ervic e是通过提供标准的协议和接口,可以让不同的程序集成的一种SO A架构。
WebServi ce的优点
(1) 可以让异构的程序相互访问(跨平台)
(2)松耦合
(3)基于标准协议(通用语言,允许其他程序访问)
W eb Se rvice的基本原理
(1) Ser viceProvi der采用WSDL描述服务
(2)Servi ce Pr ovide r 采用U DDI将服务的描述文件发布到U DDI服务器(Reg ister
serv er)
(3)Servi ce Re quest or在UD DI服务器上查询并获取WSD L文件
(4)Servi ce re quest or将请求绑定到SO AP,并访问相应的服务。
三、什么是中间件?
中间件就是程序中可织入的,可重用的,与业务逻辑无关的各种组件。
中间件(middl eware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统软件与用户的应用软件的中间。中间件在操作系统、网络和数据库之上,应用软件的下层,总的作用是为处于自己上层的应用软件提供运行与开发的环境,帮助用户灵活、高效地开发和集成复杂的应用软件。
在众多关于中间件的定义中,比较普遍被接受的是IDC表述的:中间件是一种独立的系统软件或服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。
分类:数据访问中间件,远程调用中间件,消息中间件,交易中间件,对象中间件。
举例:
1,RMI(Remot e Met hod I nvoca tions, 远程调用)
2,L oad B alanc ing(负载均衡,将访问负荷分散到各个服务器中)
3,Tran spare nt Fa il-ov er(透明的故障切换)
4,Cl uster ing(集,用多个小的服务器代替大型机)
5,Ba ck-en d-Int egrat ion(后端集成,用现有的、新开发的系统如何去集成遗留的系统)
6,Tr ansac tion事务(全局/局部)全局事务(分布式事务)局部事务(在同一数据库联接内的事务)
7,D ynami c Red eploy ment(动态重新部署,在不停止原系统的情况下,部署新的系统)
8,Sy stemManag ement(系统管理)
9,Th readi ng(多线程处理)负载均衡的理解
10,Mes sage-orien ted M iddle ware面向消息的中间件(异步的调用编程)
11,C ompon ent L ife C ycle(组件的生命周期管理)
12,Re sourc e poo ling(资源池)
13,Sec urity(安全)
14,Cac hing(缓存)
四、什么是典型的软件三层结构?软件设计为什么要分层?软件分层有什么好处?答:(1) Pr esent ation laye r(表示层)
(1) 表示逻辑(生成界面代码)
(2) 接收请求
(3) 处理业务层抛出的异常
(4)负责规则验证(数据格式,数据非空等)
(5)流程控制
(2)Servi ce la yer(服务层/业务层)
(1) 封装业务逻辑处理,并且对外暴露接口
(2) 负责事务,安全等服务
(3) P ersis tence laye r(持久层)
(1) 封装数据访问的逻辑,暴露接口
(2) 提供方便的数据访问的方案(查询语言,API,映射机制等)
D omain laye r(域层)
(1) 业务对象以及业务关系的表示
(2) 处理简单的业务逻辑
(3) 域层的对象可以穿越表示层,业务层,持久层
软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。
五、什么是OOP?OOP相对于面向过程编程有哪些优点?
OOP,Objec t-Ori ented Prog rammi ng,面向对象编程不同于面向过程编程:
(1)O OP关注对象和角,也就是事物的本质
1)OO P把客观世界中的对象抽象成对应的类;
2)通过类构造实例;
3)通过依赖、继承、实现等形式建立对象间的通信关系
(2)O OP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码
(3)O OP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型
六、谈谈Over load和Overr ide的区别。
答:
方法的重写Ove rridi ng和重载Overl oadin g是Jav a多态性的不同表现。重写
Ove rridi ng是父类与子类之间多态性的一种表现,重载Over loadi ng是一个类中多
态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说
该方法被重写(Over ridin g)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载
(O verlo ading)。Ove rload ed的方法是可以改变返回值的类型。
七、谈谈Ha shMap和Hash table的区别。
答:
HashM ap是轻量级的(线程不安全的,效率高的)集合,Ha shtab le是重量级的(线程安全的,效率低的)集合。
都属于Map接口的类,实现了将惟一键映射到特定的值上。
H ashMa p 类没有分类或者排序。它允许一个 nu ll 键和多个 nu ll 值。
Ha shtab le 类似于 Has hMap,但是不允许 null键和n ull 值。它也比HashM ap 慢,因为它是同步的。
八、请问ab strac t cla ss和in terfa ce有什么区别?
答:
1) 接口没有任何的实现,而抽象类它可以有部分的实现也可以没有;
2) 如果需要复用或者共享部分代码,应该用抽象类而不是接口;
3)继承无法解决类型的转换问题,接口就是为了解决这一问题而产生的(Jav a的单继承是接口产生的根
本原因) 接口是一种抽象的第三方规范,跟对象没什么直接关系。九、请问软件开发中的设计模式你会使用哪些?
答:我熟悉的设计模式有单例模式,DA O模式,模板方法,工厂模式,委托代理模式,MVC模式等。
Singl eton模式主要作用是保证在J ava应用程序中,一个类Cla ss只有一个实例存在。
S ingle ton模式一般形式:
定义一个类,它的构造函数为priv ate的,它有一个s tatic的priv ate的该类变量,在类初始化时实例话,通过一个pu blic的getIn stanc e方法获取对它的引用,继而调用其中的方法。
十、类的核心特性有哪些?
类具有封装性、继承性和多态性。
封装性:
类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。
继承性:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论