《2016年JAVA面试题大全(含答案).docx》由会员分享,可在线阅读,更多相关《2016年JAVA面试题大全(含答案).docx(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、1.J2EE是什么?它包括哪些技术?解答:从整体上讲,J2EE是使用Java技术开发企业级应用的业标准,它是Java技术不断 适应和促进企业级应用过程中的产物。适用于企业级应用的J2EE,提供个平台独立的、 可移植的、多用户的、安全的和基于标准的企业级平台,从而简化企业应用的开发、管理和 部署。J2EE是个标准,而不是个现成的产品。主要包括以下这些技术:1 ) Servlet Servlet是Java平台上的CGI技术。Servlet在服务器端运行,动态地生成Web页 面。与传统的CGI和许多其它类似CGI的技术相比,Java Servlet具有更高的效率并更容易 使用。对于Servlet,重
2、复的请求不会导致同一程序的多次转载,它是依靠线程的方式来支 持并发访问的。2)JSP JSP(Java Server Page)是种实现普通静态HTML和动态页面输出混 合编码的技术。从这一点来看,非常类似Microsoft ASP、PHP等技术。借助形式上的内容 和外观表现的分离,Web页面制作的任务可以比较方便地划分给页面设计人员和程序员, 并方便地通过JSP来合成。在运行时态,JSP将会被首先转换成Servlet,并以Servlet的形 态编译运行,因此它的效率和功能与Servlet相比没有差别,样具有很高的效率。3) EJB EJB定义了一组可重用的组件:Enterprise Bean
3、s开发人员可以利用这些组件,像搭积木一 样建立分布式应用。4)JDBCJDBC(Java Database Connectivity, Java 数据库连接)API 是个标准 SQL(Structured Query Language,结构化査询语言)数据库访问接口,它使数据库开发人员能够用标准Java API编 写数据库应用程序。JDBC API主要用来连接数据库和直接调用SQL命令执行各种SQL语 句。利用JDBC API可以执行一般的SQL语句、动态SQL语句及带!N和OUT参数的存储 过程。Java 中的 JDBC 相当于 Microsoft 平台中的 ODBC(Open Databa
4、se Connectivity)2 .测试生命周期、测试过程分为几个阶段,以及各阶段的含义?解答:软件测试生命周期一般包括6个阶段:1)计划2)分析,3)设计,4)构建,5)测 试周期,6)最后测试和实施,1)计划:产品定义阶段2) .分析:外部文档阶段3) .设计:文档架构阶段4) .构建:单元测试阶段5),测试周期:错误修正,重复系统测试阶段6)最后的测试和实施:代码冻结阶段 3.您做系统设计用何种工具?解答:Visio, rational rose, power designer 等 4.什么是 Web 容器?解答:容器就是一种服务程序,在服务器个端口就有一个提供相应服务的程序,而这个程
5、 序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的HS或PWS都是这样 的容器。5 .运行时异常与一般异常有何异同?解答:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作 中可能遇到的异常,是种常见运行错误。java编译器要求方法必须声明抛出可能发生的非 运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。6 . Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么样能知道表结构?解答:可以看与XML文件对应的域模型。7 .目前几种主流数据库软件的应用特点、适用范围各是什么?解答:国际国内的主导关系型数据库管理系统有SQL
6、Server, ORACLE, SYBASE, INFORMIX和DB2。本文从性能,可伸缩性和并行性,安全性,操作简便,使用风险,开 放性,易维护性和价格,数据库二次开发方面比较了 SQLServer, Oracle, SYBASE, DB2, INFORMIX数据库:1)性能SQLServer:老版本多用户时性能不佳,新版本的性能有了明显的改善,各项处理能力都有 了明显的提高。保持了多项TPC-C (TPC-C值被广泛用于衡量C/S环境下,由服务器和客户 端构筑的整体系统的性能,它山事物处理性能委员会(TPC, Transaction Processing Corp)制 定,TPC为非赢利
7、性国际组织。)纪录。Oracle :性能最高,保持Windows NT下的TPC-C的世界记录。SYBASE :性能较高, 支持Sun、IBM、HP、Comp叫和Veritas的集群设备的特性,实现高可用性。适应于安全性 要求极高的系统。DB2 :适用于数据仓库和在线事物处理,性能较高。客户端支持及应 用模式。!NFORMIX :性能较高,支持集群,实现高可用性。适应于安全性要求极高的系 统,尤其是银行,证券系统的应用。2)可伸缩性,并行性SQLServer :以前版本SQLServer 并行实施和共存模型并不成熟。很难处理大量的用户数和数据卷。伸缩性有限。新版本性能 有了较大的改善,在Mic
8、rosoft Advanced Servers上有突出的表现,超过了他的主要竞争对手。Oracle :平行服务器通过使组结点共享同一簇中的工作来扩展Window NT的能力,提供高 可用性和高伸缩性的簇的解决方案。如果Windows NT不能满足需要,用户可以把数据库移 到UNIX中,具有很好的伸缩性。SYBASE :新版本具有较好的并行性,速度快,对巨量 数据无明显影响,但是技术实现复杂,需要程序支持,伸缩性有限。DB2 : DB2具有很好 的并行性。DB2把数据库管理扩充到了并行的、多节点的环境。数据库分区是数据库的 部分,包含自己的数据、索引、配置文件、和事务日志。数据库分区有时被称为节
9、点或数据 库节点,伸缩性有限。1NFORMIX :采用单进程多线程的技术,具有较好的并行性。但是 仅运行于UNIX平台,伸缩性有限。3)安全性SQLServer : Microsoft Advanced Server获 得最高安全认证,服务器平台的稳定性是数据库的稳定性的基础,新版本的SQL的安全性 有了极大的提高。Oracle:获得最高认证级别的ISO标准认证。SYBASE :通过Sun公 司J2EE认证测试,获得最高认证级别的ISO标准认证。DB2 :获得最高认证级别的ISO 标准认证。INFORMIX :获得最高认证级别的ISO标准认证。4)操作简便SQLServer : 操作简单,采用
10、图形界面。管理也很方便,而目.编程接口特别友好(它的SQL-DMO让编程变 得非常方便!),从易维护性和价格上SQL Server明显占有优势。Oracle :较复杂,同时 提供GUI和命令行,在Windows NT和Unix, Linux下操作相同。对数据库管理人员要求 较高。SYBASE :复杂,使用命令行操作,对数据库管理人员要求较高。DB2 !操作简 单,同时提供GUI和命令行,在Windows NT和Unix下操作相同。INFORMIX :使用和管 理复杂,命令行操作。对数据库管理人员要求较高。5)使用风险SQLServer !完全重写 的代码,性能和兼容性有了较大的提高,与Orac
11、le, DB2的性能差距明显减小。该产品的 出台经历了长期的测试,为产品的安全和稳定进行了全面的检测,安全稳定性有了明显的提 高。Oracle :长时间的开发经验,完全向下兼容,可以安全的进行数据库的升级,在企业, 政府中得到广泛的应用。并且如果在WINNT上无法满足数据的要求,可以安全的把数据转 移到UNIX上来。SYBASE ;开发时间较长,升级较复杂,稳定性较好,数据安全有保隙。风险小。在安全 要求极高的银行,证券行业中得到了广泛的应用。DB2 :在巨型企业得到广泛的应用,向 下兼容性好。风险小。1NFORMIX :开发时间较长,升级较复杂,稳定性较好,数据安全 有保障。风险小。在安全要
12、求极高的银行,证券行业中得到了广泛的应用。6)开放性SQL Server :只能在 Windows上运行,C/S结构,只支持 Windows客户,可以用 ADO,DAO,OLEDB,ODBC连接。Windows9X系列产品是偏重于桌面应用,NT server适合各 种大中小型企业。操作系统的稳定对数据库是十分重要的。Windows平台的可靠性,安全 性经过了最高级别的C2认证的。在处理大数据量的关键业务时提供了较好的性能。 Oracle :能在所有主流平台上运行(包括Windows)完全支持所有的工业标准。采用完全 开放策略。多层次网络计算,支持多种业标准,可以用ODBC,JDBC,OCI等网
13、络客户连接。 可以使客户选择最适合的解决方案。对开发商全力支持。SYBASE :能在所有主流平台上 运行,在银行业中得到了广泛的应用。DB2 !有较好的开放性,最适于海量数据。跨平台, 多层结构,支持ODBC,JDBC等客户。在大型的国际企业中得到最为广泛的应用,在全球的 500家最大的企业中,大部分采用DB2数据库服务器。INFORMIX !仅运行在UNIX平台, 包括SUNOS、HPUX、ALFAOSF/1 在银行中得到广泛的应用。7)易维护性和价格SQL Server :从易维护性和价格上SQL Server明显占有优势。基于Microsoft的贯风格,SQL Server的图形管理界面
14、带来了明显的易用性,微软的数据库管理员培训进行的比较充分, 可以轻松的找到很好的数据库管理员,数据库管理费用比较低,SQL Server的价格也是很低 的,但是在License的购买上会抬高价格。总体来说SQLServer的价格在商用数据库中是最 低的。Oracle :从易维护性和价格上来说Oracle的价格是比较高的,管理比较复杂,由于 Oracle的应用很广泛,经验丰富的Oracle数据库管理员可以比较容易的找到,从而实现Oracle 的良好管理。因此Oracle的性能价格比在商用数据库中是最好的。SYBASE :SYBASE的 价格是比较低的,但是SYBASE的在企业和政府中的应用较少,
15、很难找到经验丰富的管理员,运行管理费用较高。DB2:价格高,管理员少,在中国的应用较少,运行管理费用都很高,适用于大型企业的数 据仓库应用。INFORMIX :价格在这些系统中居于中间,与SYBASE样,在企业和政府 中应用较少,仅在银行中得到了广泛的应用。经验丰富的管理人员较少,运行管理费用高。8)数据库二次开发SQL Server:数据库的二次开发工具很多,包括Visual C+, Visual Basic等开发工具,可以实现很 好的Windows应用,开发容易。Oracle:数据库的二次开发工具很多,涵盖了数据库开发的 各个阶段,开发容易。SYBASE:开发工具较少,经验丰富的人员很少。
16、DB2:在国外巨型 企业得到广泛的应用,中国的经验丰富的人员很少。INFORMIX :在银行业中得到广泛的应 用,但是在中国的经验丰富的人员很少。8 .存储过程和函数的区别解答:从参数的返回情况来看:如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可以使用函数。从调用情况来看:如果在SQL语句(DML或SELECT)中调用的话定是存储函数或存储的封装函数不可以 是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,如果是在过 程化语句中调用的话,就要看你要实现什么样的功能。函数般情况下是用来计算并返回一 个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入
17、数据库表或执行某 些DDL语句等等),所以虽然他们的语法匕艮相似但用户在使用他们的时候所需要完成的 功能大部分情况下是不同的。9 .试述数据库完整保护的主要任务和措施。解答:数据库的完整性保护也就是数据库中数据正确性的维护。数据库完整性包括三个内容: 实体整性规则,参照物完整性规则以及用户定义完整件规则。前两个是有DBMS自动处 理。实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是数据库完整性的基本要 求,主关键字和元组的唯一性对应。参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联基 表中必存在元组。用户定义完整性规则针对具体的数据环境由用户具体设置的
18、规则,它反应了具体应用中的语 义要求。个完整性规则一般由下面三部分组成:完整性约束条件设置,完整性约束条件的检 查以及完整性约束条件的处理.后两部分在数据库中一般有相应的模块处理。另外触发器也 可以做完整性的保护,但触发器大量用于主动性领域。10 .请说明 SQLServer I1 delete from tablea & truncate table tablea 的区别解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK, 使 HWK 值为 ,不需要 rollback segment .jlij Delete 是 DML 操作需要 rollback
19、segment 且花 费较长时间.11 . Oracle安装完成后,如何用命令行启动和关闭数据库?解答:扌开:STARTUP FORCE RESTRICT PFILE= filename OPEN RECOVER database I MOUNT I NOMOUNT STARTUP OPEN: STARTUP 缺省的参数就是 OPEN,打开数据库, 允许数据库的访问。当前实例的控制文件中所描述的所有文件都已经打开。STARTUP MOUNT: MOUNT数据库,仅仅给DBA进行管理操作,不允许数据库的用户访问。仅仅 只是当前实例的控制文件被打开,数据文件未打开。STARTUP NOMOUNT:
20、仅仅通过初 始化文件,分配出SGA区,启动数据库后台进程,没有打开控制文件和数据文件。不能访 问任何数据库。STARTUP PFILE= filename:以filename为初始化文件启动数据库,不是采 用缺省初始化文件。STARTUP FORCE:中止当前数据库的运行,并开始重新正常的启动 数据库。STARTUP RESTRICT:只允许具有RESTRICTED SESSION权限的用户访问数据 库。STARTUP RECOVER:数据库启动,并开始介质恢复关闭SHUTDOWN 有四个参数:NORMAL. TRANSACTIONAL, IMMEDIATE, ABORT 缺省 不带任何参数时
21、表示是NORMALo命令SHUTDOWN NORMAL:不允许新的连接、等待会话结束、等待事务结束、做个检 查点并关闭数据文件。启动时不需要实例恢复。SHUTDOWN TRANSACTIONAL:不允许 新的连接、不等待会话结束、等待事务结束、做个检查点并关闭数据文件。启动时不需要 实例恢复。SHUTDOWN IMMEDIATE:不允许新的连接、不等待会话结束、不等待事务 结束、做个检査点并关闭数据文件。没有结束的事务是自动rollback的。启动时不需要实 例恢复。SHUTDOWN ABORT:不允许新的连接、不等待会话结束、不等待事务结束、不 做检查点且没有关闭数据文件。启动时自动进行实例
22、恢复。另外,对于NORMAL, TRANSACTIONAL, IMMEDIATE, DB Buffer Cache的内容写入了数据文件,没有提交的 事务被回滚,所有的资源被释放,数据库被“干净”的关闭。对于ABORT, DB Buffer Cache 的内容没有写入数据文件,没有提交的事务也没有回滚。数据库没有dismount和关闭,数 据文件也没有关闭。当数据库启动时,需要通过redo log恢复数据,通过回滚段对事务回滚,对资源进行释放。12 .类有哪三个基本特性?各特性的优点?解答:类具有封装性、继承性和多态性。封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是
23、隐藏 类中的私有变量和类中方法的实现细节。继承性:类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自 动拥有被继承类(父类)的全部可继承的成员。多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。13 .谈谈対XML的理解?说明Web应用中Web.xm!文件的作用?解答:XML (Extensible Markup Language)即可扩展标记语言,它与HTML - -样,都是 SGML(Standard Generalized Markup Language,标准通用标记语言)。Xm! 是 Internet 环境中跨 平台的,依赖
24、于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML 是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方 式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌 握和使用。web.xml的作用是配置欢迎页,servlet, filter, listener等的。14 .jsp有哪些内置对象?作用分别是什么?(至少三个)解答:1) request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个 用于获取 cookie, header 和 session 数据的有用的方法。2) res
25、ponse 表布 HttpServlelResponse 对象,并提供了几个用于设置送回浏览器的响应的方法(如cookies,头信息等)。3) out 对象是javax.jspJspWriter的个实例,并提供了几个方法使你能用于向浏览器冋送输出结 果。4) pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范 围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。5) session表示一个请求的javax.servlet.http.HttpSession对象。Session可以存贮用户的
26、状态信息。 6) application 表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和 servlet环境的信息。7) config表示一个javax.servlet.ServletConfig对象。该对象用于存取 servlet实例的初始化参数。8) page表示从该页面产生的个servlet实例。9) exception针对错误网页,未捕捉的例外15.事务是什么?有哪些属性,并简要说明这些属性的含义。解答:事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 事务通常由高级数据库
27、操纵语言或编程语言(如SQL, C+或Java)书写的用户程序的执行 所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事 务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个属性通常称为ACID特 性。原子性(atomicity) 个事务是个不可分割的工作单位,事务中包括的诸操作要么都做, 要么都不做。一致性(consistency)。事务必须是使数据库从个一致性状态变到另个一致性状态。 致性与原子性是密切相关
28、的。隔离性(isolation) 个事务的执行不能被其他事务干扰。即个事务内部的操作及使用的 数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。持久性(durability)持续性也称永久性(permanence),指个事务一旦提交,它对数据库 中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。16、Collection 和 Collections 的区别?解答:Collection是java.util下的接口,它是各种集合的父接口,继承于它的接口主要有Set 和List; Collections是个java.util下的类,是针对集合的帮助类,提供系列
29、静态方法实现 对各种集合的搜索、排序、线程安全化等操作。17、HashMap 与 TreeMap 的区别?解答:HashMap通过hashcode对其内容进行快速查找,而TreeMap中所有的元素都保持着 某种固定的顺序,如果你需要得到个有序的结果你就应该使用TreeMap (HashMap中元素 的排列顺序是不固定的)。18、ArrayList 和 Vector 的区别?解答:同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程不安全的,不 是同步的;数据增长:当需要增长时,Vector默认增长为原来培,而ArrayList却是原来的 半。19、HashMap 和
30、Hashtable 的区别?解答:HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都实现了 Map接口, 主要区别 在于HashMap允许空(null)键值(key),由于非线程安全,效率上高于Hashtable HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 Hashtable 不允许。HashMap 把 Hashtable 的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起 误解。Hashtable 继承自 Dictionary 类,而 HashMap
31、是 Java 1.2 引进的 Map interface 的个实 现。最大的不同是,Hastable的方法是synchronize的,而HashMap不是,在多个线程访问 Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供同步。20 .请说出ArrayList,Vector, LinkedList的存储性能和特性解答:ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据 以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素耍涉及数组元素移动 等内存操作,所以索引数据快而插入数据慢,Vector由于使用了 synchr
32、onized方法(线程安 全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需 要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。21 .描述J2EE框架的多层结构,并简要说明各层的作用。解答:1) Presentation layer (表示层)a.表示逻辑(生成界面代码)b.接收请求c.处理业务层抛出的异常d,负责规则验证(数据格式,数据非空等)e.流程控制2) Service layer (服务层/业务层)a.封装业务逻辑处理,并且对外暴露接口b.负责事务,安全等服务3) Persistence layer
33、(持久层)a封装数据访问的逻辑,暴露接口b.提供方便的数据访问的方案(查询语言,API,映射机制等)4) Domain layer (域层) a.业务对象以及业务关系的表示b,处理简单的业务逻辑C.域层的对象可以穿越表示层,业务层,持久层软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。22 .请谈谈对SOA的认识。解答:面向服务的体系结构(Service-OrientedArchitecture, SOA)是个组件模型,它将应 用程序的不同功能単元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接 口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台
34、、操作系统和编程语言。 这使得构建在各种这样的系统中的服务可以一种统和通用的方式进行交互。23 .简要描述如何结合struts, hibernate, spring开发Web应用?解答:Struts可以将jsp页面的表单关联起来,就是把JSP页面的表单数据封装成javaBean, 这样的话,在action中你再也不需要使用传统的request.getParameter( name);还有struts有 个控制器,你在struts编程中的控制器(XxxAction)都是继承总的ActionServlet,它能集中处 理请求,然后转到相关的页面。还有struts的表单验证组件,不用你写js验证了,
35、只需要你配置 下文件就可以了。另外struts的令牌机制可以防表单重复提交。Spring是个轻量级容器,非侵入性.包含依赖注入,AOP等。它是为了解决企业应用程序开 发复杂性而创建的。框架的主要优势之就是其分层架构,分层架构允许您选择使用哪个 组件,同时为J2EE应用程序开发提供集成的框架。Hibernate:它可以让我们以的方式操作数据库,这让我们看到了 hibernate的强大之处, 体验到操作数据的方便。但hibernate最耀眼之处是hibernate的缓存机制,而不是以00的 方式操作数据库。Hibernate的缓存机制不外乎是级缓存session,二级缓存sessionFactor
36、y, 和第三方缓存如ehcache。也就是hibernate的最强大的地方是它的缓存,理解了这个才能真 正的理解hibemate,Hibernate的命名查洵/命名参数查询,就是将hql语句放在一个单独的xml 文件之中,它仍然让人们以面向对象的方式去操纵数据,而不用在以的方式写着代码的 同时,然后再转变思维,用面向关系的方式去写那些sql语句。但hibernate不仅做了这些, 它的native sql查询方式,完全满足sql语句的偏爱者,它像ibatis样,将sql语句放在配 置文件之中。24 .说明反转控制(IOC)和面向方向编程(AOP)在spring中的应用解答:Spring核心容器
37、(Core)提供Spring框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory使用控制反转(loc)模式将应用程序的配 置和依赖性规范与实际的应用代码程序分开。Spring的声明式事务基于AOP实现,却并不 需要程序开发者成为AOP专家,亦可轻易使用Spring的声明式事务管理。25 .请看如卜片段:解释lazy、inverse、cascade以及all-delete-orphan属性的含义;并给出示例代码,说明在如 下组合情况下,对于save、update delete 对多关系中的一方对象操作时的区别:inversecascadetru
38、eall-delete-orphanfalseall-delete-orphantrueallfalsealltruenone falsenone解答:(一)lazy:延迟加载Lazy的有效期:只有在session打开的时候才有效;session关闭后lazy就没效了。lazy策略可以用在:a. 标签上:可以取值true/falseb.标签上,可以取值true/false,这个特性需要类增强c./等集合上,可以取值为 true/false/extrad./等标签上,可以取值 false/proxy/no-proxy1) get和load的区别:a.get不支持延迟加载,而!oad支持。b.当査
39、询特定的数据库中不存在的数据时,get会返回null,而load则抛出异常。2)类(Class)的延迟加载:a.设置标签中的lazy= true”,或是保持默认(即不配置lazy属性)b.如果lazy的属性值为true,那么在使用load方法加载数据时,只有确实用到数据的时候 会发出sql语句;这样有可能减少系统的开销。3)集合(collection)的延迟加载:可以取值true, false, extraa.true:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,发出查询语句, 加载其集合元素的数据b.false:取消懒加载特性,即在加载对象的同时,就发出第二条査询语句加载其关
40、联集合的数 据c.extra:种比较聪明的懒加载策略,即调用集合的size/contains等方法的时候,hibernate并 不会去加载整个集合的数据,而是发出一条聪明的SQL语句,以便获得需要的值,只有在 真正需要用到这些集合元素对象数据的时候,去发出查询语句加载所有对象的数据4) Hibernate单端关联懒加载策略:即在voneto-one/vmany-to-one标签上可以配置懒加载策略。可以取值为:false/proxy/no-proxya.false:取消懒加载策略,即在加载对象的同时,发出查询语句,加载其关联对象b.proxy:这是hibernate对单端关联的默认懒加载策略,
41、即只有在调用到其关联对象的方法的 时候真正发出查询语句查询其对象数据,其关联对象是代理类c.no-proxy:这种懒加载特性需要对类进行增强,使用no-proxy,其关联对象不是代理类注意:在class标签上配置的lazy属性不会影响到关联对象!!( inverseinverse是指的关联关系的控制方向,inverse二false的side (side其实是指inverse=false所位 于的class元素)端有责任维护关系,而inverse=true端无须维护这些关系(二)cascadecascade指的是层级之间的连锁操作。在定义关联对象的映射时,使用cascade all, casca
42、de= save-update ,cascade= all-delete-orphan 或 cascade= delete a.如果父对象被保存,所有的子对象会被传递到saveOrUpdate。方法去执行(cascade二 save-update )b.如果父对象被传递到update。或者saveOrUpdate。,所有的子对象会被传递到saveOrUpdate。 方法去执行(cascade=save-update)c.如果一个临时的子对象被一个持久化的父对象引用了,它会被传递到saveOrUpdate。去执 行(cascade二save-update)d.如果父对象被删除了,所有的子对象对被
43、传递到delete。方法执行(cascade= delete)e.如果临时的子对象不再被持久化的父对象引用,什么都不会发生(必要时,程序应该明确 的删除这个子对象),除非声明了 cascade二all-delete-orphan”,在这种情况下,成为“孤儿” 的子对象会被删除。(四)save、update delete对多关系中的一方对象操作时的区别 1)当一方设置inverse二true时,所有由一方发出的操作都不会关联到多方。2)当,一方设置inverse=false, cascade=all-delete-orphan时,将删除不再和方対象关联的所有 多方对象。3)当一方设置invers
44、e=false,cascade=all时,当保存和删除一方对象时,级联保存和删除所有 关联的多方对象。4)当一方设置inverse=false, cascade=none时,当对一方操作时,不级联到关联的多方对象。26.简单说明什么是递归?什么情况会使用?并使用java实现个简单的递归程序。解答:1)递归做为种算法在程序设计语言中广泛应用.是指函数/过程/子程序在运行过程中直接 或间接调用自身而产生的車入现象。2)递归算法一般用于解决三类问题:a.数据的定义是按递归定义的。(Fibonacci (斐波那契)函数)b.问题解法按递归算法实现。(回溯)c.数据的结构形式是按递归定义的。(树的遍历,
45、图的搜索)3).这是个排列的例子,它所做的工作是将输入的一个字符串中的所有元素进行排序并输 出,例如:你给出的参数是“ abc”则程序会输出:abcacbbacbcacabcbaa.算法的出口在 于:1 ow=h i g h也就是现在给出的排列元素只有一个时。b.算法的逼近过程:先确 定排列的第一位元素,也就是循环中i所代表的元素,然后1。w + 1开始减少排列元素, 如此下去,直至 1 w = h i g h public class Foo public static void main(String args) permute( abc);)public static void perm
46、ute(String str) char strArray = str.toCharArrayO;permute(strArray, 0, strArray.length - 1); public static void permute(char list, int low, int high) int i;if (low = high) String cout =;for (i = 0; i = high; i+)cout += listfi;System.out.println(cout); else for (i = low; i = high; i+) char temp = list
47、flow;listflow = listfi;listfi = temp;permute(list, low + 1, high);temp = listflow;listflow = listfi;listfi = temp;2冽出自己常用的jdk包解答:JDK常用的package java.lang:这个是系统的基础类,比如String等都是这里面的,这个package是唯个可 以不用import就可以使用的Packagejava.io;这里面是所有输入输出有关的类,比如文件操作等:这里面是与网络有关的类,比如URL,URLConnection等。java.util:这个是系统辅助类,特别是集合类Collection,List,Map等。java.sql:这个是数据库操作的类,Connection, Statememt, ResultSet 等28 .列出自己常用的jd