`
paddy2008
  • 浏览: 8094 次
  • 性别: Icon_minigender_1
  • 来自: 浙江嵊州
文章分类
社区版块
存档分类
最新评论
阅读更多
46、介绍一下hibernate 的工作原理、优点以及如何优化?
答:
工作原理:
启动 Hibernate 构建 Configuration 实例,初始化该实例中的所有变量
Configuration cfg = new Configuration().configure();
b.加载 hibernate.cfg.xml 文件至该实例内存,通过 hibernate.xfg.xml 文件中
的mapping 节点配置,加载hbm.xml 文件至该实例内存;
c. 由 上 面 得 到 的 Configuration  实 例 构 建 一 个 SessionFactory  实 例
SessionFactory sf = cfg.buildSessionFactory();
d.由上面得到的SessionFactory实例创建连接 Session s = sf.openSession();
e.由上面得到的 Session 实例创建事务操作接口 Transaction 的一个实例 tx
Transaction tx = s.beginTransaction();
f.通过 Session接口提供的各种方法操作数据库的访问
g.提交数据库的操作结果 tx.commit();
h.关闭Session链接 s.close();

优点:
a.对 JDBC 访问数据库的代码做了封装,大大简化了数据访问层繁琐的重复性代
码。
b.Hibernate 是一个基于 JDBC 的主流持久化框架,是一个优秀的ORM 实现。他
很大程度的简化DAO 层的编码工作
c.hibernate使用Java 反射机制,而不是字节码增强程序来实现透明性。
d.hibernate 的性能非常好,因为它是个轻量级框架。映射的灵活性很出色。它
支持各种关系数据库,从一对一到多对多的各种复杂关系。
优化:
a.使用双向一对多关联,不使用单向一对多
b.灵活使用单向一对多关联
c.不用一对一,用多对一取代
d.配置对象缓存,不使用集合缓存
e.一对多集合使用Bag,多对多集合使用Set
f.继承类使用显式多态
g.表字段要少,表关联不要怕多,可以利用二级缓存

48、对 hibernate 的延迟加载如何理解,在实际应用中,延迟加载与 session
关闭的矛盾是如何处理的?
答:延迟加载就是并不是在读取的时候就把数据加载进来,而是等到使用时再加
载。那么Hibernate 是怎么知识用户在什么时候使用数据了呢?又是如何加载数
据呢?其实很简单,它使用了代理机制。返回给用户的并不是实体本身,而是实
体对象的代理。代理对象在用户调用 getter 方法时就会去数据库加载数据。但
加载数据就需要数据库连接。而当我们把会话关闭时,数据库连接就同时关闭了。
这种情况就叫做未初始化的关系。
延迟加载与 session关闭的矛盾一般可以这样处理:
1)、关闭延迟加载特性。
操作起来比较简单,因为hibernate的延迟加载特性是在hbm配置里面可控制的。
默认 lazy="true",具体配置可以查看一下相关文档,就不详细叙述了。
但使用这个解决办法带来的隐患是十分大的。
首先,出现 no session or session was closed 就证明了您已经在使用外键关
联表,如果去掉延迟加载的话,则表示每次查询的开销都会变得十分的大,如果
关联表越多,后果也可以想象得到。所以不建议使用这个方法解决。
2)、在session关闭之前把我们想要查询的数据先获取了。
首先需要了解一下 session 什么时候关闭,也就是它的生命周期。通常情况下
hibernate 会在查询数据关闭 session,而使用 getHibernateTemplate().get
方法查询后会延迟关闭的时间。会在事务结束后才关闭。
使用拦截器(Interceptor)或过滤器(Filter)控制 session。
spring 为解决 hibernate 这一特性提供的解决方案,可以有效的控制 session
生命周期。


33、解释四种会话跟踪技术?
答:隐藏表单域、URL 重写,Cookie、Session。
1.隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话
应用。
2.URL重写:URL可以在后面附加参数,和服务器的请求一起发送,这些参数为名
字/值对。
3.Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie
头标将它作为HTTP 响应的一部分传送到客户端,客户端被请求保存Cookie 值,
在对同一服务器的后续请求使用一个 Cookie 头标将之返回到服务器。与其它技
术比较,Cookie 的一个优点是在浏览器会话结束后,甚至在客户端计算机重启
后它仍可以保留其值。
4.Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一
个会话
34、J2EE 、EJB、JDBC 是一回事吗,它们之间有什么关系?
答:不是一回事,J2EE (Java 2 Platform,Enterprise Edition)是一套全然不
同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开
发与部署,进而提高可移植性、安全与再用价值。J2EE 核心是一组技术规范与
指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,
让各种依循 J2EE 架构的不同平台之间,存在良好的兼容性。其中,EJB 和 JDBC
都属于J2EE 的一部分。
36、数据连接池的工作机制是什么?
答:J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的
池连接。 客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将
其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建
连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接
表记为空闲,其他调用就可以使用这个连接。
37、什么是ORM?
答:对象关系映射(Object—Relational Mapping,简称ORM)是一种为了解决
面向对象与面向关系数据库存在的互不匹配的现象的技术;简单的说,ORM 是通
过使用描述对象和数据库之间映射的元数据,将 java程序中的对象自动持
久化到关系数据库中;本质上就是将数据从一种形式转换到另外一种形式。
50、WEB SERVICE 名词解释。JSWDL 开发包的介绍。JAXP、JAXM 的解释。SOAP、
UDDI,WSDL 解释。
答:Web Service 是基于网络的、分布式的模块化组件,它执行特定的任务,遵
守具体的技术规范,这些规范使得Web Service 能与其他兼容的组件进行互操作;
    JAXP(Java API for XML Parsing)定义了在 Java 中使用 DOM, SAX, XSLT
的通用的接口,这样在你的程序中你只要使用这些通用的接口,当你需要改变具
体的实现时候也不需要修改代码;
    JAXM(Java API for XML Messaging)是为 SOAP 通信提供访问方法和传输机
制的API;
    WSDL 是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含
面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行
抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具
体端点即组合成为抽象端点(服务);
     SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交
换XML 编码信息的轻量级协议;
    UDDI 的目的是为电子商务建立标准;UDDI 是一套基于Web 的、分布式的、
为Web Service 提供的、信息注册中心的实现标准规范,同时也包含一组使企业
能将自身提供的Web Service 注册,以使别的企业能够发现的访问协议的实现标
准。
55、Session 的基本原理是什么?
答:Session 对象的原理在于,服务器可以为客户端创建并维护一个所谓的
Session 对象,用于存放数据。在创建 Session 对象的同时,服务器将会为该
Session对象产生一个唯一编号,这个编号称之为 SessionID,服务器以Cookie
的方式将 SessionID 存放在客户端。当浏览器再次访问该服务器时,会将
SessionID 作为 Cookie 信息带到服务器,服务器可以通过该 SessionID 检索到
以前的Session 对象,并对其进行访问。需要注意的是,此时的 Cookie 中仅仅
保存了一个 SessionID,而相对较多的会话数据保存在服务器端对应的Session
对象中,由服务器来统一维护,这样一定程度保证了会话数据安全性,但增加了
服务器端的内存开销。存放在客户端的用于保存 SessionID 的Cookie 会在浏览
器关闭时清除。我们把用户打开一个浏览器访问某个应用开始,到关闭浏览器为
止交互过程称为一个“会话”。在一个“会话”过程中,可能会向同一个应用发
出了多次请求,这些请求将共享一个Session对象,因为这些请求携带了相同的
SessionID信息。Session对象的正常使用要依赖于Cookie。如果考虑到客户端
浏览器可能出于安全的考虑禁用了Cookie,应该使用URL 重写的方式使Session
在客户端禁用Cookie 的情况下继续生效。
56、JSP 中动态INCLUDE与静态INCLUDE的区别?Servlet 中forward与redirect
的区别?
答:动态 INCLUDE用 jsp:include动作实现 <jsp:include page="head.jsp"/>
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数;静
态 INCLUDE用 include伪码实现,它不会检查所含文件的变化,适用于包含静态
页面<%@include file="head.htm" %>
     forward 是容器中控制权的转向,是服务器请求资源,服务器直接访问目标
地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,
浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来
的地址。 redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请
求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以
session,request参数都可以获取,并且从浏览器的地址栏中可以看到跳转后的
链接地址。前者更加高效,在前者可以满足需要时,尽量使用 forward()方法,
并且,这样也有助于隐藏实际的链接;在有些情况下,比如,需要跳转到一个其
它服务器上的资源,则必须使用 sendRedirect()方法。 
61、Servlet 是线程安全吗?以下代码中使用 synchronized 关键字的意义是什
么?Synchronized (aList){
        aList.remove (1);
     }
答:默认不是线程安全的,但是 servlet 实现了 SingthreadModel 接口 就能单
线程执行。此题中代码的意思是给aList对象加同步锁,保证 aList对象在多线
程任务环境中,每次只能够有一个线程调用 remove 方法。从而提高对 aList 对
象操作的安全性和正确性。
62、就WEB2.0 相关信息做一下描述,谈谈你对这些技术概念的认识。
答:一些WEB2.0 产品,就可以理解以上观点。
Blog:用户织网,发表新知识,和其他用户内容链接,进而非常自然的组织这些
内容。
RSS:用户产生内容自动分发,定阅。
Podcasting:个人视频/声频的发布/定阅。
SNS:blog+人和人之间的链接。
WIKI:用户共同建设一个大百科全书。
从知识生产的角度看,WEB1.0 的任务,是将以前没有放在网上的人类知识,通
过商业的力量,放到网上去。
WEB2.0 的任务是,将这些知识,通过每个用户的浏览求知的力量,协作工作,
把知识有机的组织起来,在这个过程中继续将知识深化,并产生新的思想火花;
从内容产生者角度看,WEB1.0 是商业公司为主体把内容往网上搬,而WEB2.0 则
是以用户为主,以简便随意方式,通过 blog/podcasting 方式把新内容往网上
搬;
从交互性看,WEB1.0 是网站对用户为主;WEB2.0 是以P2P 为主。
从技术上看,WEB 客户端化,工作效率越来越高。
我们看到,用户在互联网上的作用越来越大;他们贡献内容,传播内容,而且提
供了这些内容之间的链接关系和浏览路径。在 SNS里面,内容是以用户为核心来
组织的。WEB2.0 是以用户为核心的互联网

64、Jdo 是什么?
答:JDO 是 Java 对象持久化的新的规范,为 java data object 的简称,也是一
个用于存取某种数据仓库中的对象的标准化 API。JDO 提供了透明的对象存储,
因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API 的使
用)。这些繁琐的例行工作已经转移到 JDO 产品提供商身上,使开发人员解脱出
来,从而集中时间和精力在业务逻辑上。另外,JDO 很灵活,因为它可以在任何
数据底层上运行。JDBC 只是面向关系数据库(RDBMS)JDO 更通用,提供到任何
数据底层的存储功能,比如关系数据库、文件、XML 以及对象数据库(ODBMS)
等等,使得应用可移植性更强。
66、get和post 的区别?
答:Form 中的get 和 post 方法,在数据传输过程中分别对应了 HTTP 协议中的
GET 和POST 方法。二者主要区别如下:
    1)Get 将表单中数据按照 variable=value 的形式,添加到action所指向的
URL 后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post 是将
表单中的数据放在form 的数据体中,按照变量和值相对应的方式,传递到action
所指向URL;
    2)Get 是不安全的,因为在传输过程,数据被放在请求的 URL 中;Post 的
所有操作对用户来说都是不可见的;
    3)Get 传输的数据量小,这主要是因为受 URL 长度限制;而 Post 可以传输
大量的数据,所以在上传文件只能使用Post;
   4)Get 限制Form表单的数据集必须为ASCII字符,而Post支持整个 ISO10646
字符集;
   5)Get 是Form 的默认方法。
68、介绍一下spring MVC 的工作原理、用途、为什么用?
答:
工作原理:
1.spring mvc请所有的请求都提交给 DispatcherServlet,它会委托应用系统的
其他模块负责负责对请求进行真正的处理工作。
2.DispatcherServlet 查询一个或多个 HandlerMapping,找到处理请求的
Controller.
3.DispatcherServlet 请请求提交到目标 Controller
4.Controller进行业务逻辑处理后,会返回一个ModelAndView
5.Dispathcher 查询一个或多个 ViewResolver 视图解析器,找到 ModelAndView
对象指定的视图对象
6.视图对象负责渲染返回给客户端。
用途:
JSP、Servlet、JavaBean 技术的出现给我们构建强大的企业应用系统提供了可
能。但用这些技术构建的系统非常的繁乱,所以在此之上,我们需要一个规则、
一个把这些技术组织起来的规则,这就是框架,Struts便应运而生。
为什么用:
AOP 让开发人员可以创建非行为性的关注点,称为横切关注点,并将它们插入到
应用程序代码中。使用 AOP 后,公共服务                         (比如日志、持久性、事务等


就可以分解成方面并应用到域对象上,同时不会增加域对象的对象模型的复杂
性。IOC 允许创建一个可以构造对象的应用环境,然后向这些对象传递它们的协
作对象。正如单词 倒置 所表明的,IOC 就像反过来的 JNDI。没有使用一堆抽
象工厂、服务定位器、单元素(singleton)和直接构造(straight construction),
每一个对象都是用其协作对象构造的。因此是由容器管理协作对象
(collaborator)。 Spring 既是一个AOP 框架,也是一 IOC 容器。 Spring 最
好的地方是它有助于您替换对象。有了 Spring,只要用 JavaBean 属性和配置
文件加入依赖性(协作对象)。然后可以很容易地在需要时替换具有类似接口的
协作对象。
71、EJB 与JAVA BEAN 的区别?
答:Java Bean 是可复用的组件,对Java Bean 并没有严格的规范,理论上讲,
任何一个Java类都可以是一个Bean。但通常情况下,由于Java 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 组件的代理,EJB 组件
由容器所创建和管理。客户通过容器来访问真正的EJB 组件。
74、简要说明JVM、JSP、Servlet、Web Server、Web Browser 之间的关系。
答:当用户在 JSP 页面上提交了需要服务器处理的数据后,通过 Web Browser
发送到服务器端,Servlet会根据用户的请求产生必要的相应,如果需要还会通
过JVM 或Web Server 来获取资源,最后把服务器端的相应结果返回给用户。
80、什么是UDDI、SOAP、WSDL?
答:UDDI 是一套基于 Web 的、分布式的、为Web Service 提供的、信息注册中
心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service 注册,
以使别的企业能够发现的访问协议的实现标准。
     SOAP 即简单对象访问协议(Simple Object Access Protocol),它是用于交
换XML 编码信息的轻量级协议。
    WSDL 是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含
面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行
抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具
体端点即组合成为抽象端点(服务)。
分享到:
评论
2 楼 paddy2008 2010-11-04  
lonvea 写道
你这笔试题,把架构师都考死。。。。

哦;我错了;不好意思啊;
1 楼 lonvea 2010-04-19  
你这笔试题,把架构师都考死。。。。

相关推荐

Global site tag (gtag.js) - Google Analytics