2016java面试题含答案

1.j2ee 是什么?它包含哪些技术?
从整体来讲,J2EE 是使用 java 开发技术开发企业级应用的工业标准,它是 java 技术不 断适应和醋精企业级应用过程的产物。适用于企业级应用的 j2ee,提供一个平台独立的、可 移植的、多用户的、安全的和基于标注呢企业级平台,从而简化企 0 业应用的开发、管理和 部署。J2EE 是一个标准,而不是一个现成的产品。 主要包括以下这些技术: (1)Servlet servlet 是 java 平台上的 CGI 技术。Servlet 在服务器端运行,动态的生成 web 页面。 与传统的 CGI 和其他类似 CGI 的技术相比, Java Servlet 具有更高的效率并更容易使用。 对于 Servlet,从夫的请求不会导致同一程序的多次转载,它是依靠线程的方式来支持并访 问的。 (2)JSP Jsp(java server page)是一种是实现普通静态 HTML 和动态页面输出混合编码的技 术。从这一点看,非常类似 Microsoft ASP、PHP 等技术。借助形式上的内容和外观表现的分 离,web 页面制作的任务可以比较方便的话费给页面设计人员和程序员,并方便的通过 JSP 来合成。在运行时态,JSP 将会被首先转换成 Servlet,并以 Servlet 的形态编译运行,因此它 的效率和功能与 Servlet 相比没有差别,一样具有很高的效率。 (3)EJB EJB 定义了一组可充用的组件:Enterprise Beans。开发人员可以利用这些组件, 像搭积木一样建立分布式应用。 (4)JDBC JDBC(Java DataBase Connectivity,java 数据库连接)API 是一个标准 SQL(Structured Query Language,结构化查询语句)数据库访问接口,它使数据库开发人员能够使用标准 Java API 编写数据库应用程序。 JDBC API 主要用来连接数据库和调用 SQL 命令执行各种 SQL 语句。 利用 JDBC API 可以执行一般的 SQL 语句、 动态 SQL 语句及带 IN 和 OUT 参数的存储过程。 JAVA 中的 JDBC 相当于 Microsoft 平台中的 ODBC(open Database Connectivity)。

2.测试生命周期、测试过程分为几个阶段、以及 各阶段的含义?
软件测试生命周期一般包括 6 个阶段: (1)技术:产品定义阶段 (2)分析:外部文档阶段 (3)设计:文档架构阶段 (4)构建:单元测试阶段 (5)测试周期:错误修正,重复系统测试阶段

(6)最后测试和实施:代码冻结阶段

3.您做系统设计用各种工具?
Visio,Rational rose,power designer 的

4.什么是 web 容器?
容器就是一种服务程序, 在服务器一个端口就有一个提供相应服务的程度, 而这个程序 就是处理从客户端发出的请求,如 java 中的 Tomat 容器,ASP 的 IIS 火舌 PWS 都是这样的容 器。

5.运行是异常与一般异常有何异同?
异常表示程序运行高城中可能会出现的非正常状态, 运行时异常表示虚拟机的同城操作 中可能遇到的异常,是一种常见运行异常。Java 编译器要求方法必须声明抛出可能发生的非 运行异常,但是并不要求必须声明抛出未被捕获的运行时异常。

6.Hibernate 中:不看数据库,不看 XML 文件, 不看查询语句,怎么能知道表结构?
可以看与 xml 文件对应的域模型。

7.目前集中主流数据库软件的应用特点,使用范 围各是什么?
国际国内的主导关系型数据库管理系统由 SQL Server、 ORACLE、 SYBASE、 InFormix 和 DB2。 本问题从性能、可伸缩性和并行性、安全性、操作简便、使用风险、开放性、易维护性和价 格、数据库二次开发方面比较了 SQL Server、ORACLE、SYBASE\DB2\INformix 数据库。 (1)性能 SQLServer:老版本多用户时性能不佳,新版本的性能有了明显的改善,各项处理能力 都有了明显的提高。保持了多项 TPC-C(TPC-C 值被广泛用于衡量 C/S 环境下,由服务器和客 户端构筑的整体系统的性能,它由事务处理性能委员会 (TPC,Transaction Processing Corp)制 定,TPC 为非盈利性国际组织)记录。 Oracle:性能最高,保持 Windows NT 下的 TPC-C 的世界纪录。 SYSBASE:性能较高,支持 Sun,IBM,HP,Compaq 和 veritas 的集群设备特性,实现高可用 性。适应与安全性要求极高的系统。 DB2:适用于数据仓库和在线事务处理,性能较高。客户端支持及应用模式。 Informix:性能较高,支持集群,实现高可用性。适用于安全性要求极高的系统,尤其

是银行,证券系统的应用。 (2)可伸缩性,并行性 SQLServer:以前版本 SQLServer 并行实施和共存模型并不成熟。很难处理大量的用户数 和数据卷。伸缩性有限。新版本性能有了较大的改善,在 Microsoft Advanced Server 上由突 出表现,查过了它的主要竞争对象。 ORACLE:平行服务器通过使一组结点贡献同一簇中的工作来扩展 Window nt 的能力, 提供高可用性和高伸缩性的簇的解决方案。如果 Window NT 不能满足需要,用户可以吧数 据库一道 linux 中,具有很好的伸缩性。 SYBASE:新版本具有较好的并行性,速度快,对巨量数据无明显影响,但是技术实现复 杂,需要程序指导,伸缩性有限。 DB2:DB2 具有很好的并行性。DB2 把数据库管理扩充到了并行的、多节点的环境。数 据库分区是数据库的一部分,包含自己的数据、索引、配置文件和事务日志。数据库分区又 是被称之为节点或是数据库节点,伸缩性有限。 InFormix:采用单进程多线程的技术,具有较好的并行性。但是仅运行于 unix 平台,伸 缩性优先。 (3)安全性 SQL Server:Microsoft Advanced Server 获得最高安全认证,服务器平台的稳定性是数据 库的稳定性的基础,新版本的 SQL 的安全性有了极大的提高。 ORACLE:获得最高认证级别的 ISO 标准认证。 SYBASE:通过 sun 公司 J2EE 认证测试,获得最高认证级别的 ISO 的标准认证。 DB2:获得最高认证级别的 ISO 标准认证。 inFormin:获得最高认证级别的 ISO 标准认证。 (4)操作简便 SQLServer:操作简单,采用图形界面。管理也很方便,而且编程接口特别友好 (它的 SQL-DMO 让变成变得更方便),从易维护和价格上 SQL Server 明显占有优势。 Oracle:较复杂,同时提供 GUI 和命令行,在 windowNT 和 Unix,linux 下操作仙童。对 数据库管理人员要求较高。 SYBASE:复杂,使用命令行操作,对数据库管理人员要求较高。 DB2:操作简单,同时提供 GUI 和命令行,在 window NT 和 unix 下操作相同。 Informix:使用和管理复杂,命令行操作,对数据库管理人员要求较高, (5)使用风险 SQLServer:完全重写的代码,性能和兼容性有了较大的提高,与 Oracle,DB2 的性能差 距明显减小。该产品的出台经历了长期的测试,为产品的安全和稳定进行了全面的测试,安 全稳定性有了明显的提高。 ORACEL:长时间的开发经验,完全向下兼容,可以安全的进行数据库的升级,在企业, 政府中的到广泛的应用。并且如果在 Window NT 上无法妈祖数据的妖气,可以安全的把数 据转到 unix 上来。 SYBASE:开发时间长,升级较复杂,稳定性较好,数据安全有保障。风险小。在安全要 求极高的银行,证券行业得到了广发的应用。 DB2:在巨型企业得到广泛的应用,向下兼容性好,风险小。 Informix:开放时间较长,升级较复杂,稳定性较好,数据安全有保障。风险小,在安 全要求极高的银行,证券行业得到广泛应用。 (6)开放性 SQL Server :只能 在 Window 上运行, C/S 结果,只 支持 window 客户,可 以用

ADO,DAO,OLEDB,ODBC 连接。Windows9X 系列产品是偏重于桌面应用,NTserver 使用各种大 小大小型企业。操作系统的稳定对数据库是十分重要的。Window 平台的可靠性,安全性警 告了最高级别的 C2 认证的。在处理大数据量的关键业务时提供了较好的性能。 ORACLE:能在所有主流平台上运行。完全支持所有的工业标准。蚕蛹完全开放策略。 多层次万罗计算,支持多种工业标准,可以用 ODBC,JDBC,OCI 等网络客户连接。可以使客 户选择最适合的解决方案。对开发商全力支持。 SYBASE:能在所有主流平台上运行,在银行中得到广泛的应用。 DB2:有较好的开放性,最适合海量数据。跨平台,多层结构,支持 ODBC、JDBC 等客 户。在大型的国际企业中得到最为广泛的应用,在全球的 500 家最大的企业中,大部分采用 DB2 数据库服务器。 Informix:仅运行在 unix 平台,包括 SUBOS、HPUX、ALFAOSF/1。在银行中得到广泛应 用。 (7)易维护性和价格 SQL Server:从易维护性和价格上 SQL Server 明显占优势,基于 Microsoft 的一贯风格, SQL Server 的的图形管理界面带来了明显的易用性,微软的数据库管理员培训进行的比较充 分,可以轻松的找到很好的数据库管理员,数据库管理价格也是很低的,SQL Server 的价格 也是很低的,但是在 license 的购买商会抬高价格。总体来说 SQL Server 的价格在商用数据 库中是最低的。 Oracle: 从易维护性和价格上来说 Oracle 的价格是比较高的, 管理比较复杂, 由于 Oracle 的应用广泛,经验丰富得问 Oracle 数据库管理员可以比较容易的找到,从而实现 Oracle 的 良好管理。因此 oracle 的性能价格比在商用数据库中是最好的。 Sybase:sybase 的价格是比较低,但是 sybase 在企业和政府中的应用是较少的,很难找 到经验丰富的管理员,运行管理费用较高。 DB2:价格高,管理员少,在中国的应用少,运行管理费用高,适用于大兴企业的数据 仓库应用。 Informix:价格在这些系统中居于中间,与 sybase 一样,在企业与政府中应用较少,仅 在银行在得到了广范应用。经验丰富的管理人员较少,运行费用高。 (8)数据库的二次开发

SQLServer: 数据库的二次开发工具很多, 包括 Visual C++,Visual Basic 等开发工具, 可以实现很好的 Windows 应用,开发容易。
Oracle:数据库的二次开发工具很多,涵盖了数据库开发的各个阶段,中国的经验丰富 的人员很少,。 Informin:在银行项目中广泛的应用,但是在中国的经验丰富的人很少。

8.存储过程和函数的区别
从参数的返回其情况来看: 如果返回多个参数值最好使用存储过程,如果只有一个返回参数值的话可以使用函数。 从调用情况来看: 如果在 SQL 语句(DML 或者 select)中调用的话一定是存储函数或者是存储的分装函数 不可以是存储过程, 但是调用存储函数的时候还有很多限制以及函数的纯度等级问题, 如果 实在过程化语句中调用的虎牙, 就要看你是实现什么样的功能。 函数一般情况先是用来计算 并返回一个计算结果而存储过程一般是一用来完成特定的数据操作 (比如修改、 插入数据库 表或执行某些 dml 语句),所有虽然他们的语法上很相似但用户在使用他们的时候所需要

完成的功能大部分情况下是不同的。

9.试述数据库完整保护的主要任务和措施
数据库的完整性保护也就是数据库中正确性的维护。 数据库的完整性包括三个内容: 实体完 整性规则、参照物完整性规则和用户定义完整性规则。前两个使用 DBMS 自动处理。 实体完整性规则:是说针对基表中的关键字属性不能为空值,是数据库完整性的基本要求, 主关键字和元组的唯一性对应。 参照物完整性规则:是不允许引用不存在的元组:即基表中的外关键字要么为空,要么关联 基表中必然存在元组。 用户定义完整性规则: 针对具体的数据环境由用户具体设置的规则, 它反映了具体应用中的 语义要求。一个完整性规则一般有下面三个部分组成:完整性约束条件设置,完整性约束条 件的检验以及完整性约束条件的处理。 后两部分在数据库中一般由相应的模块处理。 另外触 发器也可以做完整性的保护,但触发器大量用于主动性领域。

10.请说明 SQLServer 中的 delete from tablea & truncate table tablea 的区别。
两者都可以用来删除表中的所有记录。区别在于:truncate 是 DDL 操作,它移动 HWK, 是 HWK 值为 0,不需要 rollback segment ,而 Delete 是 DML 操作需要 rollback segment 且 话费较长时间。

11.Oracle 安装完成后,如何使用命令行启动和 关闭数据库?
打 开 : STARTUP [RESTRICT] [PFILE=filename] [OPEN [RECOVER][database] ]| MOUNT |NOMOUNT STARTUP OPEN:STARTUP :缺省的参数是 OPEN,打开数据库,允许数据库的访问。当 前实力的控制文件中描述的所有文件都已打开。 STARTUP MOUNT:MOUNT 数据库,仅仅给 DBA 进行管理操作,不允许数据库用户的访 问。仅仅只是当前实例的控制文件打开,数据文件未打开。 STARTU NOMOUNT :仅仅通过初始化文件,分配出 SGA 区,启动数据库后台进程,没 有打开控制文件和数据文件。不能访问任何数据库。 STARTUP PFILE=filename :以 filename 为初始化文件启动数据库。不是采用缺省初始化 文件。 STARTUP FORCE:中止当前数据库的运行,并开始重新正常的启动数据库。 STARTUP RESTRICT:只允许具有 RESTRICTED SESSION 权限的用户访问数据库。 STARTUP RECOVER:数据库启动,并开始介质恢复。 关闭:shutdown 有四个参数:NOMAL、TRANSACTIONAL、IMMEDIATE、ABORT。缺省不 带任何参数时表示 NORMAL。

SHUTDOWN NORMA:不允许新的连接、等待会话结束、等待事务结束、做一个检查点 并关闭数据文件。启动时不需要实例恢复。 SHUTDOWN TRANSACTIONAL:不允许新的连接、不等待会话结束、等待事务结束做一 个检查点并关闭数据文件。启动时不需要实例恢复。 SHUTDOWN IMMEDIATE:不允许新的连接,不等待会话结束、不等待事务结束、做一个 检查点并关闭数据文件。没有结束的事务是自动 rollback 的。启动时不需要实例恢复。 SHUTDOWN ABORT:不允许新的连接、不等待会话结束、不等待事务结束、不做检查点 并且没有关闭数据文件。启动时自动进行实例恢复。 另外,对于 NORMAL、TRANSACTIONAL、IMMEDIATE,DE Buffer Cache 的内容写入了数 据文件, 没有提交的事务被回滚, 所有的资源被释放, 数据库被干净的关闭。 对于 ABORT,DB Buffer Cache 的内容没有被写入数据文件, 没有提交的事务也没有回滚。 数据库没有 dismount 和关闭,数据文件也没有关闭。当数据库启东市,需要通过 redo log 恢复数据,通过回滚段 对事物回滚,对资源进行释放。

12.类有哪三种基本特性?各特性的优点?
类具有封装性、继承性、和多态性。 封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是 隐藏类中的私有变量和类中的方法的实现细节。 继承性:类的继承性提供从已存在的类的创建新类的机制,继承(inheritance)使一个 新类自动拥有被继承类(父类)的全部可继承的成员。 多态性: 类的多态性提供类中方法执行的多样性, 多态性有两种表现形式: 重载和覆盖。

13.谈 谈对 XML 的 理 解 ?说 明 web 应 用中 web.xml 文件的作用?
XML(Extensible Markup Language) 即 可 扩 展 标 记 语 言 , 它 与 HTML 一 样 , 都 是 SGML(Standard Generalized Markup Language 标砖通用标记语言)。XML 是 Internrt 环境中跨 平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。拓展标记语言 XML 是一种简单的实际存储语言, 使用一系列简单的标记描述数据, 而这些标记可以用方便的方 式建立,虽然 XML 占用的空间比二进制数据要占用更多的空间,但 XML 极其简单易于掌握 和使用。 Web.xml 的作用是配置欢迎页,servlet 、filter、listenter 等的。

14.Jsp 有哪些内置对象?作用分别是什么?
1).request 表示 HttpServlet Request 对象。它包含了有关浏览器请求的信息,并且提供 了几个获取 cookie,header 和 session 数据的有用的方法。

2).response 表示 HttpServletResponse 对象,并且提供了几个用于设置送回浏览器的响
应的方法(如 cookies,header 信息等)

3).out 对象是 javax.jsp.JspWriter 的一个实例, 并提供了几个方法能用于向浏览器回送输 出结果 4).pageContext 表示一个 javax.servlet.jsp.PageContext 对象。 它是用于方便存取各种范围
的名字空间、servlet 相关的对象 API,并且包装了用用的 servlet 相关功能的方法。

5).session 表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的
状态信息。

6).application 表示一个 javax.servlet.ServletContext 对象, 这有助于查找有关 servlet 引擎
和 servlet 环境信息。

7).config 表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始
化参数

8).page 表示从该页面产生的一个 servlet 实例 9).exceptiom 针对错误页面,未捕捉的例外

15.事务是什么?有哪些属性,并且简要说明这 些属性的含义。
事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。 事务通常是由高级数据库操纵语言 (如 SQL,C++或 java) 书写的用户程序的执行所引起, 并用刑辱 begin transaction 和 end transaction 语句(或者函数调用)来界定。事务由事务开 始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。 事务具有 4 个属性:原子性、一致性、隔离性、持续性。这 4 个属性通常称之为 ACID 特性。 原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的著操作要么都 做,要么都不做。 一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。 一致性与原子性是密切相关的。 隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使 用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。 持久性(durability):持久性也称之为永久性(permanence),指一个事务一旦提交,它对 数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。

16.Collection 和 Collections 的区别?
Collection 是 java.Util 下的接口,它是各种集合的父接口,继承于它的接口主要有 Set 和 List; Collections 是 java.util 下的类,是针对集合的帮助类,提供一系列静态方法实现对各种 集合的搜索、排序、线程安全化等操作。

17.HashMap 和 TreeMap 的区别?
HashMap 通过 hashcode 对其内容进行快速查找。而 TreeMap 中所有的元素都保持着某 种固定的顺序,如果你需要得到一个有序的结果你就应该使用 TreeMap(HashMap 中元素的 排列顺序是不固定的)。

18.ArrayList 和 Vector 的区别?
同步性:Vector 是线程安全的,也就是说同步的,而 ArrayList 是线程不安全的,不是同 步的; 数据增长:当需要增长时,vector 默认增长为原来一倍,而 ArrayList 却是原来的一半。

19.HashMap 和 HashTable 的区别?
HashMap 是 HashTable 的轻量级实现(非线程安全的实现),它们都实现了 Map 接口 区别: 1)在于 HashMap 允许空 (null) 键值 (key) , 由于非线程安全, 效率上高于 HashTable。 HashMap 允许将 null 作为一个 entry 的 key 或者 value,而 HashTable 不允许。 2)HashMap 把 HashTable 的 contains 方法去掉了, 改成了 containsvalue 和 containKey。 因为 contains 方法容易让人引起误解。 3)HashTable 继承自 Dictionary 类, 而 HashMap 是 Java1.2 引进的 Map interface 的一 个实现。 4)最大的不同之处在于:HashTable 的方法是 synchronize 的,而 HashMap 不是,在 多线程访问 HashTable 时, 不需要自己为它的方法实现同步, 而 HashMap 就必须为之提 供同步。

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

21.描述 J2EE 框架的多层结构,并简要说明各 层的作用。
1)Presenttation layer(表示层)

A.表示逻辑(生成界面代码) B.接受请求 C.处理业务层抛出的异常 D.负责规则验证(数据格式,数据非空等) E.流程控制 2)Service layer(服务层、业务层) A.封装业务逻辑处理,并且对外暴露接口 B.负责事务、安全等服务 3)Pesistence layer(持久层) A.封装数据访问的逻辑,暴露接口 B.提供方便的数据访问方案(查询语言,API,映射机制等) 4)Domain layer(域层) A.业务对象以及业务关系的表示 B.处理简单的业务逻辑 C.域层的对象可以穿越表示层,业务层,持久层 软件分层结构使得代码维护非常方便,设计明确,各层独立,专注自己擅长的领域。

22.请谈谈对 SOA 的认识。
面向服务的体系结构(Service-Oriented Architecture,SOA)是一个组建模型,他将相应程 序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是 采用中立的方式进行定义的,他应该独立与实现服务的硬件平台、操作系统和编程语言。这 使得构建在各种这样的系统中的服务可以以一种统一和通用的方式进行交互。

23.简 要 描 述 如 何 结 合 Struts 、 hibernate 、 spring 开发 web 应用?
Struts 可以将 jsp 页面的表单关联起来,就是把 JSP 页面的表单数据封装成 javaBean,这 样的话, 在 action 中再也不需要使用创痛的 request.getParameter(“name”);还有 struts 有一个 控制器,在 Struts 变成中的控制器(XxxAction)都是继承总的 ActionServlet,他能集中处理 请求,然后转到相关的页面。还有 struts 的表单验证组件,不能自己写 js 验证了,只需要配 置一下文件就可以了。另外 struts 的令牌机制可以防止表单的重复提交。 Spring 是一个轻量级容器,非侵入性,包含依赖注入,AOP 等。他是为了解决企业开发 应用程序复杂性而构建的。 框架的主要优势之一就是其分层架构, 分层架构允许选择是用哪 一个组件,同时为 J2EE 应用程序开发提供集成的框架。 Hibernate 他可以让我们一 OO 的方式操作数据库,这让我们看到了 Hibernate 的强大之 处,体验到操作数据的方便。但是 Hibernate 最耀眼之处是 Hibernate 的缓存机制,而不是 以 OO 的方式操作数据库。 Hibernate 的缓存机制不外乎是一级缓存 session ,二级缓存 sessionfactory,和第三方缓存如 ehcache。也就是 hibernate 的最强大的地方就是它的缓存, 理解了这个才能真正的理解 hibernate,Hibernate 的命名查询/命名参数查询,就是讲 hql 语 句放在一个单独的 xml 文件之中, 他仍然让人们以面向对象的方式操纵数据库, 而不用在以 OO 的方式写着代码的同时,然后再转变思维,用面向关系的方式去写那些 sql 语句。但是

Hibernate 不仅做了这些, 它的 native sql 查询方式, 完全满足 sql 语句的偏爱者, 他就像 ibatis 一样,将 sql 语句放在配置文件中。

24.说明反转控制 (IOC) 和面向方面编程 (AOP) 在 Spring 中的应用。
Spring 核心容器 (Core) 提供 Spring 框架的基本功能。 核心容器的主要组建市 BeanFactory, 它是工厂模式的实现。beanFactory 使用控制反转(IOC)模式将应用程序的配置和依赖性规 范与实际的应用代码程序分开。Spring 的声明式事务基于 AOP 实现,却不需要程序开发者 成为 AOP 专家,亦可轻易使用 Spring 的声明式事务管理。

25.请看如下片段:
<set name=”address” lazy=”true” inverse=”false” cascade=”all-delete-orphan”> <key column=”USERID”></key> <one-to-many class=”com.norteksoft.erm.model.Address”/> </set> 解释 lazy、inverse、cascade 以及 all-delete-orphan 属性的含义:并给出示例代 码,说明在如下组合情况下,对于 save、update、delete 一对多关系中的一方对 象 操 作 时 的 区 别 : inverse 、 cascade 、 true 、 all-delete-orphan 、 false 、 all-delete-orphan、true、all、false、all、true、none、false、none
(一)lazy:延迟加载 Lazy 的有效期:只在 session 打开的时候才有效;session 关闭后 lazy 就没效了。 Lazy 策略可以用在: A.<class>标签上:取值为 true/false B.<property>标签上:取值为 true/false,这个特性需要类增强 C.<set>/<list>等集合上:取值为 true/false/extra D.<one-to-one>/<many-to-one>等标签上:取值为 false/proxy/no-proxy. 1)get 和 load 的区别: A.get 不支持延迟加载,二 loa 支持 B.当查询特定的数据库中不存在的数据时,get 会返回 null,而 load 则抛出异 常 2)类(Class)的延迟加载 A.设置<class>标签中的 lazy=”true”,或者保持默认(即不配置 lazy 属性) B.如果 lazy 的属性值为 true,那么在使用 load 方法加载数据时,只有确实用 到数据的时候才会发出 sql 语句:这样可以减少系统的开销。 3)集合(collection)的延迟加载:可以取值为 true,false,extra A.true:默认取值,他的意思是只有在调用这个集合获取里面的元素对象时, 才发出查询语句,加载其集合元素的数据 B.False:取消懒加载特性,即在加载对象的同时,就发出第二条查询语句加载 其相关联集合的数据 C.Extra:一种比较聪明的懒加载策略,即调用集合的 size/contains 等方法的时

候,hibernate 并不会去加载整个集合的数据,而是发出一条聪明的 sql 语句,以便 获得需要的值, 只有在真正要用到这些集合元素对象数据的时候, 才会发出查询语 句加载所有对象的数据。 4)Hibernate 单端关联懒加载策略:即在<one-to-one>/<many-to-one>标签上可以配 置懒加载策略,取值为:false/proxy/no-proxy A.false:取消懒加载策略,即在加载对象的同时,发出查询语句,加载其关联对 象 B.Proxy:这是 hibernate 对单端关联的默认懒加载策略,即只有在调用到其关 联对象的方法的时候才真正发出查询语句查询其对象数据,其关联对象是代理类。 C.No-proxy:这种懒加载特性需要对类进行增强,使用 no-proxy,其关联对象 不是代理类 注意:在 class 标签上配置的 lazy 属性不会影响到关联对象!!! (二)Inverse Inverse 是指关联关系的控制方向,inverse=false 的 side(side 其实是指 inverse=false 所位于的 class 元素)端由责任维护关系,而 inverse=true 端无须维护这些关系 (三)Cascade Cascade 指的是层级之间的连锁操作。 在定义关联对象的映射时, 使用 cascade=”all”, cascade=”save-update”,cascade=”all-dalete-orphan”或者 cascade=”delete” A.如果 父对象被保存 ,所有的 子对象会被传 递 到 saverOrUpdate() 方法去执行 (cascade=”sava-update”) B.如果父对象被传递到 update() 或者 saveOrUpdate(),所有的子对象会被传递到 saveOrUpdate()方法去执行(cascade=”save-update”) C.如 果 一 个 临 时 的 子 对 象 被 一 个 持 久 化 的 父 对 象 引 用 了 , 他 会 被 传 递 到 savaOrUpdate()去执行(cascade=”sava-update”) D.如 果 父 对 象 被 删 除 了 , 所 有 的 子 对 象 会 被 传 递 到 delete() 方 法 执 行 (cascade=”delete”) E.如果临时的子对象不再被持久化的父对象引用,什么都不会发生(必要时,程序 应该明确的删除这个子对象) , 除非声明了 cascade=”all-delete-orphan”, 在这种情况下, 成为“孤儿”的子对象会被删除。 (四)Save、update、delete 一对多关系中的一方对象操作时的区别 1)当一方设置 inverse=true 时,所有的由一方发出的操作都不会关联到多方。 2)当一方设置 inverse=false,cascade=all-delete-orphan 时,将删除不在和一方对象 关联的所有多方对象。 3)当一设置 inverse=false,cascade=all 时,当保存和删除一方对象时,级联保存和删 除所有关联的多方对象。 4)当一方设置 inverse=false,cascade=none 时,当对一方操作时,不级联到关联的多 方对象。

26.简单说明什么是递归?什么情况会使用?并 使用 Java 实现一个简单的递归程序。
1)递归作为一种算法在程序设计语言中广泛应用,是指函数、过程、子程序在运行过程 中直接或间接调用自身而产生的重入现象。

2)递归算法一般用于解决三类问题 A.数据的定义是按照递归定义的(Fibonacci 斐波那契函数) B.问题解决按递归算法实现(回溯) C.数据的结构形式按递归定义。(树的遍历,图的搜索) 3)这是一个排序的例子, 他所做的工作是将输入的一个字符串中的所有元素进行排序并 输出,例如:给出的参数是“abc”,则程序会输出: abc acb bac bca cab cba A.算法的出口在于:low=high 也就是现在给出的排列元素只有一个时。 B.算法的逼近过程:先确定排序的第一位元素,也就是循环中 i 所代表的元素,然 后 low+1 开始减少排列元素,如此下去,知道 low=high Public class Foo{ Public static void main(String[] args){ Permute(“abc”); } Public static void permute(String str){ Char[] strArray=str.toCharArray(); Permute(strArray,0,strArray.length-1); } Public static void permute(char[] list,int low,int high){ Int i; If(low==high){ String count=””; For(i=0;i<=high;i++){ Count+=liat[i]; } //System.out.println(count); }else{ For(i=low;i<=high;i++){ Char temp=list[low]; List[low]=list[i]; List[i]=temp; Permute(list,low+1,high); Temp=list[low]; List[low]=list[i]; List[i]=temp; } } } }

27.列出自己常用的 jdk 包
Java.lang:这个是系统的基础类,比如 String 等都是这里面的,这个 package 是唯一一 个可以不用 import 就可以使用的 Package Java.io:这里面是所有输入输出有关的类,比如稳健操作等。

Java.net:这里面是与网络有关的类,比如 URL,URLConnection 等。 Java.util:这个是系统辅助类,特别是集合类 Collection,List,Map 等。 Java.sql:这个是数据库操作类,Connection,Statement,ResultSet 等

28.列出自己常用的 jdk 中的数据结构
线程表,链表,hash 表都是常用的数据结构

29.List,Map,Set 三个接口存储元素时各有什么 特点?
1)List 是有序的 Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够 使用索引(元素在 List 中的位置,类似于数组下表)来访问 List 中的元素,这类似于 Java 的数 组。 2)Set 是 一 种 不 包 含 重 复 元 素 的 Collection , 即 任 意 的 两 个 元 素 e1 和 e2 都 有 e1..equals(e2)=false,Set 最多有一个 null 元素。 3)Map 接口:Map 没有继承 Collection 接口,Map 提供 Key 到 Value 的映射

30.简述基于 Struts 框架 Web 应用的工作流程
在 Web 应用启动时就会加载初始化 ActionServlet,ActionServlet 从 struts-config.xml 文件 中读取配置信息,把他们存放到各种配置文对象中,当 ActionServlet 接收到一个客户的请求 时,将执行如下流程: 1)检索和用户请求匹配的 ActionMapPing 实例, 如果不存在, 就返回请求路径无效信息。 2)如果 ActionForm 实例不存在,就创建 ActionForm 对象,把客户提交的表单数据保存 到 ActionForm 对象中。 3)根据配置信息决定是否需要表单验证, 如果需要验证, 就调用 ActionForm 的 validate() 方法; 4)如果 ActionForm 的 validate()方法返回 null 或者返回一个不好喊 ActionMessager 的 ActionErrors 对象,就表示表单验证成功; 5)ActionServlet 根据 ActionMapping 所包含的映射信息决定将请求转发给哪个 Action, 如果相应的 Action 实例不存在,就先创建这个实例,然后调用 Action 的 execute()方法; 6)Action 的 execute()方法返回一个 ActionForward 对象, ActionServlet 在把客户请求转发 给 ActionForward 对象指向 JSP 组件生成动态网页,返回给客户。

31.在项目中用过 Spring 的哪些方面?及用过 哪些 Ajax 框架?
在项目中使用过 SpringIOC,AOP,DAO,ORM,还有上下文环境 在项目中使用过 JQuery,EXtjs 等 Ajax 框架。

(Ajax 框架: 最长用的就是,prototype、jquery 和 EXtjs,Jquery 用起来比较方便,EXtjs 可能对 初学者比较困难。 常用的基本就是 Dojo,Extjs,GWT,Prototype,JQuery ,MooTools,Backbase 这些了,他们使用的概率大约是 Prototype jQuery Ext Script.aculo.us Mootools YUI JSON Dojo Backbase 34.1% 29.3% 22.5% 22.3% 14.3% 13% 12.9% 11.8% 8.3% )

32.Abstract class 和 interface 有什么区别?
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体 现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建 abstract 类的实例。然而可以创建一个变量,其类型是一个抽象类,并让他指向具体子类的 一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的自雷为他们父类中的所有抽 象方法提供实现,否则他们也是抽象类。取而代之,在子类中实现该方法。知道其行为的其 他类可以再类中实现这些方法。 接口(interface)是抽象类的变体。新型多继承性可通过实现这样的接口而获得。接口中 的所有方法都是抽象的,所有成员变量都是 public static final 的。一个类可以实现多个接口, 当类实现接口时,必须实现接口的所有方法。抽象类在 java 语言中表示的是一种单继承的 关系,对于 interface 来说则不然,并不要求 interface 的实现者和 interface 定义在概念本质 上是一致的,仅仅是实现了 interface 定义的契约而已。 抽象类中可以定义自己的成员变量, 也可以包含非抽象类的方法, 而在接口中只能由静 态的敞亮,所有的方法必须是抽象的;实现抽象类是可以实现其中的部分方法,而是要实现 一个接口的话就必须实现这个接口中的所有抽象方法。

33.MVC 模式中 M、V、C 每个代表的含义,并 简述在 Struts 中的 MVC 的表现的方式。
MVC 是 MOdel-View-Controller 的缩写, Model 代表的是应用的业务逻辑 (通过 JaveBean, EJB 组件实现),View 是应用的表示层(由 JSP 页面产生),Controller 是通过应用的处理过 程控制,(一般是一个 servert)通过这种设计模型把应用逻辑,处理过程和现实逻辑分成 不同的组件实现,这些组件可以进行交互和重用。 在 Struts 框架中 Controller 功能由 ActionServlert 和 ActionMapping 对象构成,核心是一 个 Servlet 类型的对象 ActionServlet,他用来接受客户端的请求。ActionServlet 包括一组基于 配置的 ActionMapping 对象,每个 ActionMapping 对象实现了一个请求到具体的 Model 部分 的 Action 处理器对象都是开发者从 Struts 的 Action 类派生的子类。 Action 处理器对象封装了 具体的处理逻辑, 调用业务逻辑模块, 并且把响应提交到合适的 View 组件以产生响应。 Struts 提供的 ActionForm 组件对象可以通过定义属性描述客户端表单数据,开发者可以从他派生 子类对象,并利用它和 Struts 提供的自定义标记库相结合,可以实现对客户端的表单数据的 良好封装和支持, Action 处理器对象可以直接对他进行读写, 而不再需要和 request、 response

对象进行数据交互。 通过 ActionForm 组件对象实现了对 View 和 model 之间的交互支持 (View 部分是通过 JSP 技术实现的)。Struts 提供了自定义的标记库,通过这些自定义标记库可以 非常容易地和系统 Model 部分交互,通过使用这些自定义标记库创建的 JSP 表单,可以实现 对 Model 部分中的 ActionForm 的映射,完成对用户数据的封装。

34.Java 语言中 public、private、protected 三 个关键字的用法,重载和重写的区别。
作用域 当前类 同包 子类 其他 Public √ √ √ √ Protected √ √ √ × Private √ × × × Friendlly √ √ × × 重写:发生在父子类之间,方法名相同,参数的类型、个数、顺序相同,返回值相同, 访问权限不能更封闭,抛出异常不能宽泛; 重写:发生在同一个类中,方法名相同,单参数不同(类型不同或个数不同或参数的顺 序不同),返回值可以不相同。

35.JSP 页面之间传递参数的方法有哪些?
1)Request 2)Session 3)Application 4)提交表单 5)超链接

36.Forward 和 redirect 的区别?
Forword 是容器中控制权的转向, 是服务器请求资源, 服务器直接访问目标地址的 URL。 把那个 URL 的响应内容读取过来,然后吧这些内容在转发给浏览器,浏览器根本不知道服 务器发送的内容是从哪里来的,所以它的地址栏中还是原来的地址。Redirect 就是服务器端 根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请 求的所有参数重新请求, 并且从浏览器的地址栏中可以看到跳转后的链接地址。 前者更加高 效,在前者可以满足需要时,尽量使用 forword()方法,并且这样也有助于隐藏实际的连接; 在有些情况下,比如,需要跳转到一个其他服务器上的资源,则必须使用 sendRedirect()方 法。

37.Java 反射机制的作用?
1)在运行时判断任意一个对象所属的类 2)在运行时构造任意一个类的对象

3)在运行时判断任意一个类所具有的成员变量的方法 4)在运行时调用任意一个对象的方法

38.你是怎样理解 java 的泛型的?
在 JavaSE1.5 之前,没有反省的情况下,通过对类型 Object 的应用来实现参数的“任意 化”,“任意化”带来的缺点是要做现实的强制类型的转换,而这种转换是要求开发者对实 际参数类型可以预知的情况下进行的。 对于强制类型转换错误的情况, 编译器可能不提示错 误,在运行的时候才出现的异常,这是一个安全隐患。 泛型是 JaveSE1.5 的特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指 定一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称之为泛型类、泛型接 口、泛型方法。 反省的好处是编译的时候检查类型安全, 并且所有的强制转换都是自动和隐式的, 提高 代码的重用率。

39.Java 源文件中是否可以包含多个类,有什么 限制?
一个 java 源文件可以包含多个类,每个源文件之多有一个 public 类。如果有的话,那 么源文件的名字必须与之相同。如果源文件中没有 public 类,则源文件用什么名字都可以, 但是最好还是具有特定的意义,免得自己都不记得里面写的是什么了。

40.在一个千万级的数据库查询中,如何提高查 询效率?分别说出在数据库设计、SQL 语句、 java 等层面的解决方案
1)数据库设计方面 a.对查询进行优化,应尽量避免全表扫描。首先应考虑在 where 及 order by 设计的列上 建立索引 b.应尽量避免在 wher 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而 进行全表扫描, 如: select id from t where num is null 可以在 num 上设置默认值 0, 确保表中 num 列没有 null 值,然后这样查询:select id from t where num=0 c.并不是所有的缩影对查询都有效,SQL 是根据表中数据查询优化的,当索引列有大量 数据重复时,查询可能不会去利用索引,如一表中有字段 sex,male,female 几乎各一般,那 么及时在 sex 上建了索引也对查询效率起不了作用。 d.索引并不是越多越好, 索引固然可以提高相应的 select 的效率, 但同时页讲题了 insert 及 update 的效率,因为 insert 或 update 时有可能会重建索引,所以怎样建索引需要慎重考 虑,视具体情况而定。一个表的索引数最好不要超过 6 个,若太多则应该考虑一些不常使用 到的列上建的索引是否有必要。

e.应尽可能地避免更新索引数据列,因为索引数据列的顺序就是表记录的物理存储顺 序,一旦该列值改变将导致这个表记录的顺序的调整,会耗费相当大的资源。若应用系统需 要频繁更新索引数据列,那么需要考虑是否应该将索引建为索引。 f.尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,这回降低查询 和连接的性能, 并会增加存储开销。 这是因为引擎在处理查询和连接时会逐个比较字符串中 每一个字符,而对于数字型而言只需要比较一次就够了。 g.尽可能的使用 varchar/nvarchar 代替 char/nchar。因为首先变长算存储空间小,可以节 省存储空间,其次对于查询来说,在一个相对较小的字段内搜索效率显然更高。 h.尽量使用表变量来代替临时表。如果表变量包含大量数据,请注意所有非常有限(只 有主键索引) i.避免频繁创建和删除临时表,以减少系统表资源的消耗。 j.临时表并不是不可使用,适当的使用他们可以使某些例程更有效,例如:当需要重复 引用大型表或常用表中的某些数据集时。但是,对应一次性事件,最好使用导出表。 k.在新建临时表时。 如果一次性插入数据库量很大, 那么可以使用 select into 代替 create table ,避免造成大量 log, 以提高速度; 如果数据量不打, 为了缓和系统表的资源, 应先 create table ,然后 insert。 2)SQL 语句方面 a.应尽量避免在 where 子句中使用!=或<>操作符,否则将导致引擎放弃使用所有而进 行全表扫描。 b.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用所有而进 行全表扫描,例如:select id from t where num=10 or num=20 可以这样查询:select id from t where num=10 unnion all select id from t where num=20. c.In 和 not in 也要慎用,否则会导致全表扫描,如:select id from t where num in(1,2,3) 对于连续的数值,能用 between 就不用 in 了:select id from t where num between 1 and 3. d.下面的查询也将导致全表扫描:select id from t where name like ‘%abc%’. e.如果在 where 子句中使用参数,接将会导致全表扫描。因为 SQL 只有在运行时才会解 析局部变量,但优化程序不能将访问计划的选择推迟到运行时;他必须在编译时进行选择。 然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择输入项。 如下面语句将进行全表扫描:select id from t where num=T@num 可以改为强制查询使用索 引:select id from t where (index(索引名)) where num=@num f.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进 行全表扫描。 如: select id from t where num/2=100 应改为: selectid from t where num=100*2 g.应尽量避免在 where 子句中对字段进行函数操作, 这将导致引擎放弃使用索引二进行 全表扫描。 如: select id fron t where substring(name,1,3)=”abc” -name 以 abc 开头的 id select id from t where datediff(day,createdate,”2016-08-04”)=0-”2016-08-04”生成的 id 应改为:select id from where name like “abc%” select id from t where create date>=”2-16-08-04” and createdate<”2016-09-01”。 h.不要在 where 子句中的“=”左边进行函数、涮书运算或其他表达式运算,否则体统 将可能无法争取适应索引。 i.不要写一些无意义的查询,如需要生成一个空表结构:select col1,col2 inro #t from t where 1=0 这类代码不会返回人户结果集, 但是会消耗系统资源的, 应改成这样: create table #t(....) j.很多时候用 esists 代替 in 是一个很好的选择: select num from a where num in(select num from b) 使用下面的语句替换: select num from a where exixts(select 1 from b where

num=1.num) k.人户地方都不要使用 select * from t,用具体的字段列表代替“*”,不要返回用不到的 任何字段。 l.尽量避免使用游标,因为有标的效率交叉,如果游标操作的数据查过一万行,那么就 应该考虑改写。 m.尽量避免向客户端返回大量数据,若数据量过大,应该考虑响应需求是否合理。 n.尽量避免大事务操作,提高体统并发能力。 3)Java 方面 a.尽可能的少创造对象 b.合理摆正系统设计的位置。大量数据操作,和减少数据操作一定是分开的,大量的数 据操作,肯定不是 ORM 框架搞定的。 c.使用 JDBC 连接数据库操作 d.控制好内存,让数据流起来,而不是全部读到内存在处理,而是边读取边处理。 e.合理利用内存,有的数据要缓存

41.请解释分布式事务管理?
分布式事务管理是指事务的参与者、 支持事务的服务器、 资源服务器以及事务管理器分 别位于不同的分布式系统的不同节点上。 为了实现分布式事务, 需要使用下面将介绍的两阶 段提交协议。 阶段一:开始向事务涉及到全面资源发送提交前信息。此时,事务涉及到的资源还有最 后一次机会来异常结束事务。如果任意一个资源决定异常结束事务,则整个事务取消,不会 进行资源的更新。否则,事务将正常执行,除非发生灾难性的失败。为了防止会发生灾难性 的失败,所有的资源的更新都会写入到日志中。这些日志是永久性的,因此,这些日志会幸 免于难并且在失败之后可以冲星对所有资源进行更新。 阶段二:只在阶段一没有异常结束的时候才会发生。此时,所有能被定位和单独控制的 资源管理器都将开始执行真正的数据更新。 在分布式事务两阶段提交协议中, 有一个主事务管理器负责充当分布式事务协调器的角 色。 事务协调器负责整个事务并使之与网络中的其他事务管理器协同工作。 为了实现分布式 事务, 必须使用一种协议在分布式事务的各个参与者之间传递事务上下文信息,IIOP 便是这 种协议。 这就要求不同开发商开发的事务参与者必须支持一种标准协议, 才能实现分布式的 事务。

42.请写出一段表单提交的 HTML 代码,表单名 为 form1 , 提 交 方 式 为 post , 提 交 地 址 为 submit.jsp
<form name=”form1” method=”post” action=”aubmit.jsp”> <input type=”submit” /> </form>

43.请 写 出 一 个 超 链 接 , 点 击 链 接 后 可 以 向 [email protected] 发送电子邮件
<a href=”mailto:[email protected]”>发送邮件</a>

44.请说明 meta 标签的作用
Meta 是用来在 HTML 文档中模拟 HTTP 协议的响应头报文。Meta 标签标签用于网页的 <head>与</head>中, meta 标签的用处很多。 Meta 的属性有两种: name 和 http-equiv。 Name 属性主要用于描述网页,对于 content(网页内容),以便于搜索引擎机器人查找、分类(目前 几乎所有的搜索引擎都是用网上机器人自动查找 meta 值来给网页分类)。这其中最重要的 是 description(站点在搜索引擎上的描述)和 keyword(分类关键词),所有应该给每页加 一个 meta 值。比较常用的有以下几个: Name 属性 1)<meta name=”Generator ” content=””>用以说明生成工具(如 Microsoft FrontPag4.0) 2)<meta name=”KEYWords” content=””>向搜索引擎说明你的网页的关键词 3)<meta name=”DEscription” content=””>告诉搜索引擎你的站点的主要内容 4)<meta name=”Author ” content=”你的姓名”>告诉搜索引擎你的站点的制作的作者 5)<meta name=”Robots” content=”all | none | index |noindex |follow |nofollow ”>其中的 属性说明如下: 设为 all:文件将被检索,且页面上的连接可以被查询 设为 none:文件将不被检索,且页面上的连接不可以被查询 设为 index:文件将被检索 设为 follow:页面上的链接可以被查询 设为 noindex:文件将不被检索,单页面上的链接可以被查询 设为 nofollow:文件将不被检索,页面上的链接可以被查询。 6)http-equiv 属性 a.<meta http-equiv=”Content-Type” content=”text/html;charset=gbk”> 和 <meta http-equiv=”Content-Language” content=”text/html;charset=zh-CN”>用已说明主页制作所使用 的语言以及文字 b.<meta http-equiv=”Refresh” content=”n;url=http:’’yourlink”>定时让网页在指定的时间 n 内,跳转到 http://yourlink c.<meta http-equiv=”Expires” content=”Mon,12 May 2001 00:20:00 GMT”>可以用于设置 网页到期时间, 一旦过期必须到服务器上重新调用, 需要注意的是必须使用 GMT 时间格式。 d.<meta http-equiv=”Pragma” content=”no-cache”>适用于设定禁止浏览器从本地的缓存 中调阅页面内容,设定后一旦离开网页就无法从 cache 中调出 e.<meta http-equiv=”set-cookie” content=”Mon,12 May 2001 00:20:00 GMT ”>cookie 设定, 如果网页过期,存盘的 cookie 会被删除。需要注意的也是必须使用 GMT 时间格式 f.<meta http-equiv=”Pics-label” content=””>网页等级评定, 在 IE 的 Internet 选项中有一项 内容设置,可以防止浏览器一些受限制的网站,而网站的限制级别就是通过 meta 属性来设 置的。 g.<meta http-equiv=”windows-Target ” content=”_top”>强制页面在当前窗口中以独立页

面显示,可以防止自己的网页被别人当做一个 frame 页调用 h.<meta http-equiv=”Page-Enter ” content=”revealTrans(duration=10,transtion=50)”>和设定 进入和离开页面时的特殊效果,这个功能即 FrontPage 中的“格式/网页过度”,不过所加的 页面不能够是一个 Frame 页面

45.如何将 HTML 页面标题设置为“数字天堂”
<html> <title>数字天堂</title> <body>主内容部分</body> </html>

46.请写出一个隐藏控件
<input type=”hidden” name=”usee_id” value=”1001” />

47.请写出 JavaScript 中的常用的三种事件。
onclick(); onChange(); onload() ; onblur();

48.请写出一段 JavaScript 代码, 要求页面有一 个按钮,点击按钮弹出确认框。程序可以判断出 用户点击的是“确认”还是“取消”。
<html> <head> <title>点击事件</title> <script> Function validateForm(){ If(confirm(“你确认提交这个表单吗?”)){ Alert(“确定”); }else{ Alert(“取消”); } } </script> </head> <body> <form action=”xx.action” method=”post ” name=”test”> <input type=”button” name=”sub” value=”







onClick=”JavaScript:validateForm()”/> </form> </body> </html>

49.JavaScript 如何实现及时功能
<script> window.setTimeout(“window.location=’http://www.csdn.net ’;”,35000); </script>

50.JavaScript 如何定义数组?
Var arrTest=new Array();

51.JavaScript 可以操作 cookie 和 session?
JavaScript 可以操作 cookie,但不能操作 session

52.请写出如下正则表达式的含义
Com|cn|net ^http://www.d-heaven.com/$ ^http://www.sina.com.cn/new/newid=\d+
Com|cn|net 表示匹配 com 或是 cn 或是 net 中的一个 ^http://www.d-heaven.com/$表示匹配 http://www.d-heaven.com/$ ^http://www.sina.com.cn/new/newid=\d+表示匹配:http://www.sina.com.cn/new/newid= 其后可以出现 1 到多个数字

53.请用正则表达式匹配 QQ 号(假设 QQ 号码 为 5-10 位)
^\d[5-10]$

54.String,StringBuffer,StringBuilder 的区 别。
String 的长度是不可以变得;StringBuffer 的长度是可变的,如果你对字符创的内容经常

进行操作,特别是内容要修改时,那么使用 StringBuffer,如果最后需要 String,那么使用 StringBuffer 的 toString()方法;线程安全:StringBuilder 是从 JDK5 开始,为 StringBuffer 该类 补充了一个单个线程使用的等价类;通常应该优先使用 StringBuffer 类,因为它支持所有相 同的操作,但由于他不执行同步所以速度更快。

55.请写出 5 种常见到的 runtime exeception
NullPointException:当操作一个空引用时会出现此异常 NumberFormatException:数据格式转换出现问题时出现此异常 ClassCastException:强制类型转换类型不匹配时出现此异常 ArrayIndexOutOfBoundsException:数组下标越界,当使用一个不存在而数组下标是出现 此异常 ArithmeticException:数学运行错误时出现此异常

56.数组有没有 length()这个方法?String 有没 有 length()这个方法?
数组没有 length()方法,它有 length 属性。String 由 length()方法

57.请写出一个单例模式
单例模式(Singleton pattern):确保一个类只有一个实例,并提供一个全局的访问点。 public class EagerSingleton { private static final EagerSingleton m_intance=new EagerSingleton(); /** * 私有构造器 */ private EagerSingleton() {} /** * 静态工厂方法 * @return */ public static EagerSingleton getmIntance() { return m_intance; } }

58.在 Java 中,List 是一个借口,那实现 List 接口的类有哪些,有什么区别?
ArrayList 是使用数组方式存储数据, 此数组元素大于实际存储的数据以便增加和插入元 素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以 索引数据快而插入数据慢。 LinkedList 使用双向链表实现存储,按序号索引数据需要进行前向或者后向遍历,但是 插入数据时只需要记录本项的前后项即可,所以插入速度较快。

59.Char 类 型 能 否 存 储 一 个 中 文 字 符 ? 为 什 么?
可以。一个 char 是两个字节,而一个中文也是两个字节。

60.Switch 选择语句能否作用在 String[字符串] 上,也就是能否这么写:switch(一个字符串变 量)?
不可以, 只能处理 int、 byte、 short、 char(其实是只能处理 int, 其他三种是可以 promotion 到 int 类型),不能处理 String.

61.关键字 final 分别修饰一个类,一个方法,一 个变量,各起什么作用?
Final 修饰类是不能被继承,final 修饰方法不能在子类中被覆盖,final 修饰变量,称之 为常量,初始化以后不能改变值。

62.启动一个县城是用 run()还是 start();
Start();

63.是否可以继承 String 类?
不可以。因为 String 类有 final 修饰

64.Java 异常处理中,try{}里有一个 return 语 句那么紧跟在这个 try 后的 finally{} 里面的 code 会不会被执行, 什么时候被执行, 在 return 前还是后?
会执行,在 return 之前

65.EJB 包含哪 3 中 bean?
Session bean(会话 bean),entity bean(实体 bean),message bean(消息 bean)

66.Class.forName(String className)这个方 法的作用?
通过类的全名获得该类的类对象

67.你认为在表上建立索引可以提高数据库系统 的效率吗?为什么?
不一定。 建立太多的索引将会影响更新和插入的速度, 因为他需要同样更新每个索引文 件。对于一个经常需要更新和插入的表格,就没有必要为一个甚少使用的 where 字句单独 建立索引,对于比较小的表,排序的开销不会很大,也没有必要建立另外的索引。

68.Hibernate 中的 java 对象有几种状态,其相 互关系如何(区别和相互转换)。
在 hibernate 中,对象有三种状态:临时状态、持久状态和游离状态。 临时状态:当 new 一个实体对象后,这个对象处于临时状态,即这个对象只是一个保 存临时数据的内存区域,,如果没有变量引用这个对象,则会被 jre 垃圾回收机制回收掉。这 个对象所保存的数据与数据库没有任何关系,除非通过 session 的 sava 或是 savaorupdate 把 临时对象与数据库关联,并把数据插入或者更新到数据库,这个对象才转换为持久对象。 持久状态: 持久化对象的实例在数据库中有对应的记录, 并拥有一个持久化表示 (ID) 。 对持久化现象进行 delete 操作,数据库中对应的记录将被删除,那么持久化对象与数据库 记录不再存在对应关系,持久化对象变成临时状态。持久化对象被修改变更后,不会马上同 步到数据库,直到数据库事务提交。在同步之前,持久化对象是脏的(Dirty)。

游离状态:当 session 进行了 close,clear 或者 evict 后,持久化对象虽然用于持久化标 识符和数据库对应记录一致的值,但是因为会话已经失效,对象不再持久化管理之内,所有 处于游离状态。(也叫托管状态)。游离状态的对象与临时状态对象是十分相似的,只是他 还含有持久化标识。

69.对 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 的生命周期。

70.什么是 AOP 和 OOP,IOC 和 DI 由有什么不 同?
1)面向对象编程(Object Oriented Programming,OOP,面向对象设计程序)是一种计算机 编程架构。AOP 是 OOP 的延续,是 Aspect Oriented Programming 的缩写,意思是面向方面 编程。将通用需求功能从不相关类之中分离出来;同时,能够使得很多类共享一个行为,一 单行为发生变化,不必修改很多类,止血药修改这个行为就可以了。AOP 就是这种实现分散 关注的编程方法,他将“关注”封装在“方面”中 2)控制反转 IOC(Inversion of Control)控制指的就是程序相关类之间的依赖关系,传统 观念设置中,通常由调用者来创建被调用者的实例,在 Spring 里,创建被调用者的工作不 在由调用者来完成,而是由 Spring 容器完成,依赖关系被反转了,称之为控制反转,目的

是为了获得更好的扩展性和良好的可维护性。依赖注入(Dependency injection)创建被调用 者的工作由 Spring 容器完成,然后注入调用者,因此也被称之为依赖注入。控制反转和依 赖注入是同一个概念。

71.Struts1 中的 actionForm 和 action 处于 MVC 的那一层?为什么?
ActionForm 和 action 属于 MVC 的 Model 层,Action 用来处理业务逻辑,ActionForm 保存 用户表单数据以便于在不同页面间传递。而 MVC 中的 model 层就是业务逻辑层,该层用于 实现具体的业务逻辑、状态维护及管理。

72.Error 和 eception 有什么区别?
Error 表示系统级别的错误和程序不必处理的异常,是恢复不是不可能当时很困难的情 况下的一种严重问题,比如说内存溢出,不可能指望程序能处理这样的情况。 Exception 表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就 是说,他表示程序运行正常,从不会发生的情况。

73.Log4j 是 apache 组织的开元一个开源项目, 通过 log4j 可以指定日志信息输出的目的地,如 console,file 等。Log4j 采用日志级别机制, 请按照输出级别由高到低的顺序写出日志输出 级别。
Log4j 分为 OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL 或者定义自己的级别。Log4j 建议只使用四个界别,优先级从高到低分别是 ERROR、WARN、INFO、DEBUG。通过在这里 定义的级别,可以控制到应用程序中相应级别的日志信息的开关。比如在这里定义了 INFO 级别。则应用程序中所有 DEBUG 级别的日志信息将不被打印出来。

74.说出几个与 Spring 同类型的开源框架, 说出 几个与 hibernate 同类型的开源框架, 说出几个 与 struts 同类型的开源框架。
1)与 spring 同类型的开源框架:JUIDE、EJB3.0、picoContainer 2)与 hibernate 同类型的开源框架:ibatis、jdo、JPA

3)几个与 struts 同类型的开源框架:webwork、tapestry、JSF

75.Struts2 包含那些标签?
A.<s:a href=””></s:a>--超链接,类似于 html 里面的<a></a> <s:action name=””></s:action>--执行一个 view 里面的一个 action <s:actionerror />--如果 action 的 error 有值那么显示出来 <s:actionmessafe />--如果 action 的 massage 有值那么显示出来 <s:append></s:append>--添加一个值到 list,类似于 list.add() <s:autocompleter></s:autocompleter>--自动完成 <s:combobox>标签的内容,这个是 ajax B.<s:bean name=””></s:bean>--类似于 struts1 中的 Javabean 的值 C.<s:checkbox ></s:checkbox>--复选框 <s:checkboxlist list=””></s:checkboxlist>--多选框 <s:combobox list=””></s:combobox>--下拉框 <s:component></s:component>--图像符号 D.<s:date/>--获取日期格式 <s:datetimepicker></s:datetimepicker>--日期输入框 <s:debug></s:debug>--显示错误信息 <s:div></s:div>--表示一个块,类似于 html 的<div></div> <s:doubleselect list=”” doubleName=”” doubleList=””></doubleselect>--双下拉框 E.<s:if test=””><s:if><s:elseif test=””></s:elseif><s:else></s:else>这三个标签一起使用,表示条 件判断 F.<s:fielderror></s:fielderror>--显示文件错误信息 <s:file></s:file>--文件上传 <s:form action=””></s:form>--获取相应的 form 值 G.<s:generator separator=”” val=”</s:generator ”>--和<s:iterator>标签一起使用 H.<s:head></s:head>---在<head></head>里面使用,表示头文件结束 <s:hidden></s:hidden>--隐藏值 I.<s:il8n name=””></s:il8n>--加载资源包到值堆栈 <s:include value=””></s:include>--包含一个输出,servlet 或是 jsp 页面 <s:inputtransferselect list=””><s:inputtransferselect>--获取 form 的一个输入 <s:iterator></s:iterator>--用于遍历 J.<s:label></s:label>--只读标签 K.<s:merge></s:merge>--合并遍历集合出来的值 L.<s:optgroup></s:optgroup>--获取标签组 <s:optiotransferselect doubleList=”” list=”” doubleName=””></s:optiotransferselect>--左右 选择框 M.<s:param></s:param>--为其他标签提供参数 <s:password></s:password>--密码输入框 <s:property />--为得到“value”的属性 <s:push value=””></s:push>--value 的值 push 到栈中,从而使得 property 标签能够获取 value 值 O.<s:tablePanel id=””></s:tablePanel>--表格框

<s:table></s:table>--表格 <s:text name=””></s:text>--il8n 文本信息 <s:textarea></s:textarea>--文本输入框 <s:textfield></s:textfield>--文本输入框 <s:token></s:token>---拦截器 <s:tree></s:tree>--数 <s:treenode lable=””></s:treenode>--树的结构 P.<s:updownselect list=””></s:updownselect>--多选框 <s:url></s:url>--创建 url

76.Struts2 中,OGNL 访问值栈的时候查找的 顺序是什么?请排序:模型对象、临时对象、固 定名称的随想、action 对象
Struts2 的值栈排序顺序为: 1)临时对象 2)模型对象 3)Action 对象 4)固定名称对象(如#application,#session,#request 等对象)

77.Struts2 中,Action 通过什么方式获得用户 从页面输入的数据, 又是通过什么方式把自身的 数据传给视图的?
1)可以直接通过与表单元素相同名称的数据成员 (需要促进在符合命名规范的 set 和 get 方法)获取页面表单数据。 2)会把处理好的数据成员放入值栈中,到页面可以使用 struts 标签取值就可以了。

78.常用的设计模式有哪些?说明工厂模式.
Java 中的 23 中设计模式: Factory (工厂模式) , Builder (建造模式) , Factory Method (工厂方法模式) , Prototype (原始模型模式),Singlerton(单例模式),Facade(门面模式),Adapter(适配器模式), Bridge(桥梁模式),Composite(合成模式),Decorator(装饰模式),Flyweight(享元模 式),Proxy(代理模式),Command(命令模式),Interpreter(解释器模式),Visitor(访 问者模式),Iterator(迭代器模式),Mediator(调停者模式),Memento(备忘录模式), Observer(观察者模式),State(状态模式),Strategy(策略模式),Template Method(模 板方法模式),Chain Of Responsiblety(责任链模式)

共产模式: 工厂模式是一种经常被使用到的模式, 根据工厂模式实现的类可以根据提供 的数据生成一组类中某一个类的实例, 通常这一组类有一个公共的抽象父类并且实现了相同 的方法,但是这些方法针对不同的数据进行了不同的操作。首先需要定义一个基类,该类的 子类通过不同的方法实现基类的方法, 然后需要定义一个工厂类, 工厂类可以根据条件生成 不同的子类。 当得到子类的实例后, 开发人员可以调用基类中的方法而不必考虑到底返回的 是哪一种子类的实例。

79.什么是数据库的参照完整性
数据库的参照完整性是指表与表之间的一种对应关系, 通常情况下可以通过设置两表之 间的主键、外键关系、或者编写量表的触发器来实现,有对应参照完整性的两张表格,在对 他们进行数据的插入、更新、删除的过程中,系统都会将被修改表格与与另一张对应表格进 行对照,从而阻止一些不正确的数据操作。

80.如何优化数据库,如何提高数据库的性?
1)硬件调整性能 最有可能影响性能的是磁盘和网络吞吐量, 解决办法扩大虚拟内存, 并保证有做足够可 以扩充的空间; 吧数据库服务器上的不必要服务关闭掉; 把数据库服务器和主域服务器分开; 把 SQL 数据库服务器的吞吐量调为最大;在具有一个以上处理器的机器上运行 SQL。 2)使用存储过程 实用程序的实现过程中, 能够采用存储过程实现的对数据库的操作尽量通过存储过程来 实现,因为存储过程是存放在数据库服务器懂行的一次性被设计、编码、测试,并被再次使 用,需要执行该任务的应用可以简单的执行存储过程,并且只返回结果集或者数值,这样不 仅可以是程序模块化,同时提高响应速度,剑豪网络流量,并且通过输入参数接受输入,是 的在使用中完成逻辑的一致性实现。 3)应用程序结果和算法 建立查询条件索引仅仅是提高速度的前提条件,响应速度的提高还依赖于对索引的使 用。因为人们在使用 SQL 时往往会陷入一个误区,即太关注所得的结果是否正确,特别是 对数据量不是特别打的数据库操作时, 是否建立索引和使用索引的好坏对程序的响应速度并 不大, 因此程序员在书写程序时就忽略了不同的实现方法之间可能存在的性能差异, 这种性 能差异在数据量特别大或者大型的或是复杂的数据库环境中(如联机事务处理 OLTP 或决策 支持系统 DSS)中表现的尤为明显。在工作实践中发现,不良的 SQL 往往来自于不恰当的索 引设计、不充分的连接条件和不可优化的 where 子句。在对他们进行适当的优化后,其运 行速度有了明显的提高。 4)调整数据库 若对该表的查询频率比较高,则建立索引;建立索引时,想尽对该表的所有查询搜索操 作,按照 where 选择条件建立索引,尽量为整形键建立为有且只有一个簇集索引,数据在 物理上按顺序排在数据页上, 缩短查找范围, 为在查询经常使用的全部列建立在非簇集索引, 能最大的覆盖查询;但是索引不可太多,执行 Update delete insert 语句需要用于维护这些索 引的开销量急剧增加;避免在索引中有太多的索引建;避免使用大型数据类型的列为索引; 保证每个索引键值有少数行。

81.JS 中的三种弹出式消息提醒(警告窗口、确 认窗口、信息输入窗口)的命令是什么?
Alert comfirm prompt

82.描述 JSP 和 Servlet 的区别、共同点、各自 应用的范围
JSP 在本质上就是 Servlet,但是两者的创建的方式不一样。Servlet 完全是 java 程序代码 构成,擅长于流程控制和事务处理,通过 Servlet 来生成动态网页很不直观,JSP 由 html 代 码和 JSP 标签构成,可以方便的编写动态网页,因此在实际应用中采用 Servlet 来控制业务 流程,而采用 JSP 来生成动态网页。

83.在 java 语言中 int 和 Integer 有什么区别?
Int 是基础数据类型,Integer 是 int 的包装类,属于引用类型。

84.计算下面的结果
25&3= 25|3=
25 的二进制是 11001,3 的二进制是 00011,按位与的结果是:00001,按位或的结果是 11010,因此转成十进制分别为 1 和 27.

85.如 何 获 得 <div Page</div>中的值

id=”div1”>This

my

<script > Var div1=Document.getElementById(“div1”); Alert(div1.innerHtml); </script>

86.JDK1.5 中支持的 for 循环的语法
For(type element :array){ System.out.println(element); }

type 集合(不仅仅值 collection,也包含普通的数据)中的元素的数据类型, element 遍历得到的元素 Array 集合对象本身(不只是 collection)

87.简



synchronized



java.net.concurrent.locks.Lock 的异同?
主要相同点: Lock 能完成 synchronized 所实现的所有工能 主要不同点: Lock 有比 synchronized 更精确的线程语义和更好的性能。Synchronized 会自动解锁,而 Lock 一定要求程序员手动释放,并且必须在 finally 从句中释放。

88.如何格式化日期?
Date now=new Date(); SimpleDateFormat sdf=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”); String formatNow=sdf.format(now);

89.将字符“12345”转换成 long 型
String s=”12345”; Long num=Long.valueOf(s).longValue();

90.Struts 中如何实现国际化,涉及那些文件?
“国际化” 是指一个应用程序在运行是能够根据客户端请求所来自的管家地国家、 语言 的不同二显示不同的用户界面。 Struts 框架用过使用<bean:message>标记, 以及使用 java.Util 数据包中定义的 local 和 ResourceBundle 类来支持国际化。 Java.text.MessageFormat 类定义的 技术可以支持消息的格式。 利用此功能, 开发人员不需要了解这些类的细节就可进行国际化 和设置消息的格式。 会涉及到资源文件, 不需要了解这些类的细节就可以进行国际化和设置 消息的格式。会涉及到资源文件,struts-config.xml 配置文件,web.xml 配置文件。

91.列举在诊断 oracle 性能问题时, 常用的工具、 方法
1)简单一点的可以用 toad 及 dbartisan 工具 2)纯作性能,比较出色的由 spolight 和 emc 的 I3,这两个软件比较贵 3)一些网管系统这方面也不错,比如 hp 的 openview。不过定制起来不太容易,且很贵

4)不用花钱又好用的就是 Oracle 的 statpack 了 5)再有就是自己写脚本,大多数有经验的 dba 都喜欢以这种方式。优点是使用灵活,缺 点是如果想出一个性能变换的曲线图等图标, 且做的美观就需要些 delphi,c++,buider 或是 pb 的开发功底了。

92.Oracle 启动中,startup nomount、startup mount 有什么差别?
startup nomount:启动实例,读取参数文件,分配内存空间,启动后台进程,打开跟踪 文件和报警文件。 startup mount:装载数据库,打开控制文件。 Nomount 方式下还没有读取控制文件,该选项用于在数据库的控制文件全部损坏,需 要重新创建数据库控制文件或创建一个新的数据库时使用。 mount 选项下并没有打开数据文件, 该选项可以用来修改数据库的运行模式或是进行数 据库修复。

93.Oracle 启动中,spfile.ora、init<SID>.ora、 spfile<SID>.ora 这三个文件正确的先后顺序是 什么?
启动数据库使用 startup 命令,Oracle 将会按照以下顺序在缺省目录中搜索参数文件: spfile.ora、spfile.ora、init<SID>.ora

94.说明 Oracle 数据库逻辑备份和物理逻辑备 份的方式。
Oracle 备份包括逻辑备份和物理备份 1)逻辑备份 数据库的逻辑备份包含只读一个数据库记录和将记录写入文件 a.输出(Export)输出可以是整个数据库、指定用户或指定表 b.输入(Import)输入将输出建立的二进制转储文件读入并执行其命令 2)物理备份 物理备份包含拷贝构成数据库的文件而不管其逻辑内容。 Oracle 支持两种不同类型的物理文件备份:脱机备份(offline backup)和联机备份 (online backup) a.脱机备份:脱机备份用在当数据库已正常关闭,数据库处于“offline”时,要备 份下列文件: 所有数据文件、所有控制文件、所有联机日志、init.ora(可选的)

b.联机备份:联机备份可用来备份任何运作在 archivelog 方式下的数据库。在这种 方式下,联机日志被归档,在数据库内部建立一个所有作业的完整记录。联机备份过程 具有强有力的功能: 1.提供了完全的时间点(point-in-time)恢复 2.在文件系统备份是允许数据库保持打开状态

95.有 2 个类 cat 和 WriteCat,代码如下:
Public class Cat{ Protected static String color=”random”; Public Cat(){} Public void showCatColor(){ System.out.println(“Cat+”+color); } Public static void showCatColor(){ System.out.println(“Cat+”+color); } } Public class WriteCat extends Cat{ Protected static String color=”write”; Public WriteCat(){ Super(); } Public void showCatColor(){ System.out.println(“WriteCat+”+color); } Public static void showCatColor(){ System.out.println(“WriteCat+”+color); } } 请分析下面各段程序的运行结果 A.WriteCat writecat=new WriteCat(); Cat cat=writecat;act.showCatColor(); B.Cat act=new Cat(); WriteCat writeCat=(WriteCat)ca;cat.showColor;cat.showCatColor(); C.Cat cat=new WriteCat(); WriteCat writecat=(WriteCat)cat; cat.showColor();cat.showCatColor();
A 段执行结果:Cat::random;WriteCat:write B 端执行结果:会抛出 java.lang.ClassCastException 异常 C 端执行结果:Cat:random;WriteCat:write

96.说说下面语句是否有错误,或可能出现的错 误,并指出错误,或是缺陷在哪里?
Public class Myfile implements Runnable{ Public void run(){ While(true){ Try{ FileReader fr=new FileReader(new File(“a.txt”)); String line=fr.readLine(); System.out.println(line); }cache(Exception e){ E.p......; } Sleep(1000); } } }
1.fr.readLine()没有这个方法 2.Sleep(1000)需要用 Thread.sleep(1000);

97.判断下列语句是否正确,如果由错误,请指 出错误所在?
List<Short> a=new ArrayList<Short>(); a.add(5); 错误,5 的默认封装类型为 int 性,需要强转为 short 型 a.add((short) 5);

98.判断下列语句是否正确,如有错误,请指出 错误所在?
Void foo(final int[]arg){ If(arg.leength>1){ Arr[0]=5; } }
正确

99.判断下列语句是否正确,如果有错误,请指 出错误所在?
Interface A{ Int add(final A a); } Class B implements A{ Long add(final A a){ Return this.hashCode()+a.hashCode(); } }
返回值不是 long 类型

100.指出下面才程序运行的结果
publicclass A { static{ System.out.println("a"); } public A(){ System.out.println("x"); } } publicclassBextends A{ static{ System.out.println("b"); } public B(){ System.out.println("y"); } } publicclass Test { publicstaticvoid main(String[] args) { A ab=new B(); ab=new B(); } } 输出结果为:a 、b 、x 、y 、 x 、y (类的加载初始化)

101.下列代码的输出结果是什么?
publicclass MyFor { publicstaticvoid main(String[] args) { int i;int j; outer:for ( i = 1; i < 3; i++) inner:for ( j = 1; j < 3; j++){ if (j==2) { continue outer; } System.out.println("Value for i="+i+"Value for j="+j); } } } 输出结果为:Value for i=1 Value for j=1 Value for i=2 Value for j=1

102.查看下面的代码, 写出可以使程序正常执行 的修改方法
1.publicclass MyClass { 2. static String s1; 3. String s2; 4. publicstaticvoid main(String[] args) { 5. String s3; 6. System.out.println("s1="+s1); 7. System.out.println("s2="+s2); 8. System.out.println("s3="+s3); 9. } 10.} 删除第 7 行和第 8 行或者将第 3 行改为 static String s2;将第 5 行改为 String s3=””;

103.为了显示 myStr=23 这样的结果, 写在控制 台输入的命令
publicclass MyClass { publicstaticvoid main(String[] args) { String s1=args[0]; String s2=args[1]; String s3=args[2];

System.out.println("myStr="+s2+s3); } } Java MyClass 1 2 3 4

104.写出下面代码的执行结果
publicclass Test { staticvoid aMethod(StringBuffer sf1,StringBuffer sf2){ sf1.append(sf2); sf2=sf1; } publicstaticvoid main(String[] args) { StringBuffer sf1=new StringBuffer("A"); StringBuffer sf2=new StringBuffer("B"); aMethod(sf1, sf2); System.out.println(sf1+";"+sf2); } } AB;A

105.第 3 行中生成的 object 在第几行执行后成 为 garbage collection 的对象?
1.publicclass Test { 2. public StringBuffer aMethod(){ 3. 4. 5. 6. 7. 8. 9. } StringBuffer sf=new StringBuffer("Hello"); StringBuffer[] sf_arr=new StringBuffer[1]; sf_arr[0]=sf; sf=null; sf_arr[0]=null; return sf;

10.}
第 7 行成为 garbage collection 的对象。

106.写出下面代码执行后的结果
publicclass Test { publicstaticvoid main(String[] args) { Vector v1=new Vector(); v1.addElement("Hello"); v1.addElement(new Float(3.14f)); v1.addElement(10); System.out.println(v1.elementAt(0)+":"+v1.elementAt(1)+":"+v1.el ementAt(2); } } 输出结果为:Hello:3.14:10

107.写出执行下面代码后的正确结果
publicinterface MyDB { publicvoid getConnection(); class MyDBDriver implements MyDB{ @Override publicvoidgetConnection() { System.out.println("getConnection()"); } } } publicclass MyClass { publicstaticvoid aMethod(MyDB db){ db.getConnection(); } publicstaticvoid main(String[] args) { MyDBDriver db_driver=new MyDBDriver(); aMethod(db_driver); } } 输出结果为:getConnection()

108.下列程序运行的结果是?
publicclass A { class Dog{ private String name; privateintage; privateintstep; Dog(String s,int a){ name=s; age=a; step=0; } publicvoid run(Dog fast){ fast.step++; } } publicstaticvoid main(String[] args) { A a=new A(); Dog d=a.new Dog("Tom", 3); d.step=25; d.run(d); System.out.println(d.step); } } 执行结果是:26

109.请看下列程序,运行结果是
publicclass Super { inti=10; Super(){ print(); i=20; } void print(){ System.out.println(i); } } publicclass Sub extends Super{ intj=30; Sub(){ print(); j=40;

} void print(){ System.out.println(j); } publicstaticvoid main(String[] args) { System.out.println(new Sub().j); } } 执行结果为:0 30 40

110.getSomeThing() 果?











IllegalArgumentException 会 发 什 么 样 的 结

void makeConnection(String url){ try { getSomething(); } catch (NullPointerException e) { System.out.println("Invalid URL"); return; }catch(Exception e){ System.out.println("Exception"); } } 发生异常:输出 Exception

111.Tomcat 服务器的默认端口是多少?怎样修 改 tomcat 的端口?
默认端口为 8080,可以通过 server.xml 的 Connector 元素的 port 属性修改端口号。

112.多线程的一种实现方法, 都是什么?同步的 方法有几种?都是什么?
多线程有两种实现方法:继承 Thtead 类或者实现 Runnable 接口 实现同步也有两种方法:一种是同步方法,另一种是同步代码块。 同步方法是在方法返回类型前面奖赏 synchronized 关键字 同步代码快是 synchronized(这里写需要同步的对象){.....}

113.谈一下聚簇索引和非聚簇索引的区别以及 各自的优缺点
聚簇索引:表中存储的数据按照索引的顺序存储,检索效率比普通索引高,但对数据新增/ 修改/删除的影响比较大 非聚簇索引:不影响表中的数据存储顺序,检索效率比聚簇索引,对数据新增/修改/删除的 影响很小

114.死锁的必要条件?怎么克服?
产生死锁的四个必要条件: 互斥条件:一个资源每次只能被一个进程使用 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 不剥夺条件:进程已获得的资源,在未使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个是死锁的必要条件:只要系统发生死锁,这些条件必然成立,二只要上述条件之一不 满足,就不会发生死锁。 死锁的解决方法: a.撤销限于死锁的全部进程 b.逐个撤销限于死锁的进程,直到死锁不存在 c.从限于死锁的进程中逐个强迫放弃所占用的资源,知道死锁小时 d.从另外一些进程哪里强行剥夺足够数量的资源分配给死锁,以接触死锁状态。

115.描述重做与回滚的认识
重做日志生成日志文件,是为将来恢复数据使用的。 回滚段保存未提交数据,是为支持事务而其作用的。

116.索引组织表,聚簇表的用途
索引组织表: 数据按主码存储和排序, 同索引结构一样, 不过数据直接存储于主码后面。 使用与信息检索、空间和 OLAP 程序。 索引组织表的使用情况: a.代码查找表 b.经常通过主码访问的表 c.构建自己的索引结构 d.加强数据的共同定位,要数据按特定顺序物流存储 e.经常用 between...and...对主码或唯一码进行查询。数据物理上分类查询。如一张订单表, 按日期装载数据,想查单个客户不同时期的订货和统计情况。 索引聚簇表: 索引聚簇表相关的表共享统一数据块中的相同列, 并把相关数据存储中同

一个数据块上。创建索引聚簇表中最重要的是对 SIZE 参数有很好的估量,否则聚簇将会降 低空间利用,降低效率。 使用索引聚簇表的注意点: a.如果表中数据由大量 DML 数据的话, 那么聚簇将不适用, 因为会消极地影响到 DML 性能。 b.聚簇中,全表扫描将受到影响。这是因为将扫描聚簇中不同的数据,额外增加很多无用的 数据。 c.如果经常 Truncate 表和装载表的话,聚簇将不适用。聚簇中的表无法被 Truncate 的,这是 因为每块中不只是存储一张表的数据。SQL>truncate table emp; ORA-03292:table to be truncated is part of a cluster. d.如果大部分是读取操作,且通过聚簇码索引或聚簇表中其他索引来读取的话,聚簇将会比 较适用。

117.消耗资源的 SQL 的定位方法
Select sql_text from v$sql where disk_reads >1000 or (executions > 0 and buffer_get/executions>30000); SELECT * FROM (SELECT sql_text,buffer_gets,disk_reads from v$sql ORDER BY buffer_gets,disk_reads DESC) WHERE ROWNUM<=10;

118.对触发器的认识
触发器是表上的程序,只要提供数据添加、修改、和删除后的处理方法,可以用来检查 数据及进行数据更新,也可以分担一些前端应用程序撰写的逻辑规则。用场景:触发器可以 查询其他表,而且可以包含复杂的 SQL 语句。他们主要用于强制复杂的业务规则或要求。 触发器的主要应用场合概括起来讲有以下几种: 1)当向一张表中添加或删除记录时,需要在相关表中进行同步操作。比如,当为应用系统添 加一个系统用户时, 需要同时向权限表中添加该用户的缺省权限, 此时就编写系统用户表的 触发器在添加记录动作时触发。 2)当表上某列数据的值与其他表中的数据有关联时。比如,当客户进行欠款消费,可以生成 订单时通过设计触发器判断客户的累计欠款是否超出了最大限额。 3)当需要对某张表进行跟踪时。比如,当人事表中有人离职时,第一时间通知或更改相关标 的值。

119.对于 ORA-01555 错误的认识
ORA-01555 错误的产生:一致性读(Consistent Get)和延迟块清除(Delayed Block Cleanout)

120.将 oracle 数据库更改为归档模式,写出步 骤
具体步骤如下: 1)以 exp 方式在线备份数据库到指定位置; 2)观察当前数据库是以服务器参数文件(spfile)方式 启动还是一参数文件(pfile)方式启 动:SQL> show parameter spfile;NAME TYPE VALUE---------------------------------------spfile string/home/db/oracle/10g/spfile XXXX.ora value 后有内容,说明数据库以服务器参数文件方 式启动,这里的 spfile 文件对应的裸设备为/dev/vgdata/rspfile(通过查看 /home/db/oracle/pfile/dbs/initSID); 3)关闭所有实例(shutdown immediate); 4)任意选取一个实例,创建参数文件到指定路径:SQL>create pfile=”/home/db/oracle/pfile.ora”; 5)修改 pfile.Ora 文件,添加参数 cluster_database=false; 6)以修改之后的参数文件按 nomount 方式启动数据库:SQL>alert nomount pfile=”/home/db/oracle/pfile.ora”; 7)使数据库以 exclusive 方式启动:SQL>alert database mount exclusive 8)改变归档方式:SQL>alert database archivelog 9)将 pfile 参数中的 cluster_database 重新更改为“true” 10)更新服务器参数文件:SQL>create spfile from pfile=”/home/db/oracle/pfile.ora” 11)关闭数据数据实例:SQL>shutdown immediate; 12)分别在两个节点上启动数据库:SQL>startup; 13)在两个节点上分别检查归档模式是否更改成功:SQL>archive log list;Database log mode Archive Mode Automatic archival Enabled Archive destination /home/db/oracle/10g/dbs/arch Oldest online log sequence 489 Next log sequence to archive 491 Current log sequence 491 完成。

121.EJB 的优点有哪些?(选择两项)
A 技术领先 B 价格低廉 C 性能优越 D 强大的容器支持 答案:CD 两项:性能优越,强大的容器支持

122.以下那些接口能够对 Web 访问者的身份认 证?(选一项)
A.Http Servlet Request B.Http Server Response C.Http Session D.Http Servlet 答案:C.HttpSession

123.无状态会话 Bean、 有状态会话 Bean、 CMP 与 BMP 中,哪一种 Bean 不需要自己书写连接 数据库的代码?
A.无状态会话 Bean B.有状态 Bean C.CMP D.BMP 答案:C.CMP BMP 是在 Bean 中完成对数据库 JDBC 的各种调用 CMP 是由 EJB 容器自动完成对数据库的操作 会话 Bean 主要处理业务逻辑

124.假设 web 应用的文档根目录为 MyApp, 那 么可以从哪里找到 database.jar 文件
A.MyApp 目录下 B.MyApp\images 目录下 C.MyApp\WEB-INF 目录下 D.MyApp\WEB-INF\lib 目录下 答案:D.MyApp\WEB-INF\lib 目录下,web 工程 lib 是放置.jar 文件的地方。

125.从以下哪一个选项中可以获得 Servlet 的初 始化参数
A.Servlet B.ServletContext C.ServletConfig D.GenericServlet 答案:C:ServletConfig,servlet 的生命周期的方法中由一个 init 方法,其中一个重载的 init 方法的参数为 ServletConfig

126.可以获取初始化参数。 一个对象可以用于获 得浏览器发送的请求。
A.HttpServletRequest

B.HttpServletResponse C.HttpServlet D.Http 答案:A.HttpServletRequest 中有一些方法可以获取浏览器发送的请求信息

127.运行 jsp 需要安装什么 web 服务器
A.Apache B.Tomcat C.WebLogic D.IIS 答案:BC Apache 是 PHP 程序运行的服务器,IIS 是.net 程序运行的服务器。

128.如何取得数据源
A.通过 Http B.通过 ftp C.JNDI D.通过 Connection 对象 答案:C.JNDI 在服务器上配置好数据以后,通过 JNDI 技术获得数据源时。

129.下列哪一个接口定义了用于查找、 床架和删 除 EJB 实例
A.Home B.Remote C.Local D.Message 答案:A.Home .remote 接口定义了业务方法,用于 EJB 客户端调用业务方法。Home 接口是 EJB 工程用于创建和移除查找 EJB 实例。

130.在服务器的网络编程中, 解决会话跟踪的方 法有?
A.使用 Cookie B.使用 URL 重写 C.使用隐藏的表单域 D.以上方法都不能单独使用 答案:ABC (

(1.URL 重写就是首先获得一个进入的 URL 请求然后把它重新写成网站可以处理的另一个 URL 的过程 (2.隐藏表单域是在页面级保存信息。与其他用户标准空间的区别是,隐藏表单域不被呈现 在页面中。当页面提交时,隐藏域中的值将被一同发送给服务器端。 (3.Cookie 是以文本存储于计算机中,使用 name-value 匹配。一般用于存储标识用户信息 )

131.与 HttpSessionListener 接口有关的方法 是:
A.sessionInitalizd() B.sessionCreated() C.sessionFinialized() D.sessionDestroyed() 答案:BD

132.关于 JSP 生命周期的叙述, 下列那些为真?
A.JSP 会先解释成 Servlet 源文件,然后编译成 Servlet 类文件 B.每当用户端运行 JSP 时,jspInit()方法都会运行一次 C.每当用户端运行 JSP 时,_jspService()方法都会运行一次 D.每当用户端运行 JSP 时,jspDestroy()方法都会运行一次 答案:AC

133.以下声明正确的是?
A.<xml-stylesheet type=”txt/css” href=”abc.css”> B.<?xml-stylesheet type=”txt/css” href=’abc.css’?> C.<?xml-stylesheet type=”txt/css” href=”abc.css”?> D.<%xml-stylesheet type=”text/css” href=”abc.css”%> 答案:BC 单引号,双引号都可以使用在属性上

134.下列那个为 JSP 的隐含对象
A.Env B.Page C.Jspinfo D.Context 答案:B JSP 有九大内置(隐含)对象 1)request 对象:保存了客户端请求信息 2)Response 对象:生成服务器端响应,然后将响应结果发送到客户端

3)Out 对象:表示输出流,此输出流将作为请求发送到客户端 4)Session 对象:我们写个对象放在 session 对象中,这个对象就在我们的会话中存在 5)Application 对象:我们写个对象放在 application 对象中,这个对象就在整个应用程序中都 存在 6)pageContext 对象:对象相当于当前页面的容器,可以访问当前页面的对象。 7)Page 对象:一般我们使用 Page 指令来代替使用这个对象 8)Exception 对象:用于处理异常 9)Config 对象:一般的我们在页面中的使用很少,一般会在 servlet 中使用

135.下面的哪个不属于 MVC 模式中的对象?
A.Model B.View C.Collection D.Controller 答案:C.Collection 不属于 MVC 模式中的对象,MVC 是三个单词的缩写:模型(Model),视 图(View)和控制(Controller)。MVC 模式的目的是试想 Web 系统的职能分工。Model 层 实现系统中的业务逻辑,通常可以用 javaBean 或是 EJB 来实现。View 层用于与用户的交互, 通常用 JSP 来实现。Controller 层是 Model 和 View 之间共同的桥梁,他可以分派用户的请求 并选择恰当的试图以用于显示, 同时特也可以解释用户的输入并将他们映射为模型层可执行 的操作。

136.要创建一个 EJB, 必须要至少编写那些 java 类和接口?
A.定义远程(或业务)接口 B.定义本地连接 C.定义 Bean 接口 D.编写 Bean 的实现 答案:ABC

137.XML 是一种元素语言,可以用他来描述其 他语言?
A.正确 B.错误 答案:B XML(Extensible Markup Language)即可扩展标记语言,它与 HTML 一样, 都是 SGML(Standard Generalized Markup Language 标准通用标记语言)。XML 是 Internet 环境 中狂平台的,依赖与内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言 XML 是一种简单的数据存储语言, 使用一系列简单的标记描述数据, 而这些标记可以用方便

的方式建立,虽然 XML 占用的空间比二进制数据要占用更多的空间,但是 XML 极其简单易 于掌握和使用。

138.类图用来表示系统中类和类之间的关系, 它 是对系统动态结构的描述?(选择一项)
A.正确 B.错误 答案:B 类图是对系统静态结构的描述

139.哪一个不是 EL 定义的隐式对象?(选择一 项)
A.Cookie B.PageContext C.Attributes D.initParam 答案:C 1)pageContext:JSP 页面的上下文。他可以用于访问 JSP 隐式对象 2)Param : 将 请 求 参 数 名 称 映 射 到 单 个 字 符 串 参 数 值 ( 通 过 调 用 ServletRequest.getParameter(String name)获得)。getParameter(String)方法返回带有特定名称 的参数。表达式${param.name}相当于 request.getParameter(name)。 3)paramValues : 将 请 求 参 数 名 称 映 射 到 一 个 数 值 数 组 ( 通 过 调 用 ServletRequest.getParamter(String name)获得)。它与 param 隐式对象非常相似,但它检索一 个 字 符 串 数 组 而 不 是 单 个 值 。 表 达 式 ${paramvalues.name} 相 当 于 request.getParamterValues(name)。 4)Header:将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name)获得)。表达式${header.name}相当于 request.getHeader(name)。 5)HeaderValus : 将 请 求 头 名 称 映 射 到 一 个 数 值 数 组 ( 通 过 调 用 ServletRequest.getHeaders(String name) 获 得 ) 。 它 与 头 隐 式 对 象 非 常 相 似 。 表 达 式 ${headerValues.name}相当于 request。GetHeaderValues(name)。 6)Cookie:将 cookie 名称映射到单个 cookie 对象。向服务器发出客户端请求可以获得一个或 多个 cookix。 表达式${cookie.name.value}返回带有特定名称的第一个 cookie 值。 如果 qi9ngqiu 包含多个同名的 cookie,则应该使用${headerValues.name}表达式。 7)initParam : 将 上 下 文 初 始 化 参 数 名 称 映 射 到 单 个 值 ( 通 过 调 用 ServletContext.getInitparameter(String name )获得)。 8)pageScope : 将 页 面 范 围 的 变 量 名 称 映 射 到 其 值 。 例 如 : EL 表 达 式 可 以 使 用 ${pageScope.objectName} 访 问 一 个 页 面 范 围 的 兑 现 , 还 可 以 使 用 ${pageScope.objectName.attributeName}访问对象属性。 9)RequestScope 将请求范围的变量名称映射到其值。 该对象允许访问请求对象的属性。 例如: EL 表达式可以使用${requestScope.objectName}访问一个 JSP 请求范围的对象,还可以使用

${requestScope.objectName.attributeName}访问对象属性。 10)sessionScope 将会话范围的变量名称映射到值。该对象允许访问会话对象的属性。 11)ApplicationScope:将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程 序范围的对象。

140.下面那些属于 JSTL 中的表达式操作标签 (选择一项)?
A.<c:out> B.<c:if> C.<c:url> D.<c:catch> 答案:A

141.Struts 框架可以支持以下哪些程序开发语 言(选择一项)?
A.C B.C++ C.Java D.C# 答案:C

142.在 Servlet 处理请求的方式为 (选择一项) ?
A.以进程的方式 B.以程序的方式 C.以线程的方式 D.以响应的方式 答案:C Servlet 采用多线程来处理多个请求同时访问。Servlet 容器维护了一个线程池来服务请求。

143.Javax.Servlet 的包中,属于类的是(选择 一项)?
A.Servlet B.GenericServlet C.ServletRequest D.ServletContext

答案:B ServletContext 和 ServletRequest 是该包下的的接口。

144.以下说法正确的是(选择 2 项)?
A.#CDATA 标记表示该元素包含的数据将被解析器解释 B.#PCDATA 标记表示该元素包含的数据将不被解析器解释 C.#PCDATA 标记表示该元素包含的数据将被解析器解释 D.#CDATA 标记表示该元素包含的数据将不被解析器解释 答案:AC 在 DTD 中,指定某个标签中的内容是字符数据是,使用(#PCDATA)。而制定标签中的某个 属性的类型为字符型时,使用 CDATA,都将被解析器解释。

145.Http 缺省的请求方式是(选择一项)?
A.Put B.Get C.Post D.Trace 答案:B

146.在 XML 中用于注释的符号是 (选择一项) ?
A.<!- -> B.<?- -?> C.<% %> D.<!- -!> 答案:A

147.DTD 与 XML Schema 都是 XML 文档(选 择一项)?
A.正确 B.错误 答案:B

DTD 不是 xml 文档,schema 是 xml 文档。

148.JDBC 中,用于表示数据库练剑的随想是 (选择一项)?
A.Statement B.Connection C.DriverManager D.PreparedStatement 答案:B Statement 和 prepareStarement 都是用于发送和执行 SQL 语句的 DriverManager 用于管理一组驱动程序

149.用于调用存储过程对象的是(选择一项)?
A.ResultSet B.DriverManager C.CallableStatement D.PreparedStatement 答案:C ResultSet 是结果集对象 DriverManager 管理一组驱动程序 PreparedStatement 预编译的,用来发送和执行 SQL 语句的

150.如果没有指定 Cookie 的时候,那么默认的 时效是(选择一项)?
A.一天 B.永不过期 C.会话级别 D.一分钟 答案:C 这是 API 的原文:By default,-1 indicating the cookie will persist until browser shutdow.

151.<?xml

version=”1.0” Customer CDATA

encoding=”GB2312”> <!ELEMENT Customer EMPTY> <!ATTLIST 称 呼 CDATA #IMPLIED 姓 名

#REQUIRED 职 位 CDATA #REQUIRED> 关 于上述 DTD 定义的描述正确的是 (选择一项) ?
A.Customer 元素能包含子元素,并且能为空 B.Customer 元素能包含文本,并且能为空 C.Customer 元素不能包含文本,也不能包含子元素 D.Customer 元素的所有实例的“称呼”属性必须有值,不能为空。 答案:C EMPTY 表示元素不嗯那个好汉文本,也不能包含子元素 #IMPLIED 属性可以没有值 #REQUIRED 属性必须有值

152.实现下列哪一种接口的对象,并不需要在 web.Xml 文件中进行额外的设定,Servlet 容器 就能够回应该对象加入 HTTP 会话所发生的事 件(选择一项)?
A.ServetContextListener B.HttpSessionListener C.HttpSessionAttributeListener D.HttpSessionBindingListener 答案:D HttpSessionListener 只需要设置到 web.Xml 中就可以监听下整个应用中的所有 session 。 HttpSessionBindingListener 必须实例化后放入某一个 session 中,才可以进行监听。

153.下列哪些为 JSP 的小脚本的标签(选择一 项)?
A.<% %>

B.<@ %> C.<%! %> D.<%- %> 答案:A

154.以下部署以 JSP 的标准指定的是(选择一 项)?
A.TaglIb B.Include C.Import D.Page 答案:C import 是 page 指令的一个属性

155.对于每一个网站访问用户都要访问的变量, 应该将它设为什么变量(选择一项)?
A.Session B.Request C.Response

D.Application
答案:D Application 是应用程序变量

156.EJB 类库存在于 Java 的哪个版本中(选择 一项)?
A.J2SE B.J2EE C.J2ME D.J2NE 答案:B Java 分为三个体系 JavaSE(Java2 Platform Standard Edition ,Java 平台标准版) JavaEE (Java2 Platform Enterprise Edition, Java 平台企业版) JavaME(Java2 Platform Micro Edition,Java 平台微型版) EJB 属于 JavaEE 版本

157.察看下列 JSP 内容
<html><body>

<% for(int i=0;i<3;i++){%> Out.print(i*2) <%}%> </body></html> 当这个 JSP 被运行是,其结果是什么(选择一项)? A.此 JSP 因为语法错误,无法运行 B.显示出 0,2,4 C.显示出 0,2,4,6 D.显示出 out.print(i*2) out.print(i*2) out.print(i*2) 答案:D

158.假设 A.jsp 内设定一个<jsp:userBean>元 素 : <jsp:userBean id=”bean1” class=”com.it.beanMyBean” />下列哪一个为 真(选择一项)?
A.bean1 的存取范围(scope)默认为 application B.在 HTTP 会话内可以存取 bean1 C.只有在 A.jsp 内可以存取 bean1 D.在 A.jsp 所属 web 应用程序内均可以存取 bean1 答案:C bean1 的存取范围(scope)默认为 page

159.在 MVC 设计模式中 JavaBean 的作用是 (选择一项)?
A.Controller B.Model C.业务数据的封装 D.View 答案:B

160.在 J2EE 中属于 Web 的组件有(选择一 项)?
A.HTML B.EJB C.Applet

D.JSP 答案:D

161.单元测试是在软件开发过程中的那个阶段 完成的(选择一项)?
A.可行性研究和计划 B.概要设计 C.实现 D.使用和维护 答案:C

162.在 J2EE 的 web 应用中,编译后的.class 文件存放的目录为(选择一项)?
A.classes 目录 B.Images 目录 C.Jar 目录 D.任意位置 答案:A

163.HttpServlet 中,用来处理 POST 请求的方 式是(选择一项)?
A.doHead B.doGet C.doPost D.doPut 答案:C

164.DOM 中 XMLDOMnodelist 的 length 属性 的表示是(选择一项)?
A.该对象中文本字符的长度 B.该对象中元素节点的数量 C.该对象中节点的数量 D.该对象中文档对象的数量 答案:A length 属性返回注释节点中的文本长度,以字符数计算

165.如何创建 Cookie(选择一项)?
A.使用 new Cookie 语句 B.调用 response.addCookie 方法 C.使用 Cookie 的 setMaxAge 方法 D.setCoolie 方法 答案:B

166.关于 Web 应用程序,下列说法错误的是?
A.WEB-INF 目录存在于 web 应用的根目录下 B.WEB-INF 目录与 class 目录平行 C.Web.xml 在 WEB-INF 目录下 D.Web 应用程序可以打包为 war 文件 答案:B

167.有关 Servlet 的声明周期说法正确的有?
A.Servlet 的生命周期由 Servlet 实例控制 B.Init()方法在创建完 Servlet 实例后对其进行初始化,传递的参数为实现 ServletContext 接空 IDE 对象 C.Service()方法响应客户端发出的请求 D.Destroy()方法释放 ervlet 实例。 答案:C Servlet 生命周期是指创建 Servlet 实例后响应客户端请求直至销毁的全过程 Servlet 生命周期的三个方法:init()--service()--destroy() Servet 生命周期的各个阶段:实例化:Servlet 容器创建 Servlet 类的实例对象 初始化:Servlet 容器调用 Servlet 的 init() 服务:如果请求 Servlet,则容器调用 service()方法 销毁:销毁实例之前调用 destroy()方法

168.以下 web.xml 片段,正确的声明 servlet 上下文参数
A.<init-param><param-name>MAX</param-name><param-value>100<param-value></init-para m> B.<context-param><param name=“MAX”value=“100”/></context-param> C.<context><param name=“MAX”value=“100”/></context> D.<context-param><param-name>MAX</param-name><param-value>1000</param-value></con

text-param> 答案:A

169.以下那些可用于检索 session 属于 userid 的值
A.session.getAttribute(“userid”) B.Session.setttribute(“userid”) C.request.getParameter(“userid”) D.request.getAttribute(“userid”) 答案:A

170.下列 JSP 代码
<html> <body> <% For(int i=0;i<10;i++){ //1 } %> </body> </html> 以下那些语句可放置在//1 出,不会发生编译错误。 A.<%% =i> B.<b>i</b> C.%><%=1%><% D.不写任何内容 答案:CD

171.考虑下面两个 JSP 文件代码片段:
test1.jap: <HTML> <BODY> <% pageContext.setAttribute(“ten” ,new Integer(10);)%> //1 </BODY> </HTML> Test2.jsp:数字为:<%=pageContext.getAttribute(“ten”)%> 以下那些放置在 test1.jsp 中的//1 处,当请求 test1.jsp 时正确输出 test2.jsp 中的内容。

A.<jsp:include page=”test2.jsp” /> B.<jsp:forword page=”test2.jsp” /> C.<%@ include file=”test2.jsp”%> D.由于 pageContext 对象的 scope 属性为 page,所有 test2.jsp 不能访问 test1.jsp 定义的属性 答案:C pageContext。setAttribute(“ten”,new Integer(10))能取到的范围是 page,也就是当前页面。 <%@include file=””%>:编译时包含,静态的,JSP 引擎将对所包含的文件进行语法分析。 <jsp:include page=””/>:运行时包含,静态和动态的都可以,JSP 引擎不对所包含的文件进行 语法分析,只获得处理的结果。

172.有关 JSP 隐式对象,以下哪些描述正确。
A.隐式对象是 web 容器加载的一组类的实例,可以直接在 JSP 页面使用 B.不能通过 config 对象获取 ServletContext 对象 C.Response 对象通过 sendRedirect 方法实现重定向 D.只有在出错处理页面才有 exception 对象 答案:ACD 可以通过 config 对象获取 ServletContext 对象

173.考虑下面 JSP 文件代码片段:
<HTML><body> <jsp:include page=”test2.jsp”> <jsp:param name=”username” value=”accp” /> </jsp:include> </body></html> 以下那些代码片断放置在 test2.jsp 中不会导致错误。 A.<jsp:getParam name=”username” /> B.<jsp:include param=”username” /> C.<%=request.getParameter(“username”)%> D.<%=request.getAttribute(“username”)%> 答案:C

174.以下是 login.jsp 文件的代码片段:
<%@page isELIgnored=”false”%> <html><body> <form action=”login.jsp” method=”get ”> <input type=”text” name=”name” value=”${parm[‘name’]}” /> <input type=”submit” value=”提交”> </form> <p>

用户名为:${param.name} </body></html> A.发生运行错误 B.页面会出现一文本框,并且文本框内容为${parm[‘name’]} C.当用户输入名字并单击提交按钮时,在同一页面中的“用户名为:”字样后面会显示用户 输入的内容。 D.当用户输入名字并单击提交按钮时,在同一页面中的“用户名为:”字样后面会显示 ${param.name} 答案:C 在每个 JSP 中也可以指定是否该 JSP 使用 EL。在 page directive 中的 isELIgnored 属性用来指 定是否忽略,格式为:<%@page isELIgnored=”true/false”%>

175.下面代码片段在浏览器中输出的结果为?
<c:set var=”myVar ” scope=”session”>2+3</c:set> <c:out value=”${myVar}” /> A.0 B.5 C.2+3 D.无输出 答案:C <c:set>标签主要用于将变量保存到 JSP 的会话中或 JavaBean 的属性中。 <c:set> 的 语 法 格 式 为 : <c:set value=”value” var=”varName” [scope=”{page/request/session/application}”] />上述的表达式实现的功能是将 value 的值存储 至范围为 scope 的 varName 变量中,还可以将 value 的值存储至 target 对象的属性中,如果 题中的 2+3 改为${2+3}那么结果就是 5

176.doAfterBody()方法是在那个接口定义的?
A.Tag B.IterationTag C.BogyTag D.TagSupport 答案:B

177.编写一个 Filter,除继承 HttpServlet 类外 还需要?
A.继承 Filter 类 B.实现 Filter 接口 C.继承 HttpFilter 类

D.实现 HttpFilter 接口 答案:B

178.以下哪个 hibernaye 主键生成策略是实现 主键按数值顺序递增的?
A.Increment B.Identity C.Sequence D.Native 答案:A icrement 生成策略:当 hibernate 准备在数据库表中插入一条新记录时,首先从数据库 表中获取当前主键字段的最大值,然后在最大值基础上加 1,作为当前持久化对象的标识符 属性值。 这种策略即 increment 生成策略, 用其生成的标识符属性的类型可以是 long、 short、 int 及其封装类的类型 Indentity 生成策略:在 MS SQLServer、MySQL 和 DB2 等数据库中可以设置表中的某一 个字段的数据自动增长,identity 生成策略通过这种方式为当前记录获取主键值的同时为持 久化对象赋予标识符属性值。 Sequence 生成策略: 在 oracle、 DB2 和 PostgreSQL 等数据库中创建一个序列 (sqquence) , 然后 Hibernate 通过该序列为当前记录获取主键值进而为持久化对象赋予标识符属性值。 Native 生成策略:由 Hibernate 根据所使用的数据库支持能力从 identity、sequence 或者 等生成策略中选择一种。

179.在 jsp 中,page 指令的什么属性用来引入 需要的包或类。
A.Extends B.Import C.Language D.contentType 答案:B page 指令属性简要介绍: Language=”java”:声明脚本语言的种类,暂时只能用 java Extends=”package.class”:标明 JSP 编译时需要加入的 Java Class 的全名,但是得慎重的使用 它,它会限制 JSP 的编译能力 Import=”{package.class|package.*},....”:需要导入的 java 包的列表,这些包就作用于程序段, 表达式,以及声明。 下 面的包 在 JSP 编译 时已 经导入 了, 所以就 不需 要指明 了: java.lang.* javax.servlet.* javax.servlet.jsp.* javax.servlet.http.* session=”true/false”设定客户是否需要 HTTPSession,如果它为 true,那么 Session 是有用的。 如果它有 false,那么你就不使用 session 对象,以及定义了 scope=session 的<jsp:userBean>元

素,这样的使用会导致错误,缺省值是 true。 Buffer=”none/8kb/sizekb”: buffer 的大小被 out 对象用于处理执行后的 JSP 对客户浏览器的输 出。缺省值是 8kb. autoFlush=”true/false”:设置如果 buffer 溢出,是否需要强制输出,如果其值被定义为 true (缺省值),输出正常,如果它被设置为 false,如果这个 buffer 溢出,就会导致一个意外 错误的发生,如果你把 buffer 设置为 none,那么你就不能把 autoFlush 设置为 false. isThreadSafe=”true/false”:设置 JSP 文件是否能多线程使用。缺省值是 true,也就是说,JSP 能够同时处理多个用户的请求,如果设置为 false,一个 JSP 只能一次处理一个请求。 Info=”text”:一个文本在执行 JSP 将会被逐字加入 JSP 中,你能够使用 Servlet.getServletInfo 方法取回 errorPage=”relativeURL”:设置处理异常事件的 JSP 文件。 isErrorPage=”true/false”:设置此页是否为出错页,如果被设置为 true,你就能使用 exception 对象。 contentType=”mimeType[;charset=characterSet]” |”text/html;charset=ISO-8859-1”:设置 MIME 类型。缺省 MIME 类型是:text/html,缺省字符集为 ISO-8859-1。

180.正则表达式 “\d+\..?\d*” 在匹配下列字符串 时结果是失败的是?
A 12.5 B 1.25 C 以上都成功 D 以上都失败 答案:B \d+表示可以出现 1 次或是 n 次数字 \..?表示可以“.”可以出现一次,也可以不出 现 \d*表示可以出现 0 次或是 n 次数字

181.下列没有直接采用 XML 技术的是?
A.UDDI B.SOAP C.AJAX D.DCOM 答案:D DOCM(分布式组件对象模型)是一系列微软的概念接口和程序接口,利用这个接口,客户端 程序对象能够请求来自网络中另一台计算机的服务器程序对象。 DCOM 基于组件对象模型 (COM) , COM 提供了一套允许同一台计算机上的客户端和服务器之间进行通信的接口 (运 行在 Windows95 或其后的版本上)

182.下列可以用来解析 XML 的是?
A.CSS B.DTD C.SAX D.XSL 答案:C Java 解析 xml 文件四中方式:SAX、 DOM、 JDOM 、DOM4J

183.下面关于 XML 叙述不正确的是?
A.XML 标记必须关闭 B.XML 是大小写敏感的 C.XML 文件只能跟 DTF 文件一块使用 D.XML 和 XSL 结合可以在浏览器上显示 答案:C

184.在不指定特殊属性的情况下, 哪几种 HTML 标签可以手动输入文本?
A.<textarea></textarea> B.<input type=”text”/> C.<input type=”hidden” /> D.<div></div> 答案:AB

185.关于 IFrame 标书正确的有?
A.通过 IFrame,网页可以嵌入其他网页的内容,并可以动态更改 B.在相同域名下,内嵌的 IFrame 可以获取外层网页的对象 C.在相同域名下,外层网页脚本可以获取 IFrame 网页内的对象 D.可以通过脚本调整 IFrame 的大小 答案:CD IFrame 元素也就是文档中的文档,或者好像浮动的框架 frame 通过 iframe 对象所在页面的对象模型,可以访问 iframe 对象的属性,但不能访问其内容。

186.关于表格表述正确的有?
A.表格中可以包含 Tbody 元素 B.表格中可以包含 caption 元素

C.表格中可以包含多个 Tbody 元素 D.表格中可以包含 colgroup 元素 E.表格中可以包含 col 元素 答案:ACDE Caption 标签用于定义一个表格标题。<caption>标签只能出现在 table 标签中,且必须紧随 table 标签之后,每个表格只能定义一个标题。 使用<tbody>标签,可以将表格分为一个单独的部分。<tbody>标签可以将表格中的一行或者 多行合成一组。 利用<colgroup>标签可以把表格按列划分为若干组每组可包含一列或几列,然后可以对各组 分别设置格式。 通常一个列组的各列格式是相同的,如果列与列有差异,可通过在组内加入<col>标签进行 设置。<col>标签只能在<table>标签和<colgroup>标签中使用。

187.在 DHTML 中把整个文档的各个元素作为对 象处理的技术是?
A.HTML B.CSS C.DOM D.Script(脚本语言) 答案:C DOM 文档对象模型

188.下面属于 JavaScript 对象的有?
A.Window B.Document C.Form D.String E.Navigator 答案:ACE

189.Servlet 程序的入口点是?
A.init() B.Main() C.Service() D.doGet() 答案:C

190.不能在不同用户之间共享数据的方法是?
A.通过 cookie B.利用文件系统 C.利用数据库 D.通过 ServletContext 对象 答案:A

191.模块内聚度越高, 说明模块内各成分彼此结 合的程度越?
A.松散 B.紧密 C.无法判断 D.相同 答案:B 内聚度是指模块内部各成分之间的联结强度,内聚度越高,越容易理解、修改和维 护, 但内聚度本身是主观的、 非形式化的概念, 程序人员很难客观的评估一个模块的内聚度, 为此, 人们开发出许多度量准则用于量化模块的内聚度[1-3],为程序设计人员开发出高内聚 度的模块提供指南。

192.软件需求分析阶段的输出主要是(单选)?
A.需求说明书 B.开发计划 C.可执行报告 D.设计说明书 答案:A

193.以下选项不是项目经理的职责的(单选)?
A.需求分析 B.计划 C.计划跟踪 D.质量管理 答案:D 质量管理是 SQA(软件质量保证)人员的职责

194.配置管理能起到以下那些作用?(多选)
A.版本管理 B.变更管理

C.需求管理 D.测试管理 答案:AB

195.下面的那些方法在 Servlet 的 response 的 输出流在 URL 中保存 SessionID?
A. The encodeURL method of the HttpServletRequest interface. B. The encodeURL method of the HttpServletResponse interface. C. The rewriteURL method of the HttpServletRequest interface. D. The rewriteURL method of the HttpServletResponse interface. 答案:B

196.看下面这个类
package com.it.Test; import javax.servlet.ServletContextAttributeEvent; import javax.servlet.ServletContextAttributeListener; publicclass IfAttributsChanged implements ServletContextAttributeListener{ publicvoid attributeAdded(ServletContextAttributeEvent scab) { System.out.println("加入一个属性"); } publicvoid attributeRemoved(ServletContextAttributeEvent scab) { System.out.println("删除一个属性"); } } 关于 IfAttributsChanged 类的叙述,下面哪一个为真(选择一项)? A.此类可以成功编译 B.此类无法成功编译,原因是缺少 attributeChanged()方法 C.此类无法成功编译,原因是缺少 attributeReplaced()方法 D.此类无法成功编译,原因是缺少 attributeUpdated()方法 答案:C

197.Oracle 数据库表空间与用户的关系是?
A.一对一 B.一对多 C.多对一 D.多对多 答案:D 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用

198.Oracle 数据库表空间与数据文件的关系描 述正确的是?
A.一个表空间只能对应一个数据文件 B.一个表空间可以对应对个数据文件 C.一个数据文件可以对应多个表空间 D.表空间与数据文件没有任何关系 答案:B 吧表空间与数据文件发生关系, 数据文件是物理的, 一个表空间可以包含多个数据 文件,而一个数据文件只能隶属一个表空间。

199.判断这个 PLSQL 代码块(选择一项)?
Begin For i in 1...6 loop If i=2 or i=3 then null; Else Insert into example(one) values(i); End if; Rollback; End loop; Commit; End; 有多少行被插入到表 example? A.0 B.1 C.2 D.3 答案:A 在循环结束前执行了 RollBack 语句,数据被回滚。

200.你判断下面语句,有什么作用?
Grant update on inventory to joe with grant option; A.一个系统权限被授予用户 JPE B.一个对象权限被授予用户 JOE C.用户 JOE 被授予在这个对象上的所有权限 D.一个系统权限和一个对象权限被授予用户 JOE 答案:B with admin option 只能在赋予 system privulege 的时候使用; With grant option 只能在赋予 object privilege 的时候使用

201.表 classes 和表 schedule 结果如下
Classes: Id number(9) ,class_name varchar2(20) ,teacher_id number(9) Schedule: Class_time date ,class_id number(9) 你建一个视图显示每一科的课名、课时,并按教师 ID 排序,判断下面语句将返回何种结果 (单选)? Create view class_schedule as Select c.class_name,s.class_time from classes c,schdule s where c.id=s.class_id; A.语句创建视图 class_schedule 且可产生预期结果。 B.语句创建 class_schedule 但不能产生预期结果。 C.语法错误,因为视图不可基于连接查询 D.语法错误,因为语句未 3 包含 order by 子句。 答案:B 上述视图显示每一课的课时、课名,但是没有按教师 ID 排序

202.Oracle 数据库中,在 SQL 语句中连接字符 创的方法是那个(单选)?
A.Cat B.Concat C.Join D.+ 答案:B

203.表 Teacher 包含如下字段:
列名 可否为空 数据类型 Teacher_id not null number(9) Name varchar2(25) Salary number(7,2) Subject_id not null number(3) Subject_descriptiom varchar2(2) 你需要将理科教师的工资上浮 8%, 理科教师的 subject_id 是 001, 你需要用哪一个语句实现 (单选)? A.update teacher set salary=salary*1.08 where subject_descriptiom like “science”; B.update teacher set salary=salary+(salary*.08) where subject_descriptiom like “science” and subject_id=001; C.update teacher set salary=salary*1.08 where subject_id=001; D.update teacher set salary=salary+(salary*.08) where subject_descriptiom like “science” or subject_id=001;

答案:C

204.定义游标如下:
Declare cursor query_cursor(v_salary) is select last_name,salay,dept_no salary>v_salary; 这条语句为什么会有错误? A.在游标定义中不允许出现 where 子句 B.Select 语句中缺少 into 子句 C.参数未指定为变量数据类型 D.定义 cursor 的语法写错了 答案:C from employee where

205.在 PLSQL 块的那部分可以对初始标量赋予 新值(单选)?
A.结尾部分 B.开头部分 C.执行部分 D.声明部分 答案:C

206.哪句可以实现显示 id 和 description, 条件 满足订单时间在 January 1,1997 以前的,且单 价小于 1.00 或者大于 5.00 的,结果用订单事件 降序(单选)?
A.select id_number,description from inventory where price in (1.00,5.00) or order_date<’01-JAN-97’ order by order_date desc; B.Select id_number,description fron inventory where price between 1.00 and 5.00 or order_date<’01-JAN-1997’ order by order_date; C.Select id_number,description from inventory where price<1.00 or price<5.00 and order_date<’01-Jan-97’ order by order_date asc; D.Select id_number,description from inventory where (price<1.00 or price >5.00) and order_date>’01-JAN-1997’ order by order_date desc; 答案:D

207.判断下面的句子,将返回什么值?(单选)
Select id_number,description,price from inventory where manufaceture_id in (select manufacture_id from inwentory where price>8.0 or quantity>1000); A.返回单价大于 8.00 且数量大于 1000 的存货的货号、种类、单价信息。 B.返回单价大于 8.00 或者数量大于 1000 的存货的货号、种类、单价信息。 C.返回单价大于 8.00 或者数量大于 1000 且有制造商号的存货的货号、种类、单价信息。 D.返回单价大于 8.00 或者数量大于 1000 的制造商的所有存货的货号、种类、单价信息。 答案:C

208.考虑下列声明,哪些不合法的是?
A.declare v_name,v_dept varchar2(14); B.Declare v_test number(5); C.Declare v_maxsalary number(7,2)=5000; D.Declare v_joindate boolean :=sysdate 答案:ACD A.v_name 没有数据类型 C.:=是赋值 D.v_joindate 是 boolean 类型,sysdate 是 date 类型

209.关于 PLSQL 块的执行部分下列说法正确的 是(单选)?
A.PLSQL 表达式可以包含分组函数 B.PLSQL 表达式不可以包含 SQL 函数 C.在 SQL 语句中部分分组函数可用 D.以上都不对 答案:A

210.表(teater)包含以下列
Id number(7) PK Salary number(7,2) Subject_id number(7)普暗淡以下两个 SQL 语句: (1)select round(sum(salary),-2) from teacher; (2)Select subject_id,round((salary),-2) from teacher group by subject_id; 有什么不同的结果(单选)? A.语句 1 将返回每个老师一个结果 B.语句 2 将返回多个结果

C.结果相同,显示不同 D.将有一个句子产生错误 答案:B 语句 1 将会返回一个结果,就是所有老师的工资和,使用了四舍五入函数 语句 2 是按照 subject_id 进行分组,那么分几组就会有几个结果。

211.游标的哪一种属性指示 fetch 语句是否从活 动集中返回行,如未能返回行,则此属性的值为 true?
A.%found B.%notfound C.%rowcount D.%isopen 答案:B %found 布尔型属性,当最近一次读记录时成功返回,则值为 true %notfound 布尔型属性,与%found 相反 %isopen 布尔型属性,当游标已打开时返回 true %rowcount 数字型属性,返回已从游标中读取的记录数

212.哪一子句可实现 select 语句查询员工平均 工资小于 5000 的北门部门信息(单选)?
A.group by dept_id where avg(sal)<5000 B.Group by avg(sal) having avg(sal)<5000 C.Group by dept_id having avg(sal)<5000 D.Group by avg(sal)<5000 答案:C 使用 having 过滤分组

213.在 PLSQL 中使用哪几种语句来对变量进行 赋值(选择三项)?
A.:= B.Select into C.Fetch into D.= 答案:ABC

214.你试图用下面句子查询数据(选择一项)?
Select 100/nvl(quantity,0) from inventory;为何 quantity 为 null 空值时,将导致出错? A.表达式企图被空值除 B.换函数参数数据类型不一致 C.空值不能被装换成实际值 D.表达式企图被零除 答案:D nvl(表达式 1,表达式 2)这个函数的作用是如何使表达式 1 的值为 null,那么取表达 式 2 的值。

215.PLSQL 的那一部分实现对数据的操作(单 选)?
A.头部分 B.外列部分 C.执行部分 D.声明部分 答案:C

216.下列哪个集合操作符返回两个查询所选择 的所有的行?(单选)
A.Union B.Union all C.Union only D.Connect by 答案:B Union 集合操作符返回两个查询所选择的去除重复行

217.在 Oracle 中,当需要使用显式游标更新或 者删除有表中的行时,update 或 delete 语句中 必须使用什么子句?
A.where current of B.Where cursor of C.For update D.For cusor od 答案:C

为了对正在处理(查询)的行不被另外的用户改动,ORACLE 提供一个 for Update 子句 来对所选择的行进行锁住。该需要迫使 Oracle 锁定游标结果集合的行,可以防止其他事务 处理更新或删除相同的行,直到你的事务处理提交或者退回为止。 如果使用 for update 声明游标,则可在 delete 和 update 语句中使用 where current of cursor_name 子句,修改或者删除游标结果集合当前行对应的数据库表中的数据行。

218.在 Oracle 中, 使用下列语句: create public synonym parts for scott.inventory;完成的任 务是?
A.将 Scott.inventory 对象的访问权限 f、赋予所有用户 B.制定了新的对象权限 C.指定了新的系统权限 D.给 Scott.inventory 对象创建一个公用同义词 parts 答案:D 使用同义词访问相同的对象,方便访问其他用户的对象,短对象名字的长度。

219.在 Oracle 中,执行如下 PLSQL 语句后
Create type car ar object (id number,model varchar2(25), color varchar2(15)); Decleare myvar car.model%type; Begin End; 变量 mycar 的数据类型是什么? A.Number B.Varchar2 C.car 类型 D.Object 答案:B 定义一个变量, 其数据类型与已经定义的某个数据变量的类型相同, 或者与数据表 的某个列的数据类型相同,这时可以使用%type.

220.有如下 SQL 片段
a.select * from asdfh a where a.kehhao in (select kehhao from retail_vip) b.Select * from asdfh a where exists(select r.kehhao from retail_vip r where r.kehhao=a.kehhao) 则以下哪些描述是正确的: A.a,b 含义相同 B.a 的效率高于 b C.b 的效率高于 a D.a,b 效率高低依赖于表 asdfh 和 kehhao 的结果

E.a,b 效率高低需考虑表 asdfh 和 kehhao 的数据量 答案:E In 可以分为三类: 1).形如 select * from t1 where f1 in (a,b)应该和以下两种比较效率 Select * from t1 where f1=a or f1=b; 或者 select * from t1 where f1=a union all select * from t1 where f1=b 2).形如 select * from t1 where f1 in (select f1 from t2 where t2.fx=x)其中子查询的 where 里的条 件不受外层查询的影响,这类查询一般情况下,自动优化会转化 exist 语句,也就是效率和 exist 一样。 3)形如 selct * from t1 where f1 in (select f1 from t2 where t2.fx=t1.fx),其中子查询的 where 里的 条件受外层查询的影响,这类查询的效率要看相关条件涉及的字段的索引情况和数量多少, 一般认为效率不让 exist 4)除了第一类 in 语句都是可以转化成 exist 语句的,一般编程习惯应该是用 exist 而不是 in

221.有如下表结构
客户号(kehhao),日期(riqi),账户余额(zhhuye) 说明表 a 中记录客户不同日期账户余额, 但仅在相邻两天任一客户(kehhao)账户余额(zhhuye) 发生变化时才在表 a 中添加新纪录。 日期(riqi),其中包含多条日期:如 20050101,20050110 等 则如下 SQL 片段含义为: Select a.kehhao,c.riqi,a.zhhuye (select b.riqi as riqi ,max(a.riqi) as riqix from b,a where a.riqi<=b.riqi) c Left join a on a.riqi=c.riqix A.选择表 a 中各个客户在给定日期(给定日期由表 b 存储)的余额信息 B.选择表 a 中各个客户在除给定日期(给定日期由表 B 存储)的余额信息 C.选择表 a 中各个最接近给定日期(给定日期由表 b 存储)的余额信息 D.以上都不对 答案:D 所有包含于 select 列表中, 而未包含于组函数中的列都必须包含与 group by 子句中

222.有如下 SQL 片段
Delete from asdfh a where a.kaihrq >”20091214” and a.jiluzy <>“1”;其含义为: A.从表 asdfh 中删除 kaihrq 不小于 2009 年 12 月 14 日,且 jiluzt 不为 1 的记录 B.从表中删除 kaihrq 和 jiluzt 列 C.对表 asdfh 中删除 kaihrq 不小于 2009 年 19 月 14 日,且 jiluzt 不为 1 的记录打删除标记 D.以上都不正确 答案:C 提交或者回滚前的数据状态,改变前的数据状态是可以恢复的,执行 DML 操作的 用户可以通过 select 语句查询之前的修正,其他回话不能看到当前用户所做的改变,知道当 前回话结束事务。DML 语句所涉及道德行被锁定,其他会话不能操作。

223.只有满足联接条件的记录才包含在查询结 果中,这种联接为?
A.左联接 B.右联接 C.内部联接 D.完全联接 答案:C 内联接:内联接查询操作列出与连接条件匹配的数据行 外链接: 返回到查询结果集合中的不仅包含符合连接条件的行, 而且还包括左表 (左连接) 、 右表(右联接)或两个连接表(全外链接)中的所有数据行。

224.分机构统计 VIP 客户的数量下面 SQL 语句 正确的是?
其中表 a:jigou(机构),kehhao(客户号),jiaoyrq(交易日期),jiaoyje(交易金额) 表 b:kehhao(客户号),表 b 为 VIP 客户号表 Select _____ from a inner join b on a.kehhao=b.kehhao _____ A.count(a.kehhao),group by jigou B.Count (a.kehhao),order by jigou C.Sun(a.kehhao) ,order by jigou D.Count(a.kehhao),having jigou E.以上都不正确 答案:A 因为是统计各个分机构的 VIP 客户数量,所以要按照机构进行分组,而有多少条记录那么就 有多少个 VIP 客户所以使用 count

225.SQL 语言中修改表结构的命令是?
A.modify table B.Modify structure C.Alter table D.Alter structure 答案:C

226.Delete 和 truncate 都可以用来删除表内 容,以下描述正确的是?
A.Truncate 不需要 rollbacksegment B.D 饿了特需要 rollbacksegment C.Truncate 在提交 commit 之前仍可以回滚 D.Truncate 还可以删除表结构 答案:AB Truncate Table 语句:删除表中所有的数据并且释放表的存储空间,可以使用 Delete 语句删除数据,Delete 产生 rollback,如果删除大数据量的表速度会很慢,同时会占 用很多的 rollback segment。Truncate 是 DDL 操作,不产生 rollback,速度快一些。

227.请给出两个影响系统效率的函数 (选两个答 案)
A.Upper B.Sum C.Max D.Lower 答案:BC

228.Question:
Description of the students table:sid_id number ,start_date date ,end _date date which two function are valid on the start column? A.sum(start_date) B.Avg(start_date) C.Count(start_date) D.Avg(start_date,end_state) E.Min(start_date) 答案:CE sum 和 avg 要求数字数据类型

229.Which are DML statements(choose all that apply)____?
A.Commit B.Merge C.Update D.Delete

E.Create F.Drop 答案:BCD DML:Data manipulation language 数据操纵语言 insert dalete update merge DDL:Date definition language 数据定义语言 create alter drop DCL:Data control language 数据控制语言 grant revoke

230.select 语言中用于连接字符串的符号是?
A.”+” B.“&” C.“||” D.“|” 答案:C

231.从“员工”表中的“姓名”字段中找出名字 包含 “玛丽” 的人, 下面那条 select 语句正确?
A.select * from 员工 where 姓名=“_玛丽_” B.select * from 员工 where 姓名=“%玛丽_” C.select * from 员工 where 姓名 like “_玛丽%” D.select * from 员工 where 姓名 like “%玛丽%” 答案:D like 运算选择类似的值,选择条件可以包含字符或数字,”%”代表一个或是多个字 符,“_”代表一个字符。

232.在关系数据库的询问优化中,事先处理文 件,如排序、建立索引的目的是?
A.优化表达式 B.减少中间结果 C.扩大缓冲数据 D.减少扫描文件的时间 答案:D

233.表 customer 包含如下列:
Customer_id number(9) , Credid_limit number(9,2) 如下代码: Declare last_name varchar2(20), first_name varchar2(20),

Cursor cust_cursor IS Select customer_id,last_name,first_name From customer; Cust_rec cust_cursor%rowtype; 你如何操纵 cust_rec 中的记录(单选)? A.添加一个 LOOP 到游标声明中 B.在 PLSQL 块的执行部分,使用 insert into 语句 C.在 PLSQL 块的执行部分,使用一个 LOOP 和 Fetch 语句 D.在 PLSQL 块的执行部分,在 select 语句使用 into 操作 答案:D %rowtype 操作符,返回一个记录类型,其数据类型和数据库表的数据结构相一致。在这里 就和游标查询语句中的数据结果保持一致。 例如:declare cursor cust_cursor is select customer_id,last_name.first_name from customer; Cust_rec cust_cursor%rowtype; begin open cust_cursor; Loop fetch cust_cursor into cust_rec; Exit wher cust_cursor%notfound; Dbms_output.put_line(cust_rec.last_name); End loop ; End;

234.定义存储过程如下:
Create or replace procedure insert_team (v_id in number, v_city in varchar2 default ‘austin’ ,v_name in varchar2) Is Begin Insert into team(id,city,name) values(v_id,v_city,v_name); Commit; End; 以下那些 PLSQL 语句能够正确调用该过程(单选)? A.execute insert_team; B.Execute insert_team(v_name=>”long horns”); C.V_city=>”austin” D.Execute insert_team(“3”,”austin”,”long horns”) 答案:D

原文地址: http://www.tceic.com/k18h3k87ij22hij126lll705ii17552707225k38.html

猜你喜欢

转载自blog.csdn.net/qq_35661171/article/details/82024233