2011JAVA面试题汇总(6)

2019-08-29 19:11

JAVA 面试题汇总 JDBC及数据库相关

六、 JDBC及数据库相关

81) Class.forName的作用?为什么要用?

调用该方法返回一个以字符串指定类名的类的对象。在用JDBC连接时调用这个方法能够保证程序需要的JDBC驱动程序已经装入,从而保证在程序代码使用驱动程序之前已经完成了对该JDBC驱动程序的所有初始化。 82) JDBC调用数据库的基本步骤

导入必要的类,装入JDBC驱动程序,识别数据源,分配一个Connection对象,分配一个Statement对象,使用Statement执行一个查询,从返回的ResultSet对象中检索数据,关闭ResultSet,关闭Statement对象,关闭 Connection对象

83) 说出数据连接池的工作机制是什么?

J2EE 服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。 84) JDO是什么?

JDO 是Java对象持久化的新的规范,为java data object的简称,也是一个用于存取某种数据仓库中的对象的标准化API。JDO提供了透明的对象存储,因此对开发人员来说,存储数据对象完全不需要额外的代码(如JDBC API的使用)。这些繁琐的例行工作已经转移到JDO产品提供商身上,使开发人员解脱出来,从而集中时间和精力在业务逻辑上。另外,JDO很灵活,因为它可以在任何数据底层上运行。JDBC只是面向关系数据库(RDBMS)JDO更通用,提供到任何数据底层的存储功能,比如关系数据库、文件、XML以及对象数据库(ODBMS)等等,使得应用可移植性更强。

85) 动态查询如何实现?表的结构变化后,如果不需要修改程序,如何设计和实现查询? 将查询封装进存储过程中,通过调用存储过程实现动态调用;表结构发生变化后修改相应的存储过程即可再不修改程序的情况下实现查询。 86) 如何优化数据库,如何提高数据库的性能?

1.给数据库做索引,合理的索引能立即显著地提高数据库整个系统的性能。

2.在适当的情况下,尽可能的用存储过程而不是SQL查询。因为前者已经过了预编译,运行速度

~ 21 ~

JAVA 面试题汇总 JDBC及数据库相关

更快。

3.优化查询语句,通过高性能的查询语句提高数据库的性能。 87) 设计数据库应注意那些问题

首先应尽量满足三范式的要求,在一定程度上打破三范式的要求以提高数据库的性能。 88) 表与表之间的关联关系

分为3种:一对一、一对多、多对多。 89) 主键和外键的区别

主键在本表中是唯一的、不可为空的,外键可以重复可以唯空;外键和另一张表的主键关联,不能创建对应表中不存在的外键。

90) 名词解释:批、触发器、事务、锁、子查询、索引、视图、存储过程 1、批:

批是包含一个或多个 Transact-SQL 语句的组,从应用程序一次性地发送到 Microsoft SQL Server 执行。批作为一个整体执行,以GO命令结束。批处理是客户端作为一个单元发出的一个或多个 SQL 语句的集合。每个批处理编译为一个执行计划。 2、触发器:

触发器是在对表进行插入、更新或删除操作时自动执行的存储过程,触发器通常用于强制业务规则。触发器可以确保数据的完整性和一致性 3、事务:

事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:原子性,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。一致性,事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。隔离性,由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。持久性,事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。 4、锁:

~ 22 ~

JAVA 面试题汇总 JDBC及数据库相关

锁是在多用户环境中对数据访问的限制封锁就是事务 T 在对某个数据对象(如表、记录等)操作之前,先向系统发出请求,对其加锁。加锁后事务 T 就对该数据对象有了一定的控制,在事务T释放它的锁之前,其它的事务不能更新此数据对象。(锁蕴含的基本概念是用户需要对表的排它访问)。从程序员的角度看分为乐观锁和悲观锁。 乐观锁:完全依靠数据库来管理锁的工作。 悲观锁:程序员自己管理数据或对象上的锁处理。

5、子查询:一个 select 语句嵌套在另一个 select 语句中。 6、索引:

索引是一个数据库对象,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单,然后根据指定的排序次序排列这些指针,优点提高查询执行的速度。强制实施数据的唯一性。提高表之间联接的速度。 缺点存储索引要占用磁盘空间。数据修改需要更长的时间,因为索引也要更新。 7、视图:

视图是一种虚拟表,通常是作为来自一个或多个表的行或列的子集创建的。视图本质上讲,就是保存在数据库中的select查询。视图并不是数据库中存储的数据值的集合。 对最终用户的好处:结果更容易理解, 获得数据更容易 对开发人员的好处:限制数据检索更容易,维护应用程序更方便 8、存储过程:

使用一个名称存储的预编译T-SQL语句和流程控制语句的集合。由数据库开发人员或数据库管理员编写,用来执行管理任务或应用复杂的业务规则

优点:执行速度更快。首次运行时,进行优化和编译得到执行计划并将该计划存储在系统表中,以后直接运行。实现多个程序共享应用程序逻辑,组件式编程,能够屏蔽数据库的结构,实现更高的安全性,减少网络流通量

91) 游标的作用?如何知道游标已经到了最后?

游标用于定位结果集的行,通过判断全局变量@@FETCH_STATUS可以判断是否到了最后,通常此变量不等于0表示出错或到了最后。

92) 事前触发和事后触发有何区别?语句级触发和行级触发有何区别?

事前触发器运行于触发事件发生之前,而事后触发器运行于触发事件发生之后。通常事前触发器可以获取事件之前和新的字段值。语句级触发器可以在语句执行前或后执行,而行级触发在触发器所影响的每一行触发一次。

~ 23 ~

JAVA 面试题汇总 JDBC及数据库相关

93) 数据库设计的必要性及设计步骤

好的数据库结构有利于:节省数据的存储空间,能够保证数据的完整性,方便进行数据库应用系统的开发

设计不好的数据库结构将导致:数据冗余、存储空间浪费和内存空间浪费

不管数据库的大小和复杂程度如何,可以用下列基本步骤来设计数据库:收集信息--标识对象--设计数据模型--标识每个对象--存储的信息类型–标识对象之间的关系 94) 什么是数据模型?什么是规范化?

数据模型是一种标识实体类型及其实体间联系的模型。典型的数据模型有网状模型、层次模型和关系模型。

从关系数据库的表中,除去冗余数据的过程称为规范化。包括:精简数据库的结构,从表中删除冗余的列,标识所有依赖于其它数据的数据 95) 谈谈数据库设计的三范式

第一范式的定义:如果一个表中没有重复组(即行与列的交叉点上只有一个值,而不是一组值),则这个表属于第一范式(常记成1NF)。简而言之:\每一字段只存储一个值\。例如:职工号,姓名,电话号码组成一个表(一个人可能有一个办公室电话 和一个家里电话号码)

第二范式的定义:如果一个表属于1NF,任何属性只依赖于关键字,则这个表属于第二范式(常记成2NF )。简而言之:必须先符合1NF的条件,且每一行都能被唯一的识别。将1NF转换成2NF的方法是添加主键。例如:学号,姓名,课程名,成绩

第三范式的定义:如果一个表属于2NF,且不包含传递依赖性,则这个表是第三范式(常记成 3NF)。满足3NF的表中不包含传递依赖。简而言之:没有一个非关键属性依赖于另一个非关键属性。例如:表一:学号,课程号,成绩。 表二:学号,姓名,所在系,系名称,系地址。表三:课程号,课程名,学分

~ 24 ~

JAVA 面试题汇总 JSP和Servlet

七、 JSP和Servlet

96) forward 和sendRedirect的区别

前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。 97) JSP中动态INCLUDE与静态INCLUDE的区别

动态INCLUDE用jsp:include动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。

静态INCLUDE用include指令实现,不会检查所含文件的动态内容,适用于包含静态页面 98) JSP的内置对象及方法

1.request表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, header, 和session数据的有用的方法。

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

3.out对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。

4.pageContext表示一个javax.servlet.jsp.PageContext对象。它是用于方便存取各种范围的名字空间、servlet相关的对象的API,并且包装了通用的servlet相关功能的方法。

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

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

7.config表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。 8.page表示从该页面产生的一个servlet实例 9.exception 针对错误网页,未捕捉的例外 99) JSP的常用指令

1.Jsp指令:负责告诉jsp引擎如何把页面翻译成servlet。语法:<%@ 指令名 属性=\值\page指令:用于定义jsp页面的各种属性,最好放在jsp页面的起始位置

~ 25 ~


2011JAVA面试题汇总(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:母婴护理师(高级)课程测试试卷一

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: