admin管理员组

文章数量:1530517

2024年5月11日发(作者:)

JAVA面试题大全(含答案)

1. J2EE是什么?它包括哪些技术?

解答:从整体上讲,J2EE是使用Java技术开发企业级应用的工业标

准,它是Java技术不断适应和促进企业级应用过程中的产物。适用于企

业级应用的J2EE,提供一个平台独立的、可移植的、多用户的、安全的和

基于标准的企业级平台,从而简化企业应用的开发、管理和部署。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)最后测试和实施,

1) 计划:产品定义阶段

2). 分析:外部文档阶段

3). 设计:文档架构阶段

4). 构建:单元测试阶段

5). 测试周期:错误修正,重复系统测试阶段

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

3.您做系统设计用何种工具?

解答:Visio, rational rose,power designer等 4. 什么是Web容器?

解答:容器就是一种服务程序,在服务器一个端口就有一个提供相应

服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的

Tomcat容器,ASP的IIS或PWS都是这样的容器。

5. 运行时异常与一般异常有何异同?

解答:异常表示程序运行过程中可能出现的非正常状态,运行时异常

表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。java编

译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须

声明抛出未被捕获的运行时异常。

6. Hibernate中:不看数据库,不看XML文件,不看查询语句,怎么

样能

知道表结构?

解答:可以看与XML文件对应的域模型。

7.目前几种主流数据库软件的应用特点、适用范围各是什么?

解答:国际国内的主导关系型数据库管理系统有SQL Server、

ORACLE、SYBASE、*****X和 DB2。本文从性能,可伸缩性和并行性,安

全性,操作简便,使用风险,开放性,易维护性和价格,数据库二次开发

方面比较了SQL Server,Oracle、SYBASE、DB2、*****X 数据库:

1)性能

SQL Server:老版本多用户时性能不佳,新版本的性能有了明显的改

善,各项处理能力都有了明显的提高。保持了多项TPC-C(TPC-C值被广

泛用于衡量C/S环境下,由服务器和客户端构筑的整体系统的性能,它由事

物处理性能委员会(TPC,Transaction Processing Corp)制定,TPC为非赢

利性国际组织。)纪录。

Oracle :性能最高, 保持Windows NT下的TPC-C的世界记录。

SYBASE :性能较高,支持Sun、IBM、HP、Compaq和Veritas的集群设

备的特性,实现高可用性。适应于安全性要求极高的系统。 DB2 :适用

于数据仓库和在线事物处理,性能较高。 客户端支持及应用模式。

*****X :性能较高,支持集群,实现高可用性。适应于安全性要求极高

的系统,尤其是银行,证券系统的应用。 2)可伸缩性,并行性 SQL

Server :以前版本SQL Server并行实施和共存模型并不成熟。很难处理

大量的用户数和数据卷。伸缩性有限。新版本性能有了较大的改善,在

Microsoft Advanced Servers上有突出的表现,超过了他的主要竞争对

手。

Oracle :平行服务器通过使一组结点共享同一簇中的工作来扩展

Window NT的能力,提供高可用性和高伸缩性的簇的解决方案。如果

Windows NT不能满足需要, 用户可以把数据库移到UNIX中,具有很好

的伸缩性。 SYBASE :新版本具有较好的并行性,速度快,对巨量

数据无明显影响,但是技术实现复杂,需要程序支持,伸缩性有限。

DB2 :DB2具有很好的并行性。DB2把数据库管理扩充到了并行的、多

节点的环境。数据库分区是数据库的一部分,包含自己的数据、索引、配

置文件、和事务日志。数据库分区有时被称为节点或数据库节点,伸缩性

有限。 *****X :采用单进程多线程的技术,具有较好的并行性。但是仅

运行于UNIX平台,伸缩性有限。 3)安全性 SQL server :Microsoft

Advanced Server 获得最高安全认证,服务器平台的稳定性是数据库的稳

定性的基础,新版本的SQL的安全性有了极大的提高。 Oracle:获得最

高认证级别的ISO标准认证。 SYBASE :通过Sun公司J2EE认证测试,

获得最高认证级别的ISO标准认证。 DB2 :获得最高认证级别的ISO标

准认证。 *****X :获得最高认证级别的ISO标准认证。 4)操作简便

SQL Server :操作简单,采用图形界面。管理也很方便,而且编程接口特

别友好(它的SQL-DMO让编程变得非常方便!) ,从易维护性和价格上

SQL Server明显占有优势。 Oracle :较复杂, 同时提供GUI和命令行,

在Windows NT和Unix, Linux 下操作相同。对数据库管理人员要求较

高。 SYBASE :复杂,使用命令行操作,对数据库管理人员要求较高。

DB2 :操作简单,同时提供GUI和命令行,在Windows NT和Unix下操作

相同。 *****X :使用和管理复杂,命令行操作。对数据库管理人员要求

较高。 5)使用风险 SQL Server :完全重写的代码,性能和兼容性有了

较大的提高,与Oracle,DB2的性能差距明显减小。该产品的出台经历了

长期的测试,为产品的安全和稳定进行了全面的检测,安全稳定性有了明

显的提高。 Oracle :长时间的开发经验,完全向下兼容,可以安全的进

行数据库的升级,在企业,政府中得到广泛的应用。并且如果在WINNT

上无法满足数据的要求,可以安全的把数据转移到UNIX上来。

SYBASE :开发时间较长,升级较复杂,稳定性较好,数据安全有保

障。风险小。在安全要求极高的银行,证券行业中得到了广泛的应用。

DB2 :在巨型企业得到广泛的应用,向下兼容性好。风险小。 *****X :

开发时间较长,升级较复杂,稳定性较好,数据安全有保障。风险小。在

安全要求极高的银行,证券行业中得到了广泛的应用。 6)开放性 SQL

Server:只能在Windows 上运行,C/S结构,只支持Windows客户,可

以用ADO,DAO,OLEDB,ODBC连接。Windows9X系列产品是偏重于桌面

应用,NT server适合各种大中小型企业。 操作系统的稳定对数据库是十

分重要的。Windows平台的可靠性,安全性经过了最高级别的C2认证

的。在处理大数据量的关键业务时提供了较好的性能。 Oracle :能在所

有主流平台上运行(包括 Windows)。完全支持所有的工业标准。采用完

全开放策略。多层次网络计算,支持多种工业标准,可以用

ODBC,JDBC,OCI等网络客户连接。可以使客户选择最适合的解决方案。

对开发商全力支持。 SYBASE :能在所有主流平台上运行,在银行业中

得到了广泛的应用。 DB2 :有较好的开放性,最适于海量数据。跨平

台,多层结构,支持ODBC,JDBC等客户。在大型的国际企业中得到最为

广泛的应用,在全球的500家最大的企业中,大部分采用DB2数据库服务

器。 *****IX :仅运行在UNIX平台,包括SUNOS、HPUX、 *****/1。在

银行中得到广泛的应用。 7)易维护性和价格 SQL Server :从易维护性和

价格上SQL Server明显占有优势。基于Microsoft的一贯风格,SQL

Server的图形管理界面带来了明显的易用性, 微软的数据库管理员培训

进行的比较充分,可以轻松的找到很好的数据库管理员,数据库管理费用

比较低,SQL Server的价格也是很低的,但是在License的购买上会抬高

价格。总体来说SQL Server的价格在商用数据库中是最低的。 Oracle :从

易维护性和价格上来说Oracle的价格是比较高的,管理比较复杂,由于

Oracle的应用很广泛,经验丰富的Oracle数据库管理员可以比较容易的

找到,从而实现Oracle的良好管理。因此Oracle的性能价格比在商用数

据库中是最好的。 SYBASE :SYBASE的价格是比较低的,但是SYBASE的

在企业和政府中的应用较少,很难找到经验丰富的管理

员,运行管理费用较高。

DB2 :价格高, 管理员少,在中国的应用较少,运行管理费用都很

高,适用于大型企业的数据仓库应用。 *****X :价格在这些系统中居于中

间,与SYBASE一样,在企业和政府中应用较少,仅在银行中得

到了广泛的应用。经验丰富的管理人员较少,运行管理费用高。 8)

数据库二次开发 SQL Server :数据库的二次开发工具很多,包括Visual

C++, Visual Basic等开发工具,可以实现很好的Windows应用,开发容

易。 Oracle :数据库的二次开发工具很多,涵盖了数据库开发的各个阶

段,开发容易。 SYBASE :开发工具较少,经验丰富的人员很少。 DB2 :在

国外巨型企业得到广泛的应用,中国的经验丰富的人员很少。 *****X :在

银行业中得到广泛的应用,但是在中国的经验丰富的人员很少。

8.存储过程和函数的区别

解答:

从参数的返回情况来看:

如果返回多个参数值最好使用存储过程,如果只有一个返回值的话可

以使用函数。

从调用情况来看:

如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存

储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以

及函数的纯度等级的问题,如果是在过程化语句中调用的话,就要看你要

实现什么样的功能。函数一般情况下是用来计算并返回一个计算结果而存

储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行

某些DDL语句等等),所以虽然他们的语法上很相似但用户在使用他们的

时候所需要完成的功能大部分情况下是不同的。

9.试述数据库完整保护的主要任务和措施。

解答:数据库的完整性保护也就是数据库中数据正确性的维护。数据

库完整性包括三个内容:实体完整性规则,参照物完整性规则以及用户定

义完整性规则。 前两个是有DBMS自动处理。

实体完整性规则是说针对于基表中的关键字中属性值不能为空值,是

数据库完整性的基本要求,主关键字和元组的唯一性对应。

参照物完整性规则是不允许引用不存在的元组:即基表中的外关键字

要么为空,要么关联基表中必存在元组。

用户定义完整性规则针对具体的数据环境由用户具体设置的规则,它

反应了具体应用中的语义要求。 一个完整性规则一般由下面三部分组成:

完整性约束条件设置,完整性约束条件的检

查以及完整性约束条件的处理.后两部分在数据库中一般有相应的模

块处理。另外触发器也可以做完整性的保护,但触发器大量用于主动性领

域。

10.请说明SQLServer中delete from tablea truncate table tablea的

区别

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是

DDL操作,它移动HWK,使HWK值为0,不需要 rollback segment .而

Delete是DML操作需要rollback segment 且花费较长时间.

11. Oracle安装完成后,如何用命令行启动和关闭数据库?

解答:

打开:***** [FORCE] [*****T] [PFILE= filename] [OPEN

[*****][ database] | MOUNT | *****] ***** OPEN:*****缺省的参数就是

OPEN,打开数据库,允许数据库的访问。当前实例的控制文件中所描述

的所有文件都已经打开。 ***** MOUNT:MOUNT数据库,仅仅给DBA

进行管理操作,不允许数据库的用户访问。仅仅只是当前实例的控制文件

被打开,数据文件未打开。 ***** *****:仅仅通过初始化文件,分配出

SGA区,启动数据库后台进程,没有打开控制文件和数据文件。不能访问

任何数据库。 ***** PFILE= filename:以filename为初始化文件启动数据

库,不是采用缺省初始化文件。 ***** FORCE:中止当前数据库的运行,

并开始重新正常的启动数据库。 ***** *****T:只允许具有*****TED *****

权限的用户访问数据库。 ***** *****:数据库启动,并开始介质恢复

关闭

*****N有四个参数:NORMAL、*****TIONAL、*****TE、ABORT。缺

省不带任何参数时表示是NORMAL。

命令*****N NORMAL:不允许新的连接、等待会话结束、等待事务结

束、做一个检查点并关闭数据文件。启动时不需要实例恢复。 *****N

*****TIONAL:不允许新的连接、不等待会话结束、等待事务结束、做一

个检查点并关闭数据文件。启动时不需要实例恢复。 *****N *****TE:不

允许新的连接、不等待会话结束、不等待事务结束、做一个检查点并关闭

数据文件。没有结束的事务是自动rollback的。启动时不需要实例恢复。

*****N ABORT:不允许新的连接、不等待会话结束、不等待事务结束、不

做检查点且没有关闭数据文件。启动时自动进行实例恢复。 另外,对于

NORMAL、*****TIONAL、*****TE,DB Buffer Cache的内容写入了数据文

件,没有提交的事务被回滚,所有的资源被释放,数据库被“干净”的关

闭。 对于ABORT,DB Buffer Cache的内容没有写入数据文件,没有提交

的事务也没有回滚。数据库没有dismount和关闭,数据文件也没有关

闭。当数据库启动时,需要通过redo log恢复数据,通过回滚

段对事务回滚,对资源进行释放。

12. 类有哪三个基本特性?各特性的优点?

解答:类具有封装性、继承性和多态性。

封装性:类的封装性为类的成员提供公有、缺省、保护和私有等多级

访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。

继承性:类的继承性提供从已存在的类创建新类的机制,继承

(inheritance)使一个新类自动拥有被继承类(父类)的全部可继承的成

员。

多态性:类的多态性提供类中方法执行的多样性,多态性有两种表现

形式:重载和覆盖。

13.谈谈对XML的理解?说明Web应用中文件的作用?

解答:XML(Extensible Markup Language)即可扩展标记语言,它

与HTML一样,都是SGML(Standard Generalized Markup Language,标准

通用标记语言)。Xml是Internet环境中跨平台的,依赖于内容的技术,是

当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的

数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便

的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但

XML极其简单易于掌握和使用。

的作用是配置欢迎页,servlet,filter,listener等的。

有哪些内置对象?作用分别是什么?(至少三个)

解答:

6)application 表示一个tContext对象。这有助于

查找有关servlet引擎和servlet环境的信息。 7)config表示一个

tConfig对象。该对象用于存取servlet实例的初始化参

数。 8)page表示从该页面产生的一个servlet实例。

9)exception 针对错误网页,未捕捉的例外

15.事务是什么?有哪些属性,并简要说明这些属性的含义。

解答:事务(Transaction)是访问并可能更新数据库中各种数据项的一

个程序执行单元(unit)。

事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)

书写的用户程序的执行所引起,并用形如begin transaction和end

transaction语句(或函数调用)来界定。事务由事务开始(begin

transaction)和事务结束(end transaction)之间执行的全体操作组成。

事务应该具有4个属性:原子性、一致性、隔离性、持续性。这四个

属性通常称为ACID特性。

原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中

包括的诸操作要么都做,要么都不做。

一致性(consistency)。事务必须是使数据库从一个一致性状态变到

另一个一致性状态。一致性与原子性是密切相关的。

隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事

务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个

事务之间不能互相干扰。

持久性(durability)。持续性也称永久性(permanence),指一个事

务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他

操作或故障不应该对其有任何影响。

16、Collection 和 Collections的区别?

解答:Collection是下的接口,它是各种集合的父接口,继

承于它的接口主要有Set 和List;Collections是个下的类,是针

对集合的帮助类,提供一系列静态方法实现对各种集合的搜索、排序、线

程安全化等操作。

17、HashMap与TreeMap的区别?

解答:HashMap通过hashcode对其内容进行快速查找,而TreeMap

中所有的元素都保持着某种固定的顺序,如果你需要得到一个有序的结果

你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。

18、ArrayList和Vector的区别?

解答:同步性:Vector是线程安全的,也就是说是同步的,而

ArrayList是线程不安全的,不是同步的;数据增长:当需要增长时,Vector

默认增长为原来一培,而ArrayList却是原来的一半。

19、HashMap和Hashtable的区别?

解答:HashMap是Hashtable的轻量级实现(非线程安全的实现),

他们都实现了Map接口,主要区别

在于HashMap允许空(null)键值(key),由于非线程安全,效率上

高于Hashtable。HashMap允许将null作为一个entry的key或者value,

而Hashtable不允许。HashMap把Hashtable

的contains方法去掉了,改成containsvalue和containsKey。因为

contains方法容易让人引起误解。Hashtable继承自Dictionary类,而

HashMap是Java1.2引进的Map interface的一个实现。最大的不同是,

Hastable的方法是synchronize的,而HashMap不是,在多个线程访问

Hashtable时,不需要自己为它的方法实现同步,而HashMap 就必须为

之提供同步。

20.请说出ArrayList,Vector, LinkedList的存储性能和特性

解答:ArrayList和Vector都是使用数组方式存储数据,此数组元素

数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引

元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而

插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性

能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数

据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即

可,所以插入速度较快。

21. 描述J2EE框架的多层结构,并简要说明各层的作用。

解答:

1) Presentation layer(表示层)

a. 表示逻辑(生成界面代码)

b. 接收请求

c. 处理业务层抛出的异常

d. 负责规则验证(数据格式,数据非空等)

e. 流程控制

2) Service layer(服务层/业务层)

a.封装业务逻辑处理,并且对外暴露接口

b.负责事务,安全等服务

3) Persistence 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中你再也不需要使用传统的

ameter(“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中的应用

本文标签: 数据库数据应用操作事务