面试题(含答案)

更新时间:2024-01-04 05:22:02 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

Oracle测试试题

1. 解释冷备份和热备份的不同点以及各自的优点

解答:热备份针对归档模式的数据库,在数据库仍旧处于工作状态时进行备份。而冷备份指在数据库关闭后,进行备份,适用于所有模式的数据库。热备份的优点在于当备份时,数据库仍旧可以被使用并且可以将数据库恢复到任意一个时间点。冷备份的优点在于它的备份和恢复操作相当简单,并且由于冷备份的数据库可以工作在非归档模式下,数据库性能会比归档模式稍好。(因为不必将archive log写入硬盘)

2. 你必须利用备份恢复数据库,但是你没有控制文件,该如何解决问题呢?

解答:重建控制文件,用带backup control file 子句的recover 命令恢复数据库。

3. 如何转换init.ora到spfile?解答:使用create spfile from pfile 命令.

4. 解释data block , extent 和 segment的区别(这里建议用英文术语)

解答:data block是数据库中最小的逻辑存储单元。当数据库的对象需要更多的物理存储空间时,连续的data block就组成了extent . 一个数据库对象拥有的所有extents被称为该对象的segment.

5. 给出两个检查表结构的方法

解答:1.DESCRIBE命令

2.DBMS_METADATA.GET_DDL 包

6. 怎样查看数据库引擎的报错

解答:alert log.

7. 比较truncate和delete 命令

第 1 页 共 42 页

解答:两者都可以用来删除表中所有的记录。区别在于:truncate是DDL操作,它移动HWK,不需要 rollback segment .而Delete是DML操作, 需要rollback segment 且花费较长时间.

8. 使用索引的理由

解答:快速访问表中的data block

9. 给出在STAR SCHEMA中的两种表及它们分别含有的数据

解答:Fact tables 和dimension tables. fact table 包含大量的主要的信息而 dimension tables 存放对fact table 某些属性描述的信息

10. FACT Table上需要建立何种索引?

解答:位图索引 (bitmap index)

11. 给出两种相关约束?

解答:主键和外键

12. 如何在不影响子表的前提下,重建一个母表

解答:子表的外键强制实效,重建母表,激活外键

13. 解释归档和非归档模式之间的不同和它们各自的优缺点

解答:归档模式是指你可以备份所有的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高.

14. 如何建立一个备份控制文件?

解答:Alter database backup control file to trace.

15. 给出数据库正常启动所经历的几种状态 ?

第 2 页 共 42 页

解答:STARTUP NOMOUNT 数据库实例启动

STARTUP MOUNT 数据库装载

STARTUP OPEN 数据库打开

16. 哪个column可以用来区别V$视图和GV$视图?

解答: INST_ID 指明集群环境中具体的 某个instance 。

17. 如何生成explain plan?

解答:运行utlxplan.sql. 建立plan 表

针对特定SQL语句,使用 explain plan set statement_id = 'tst1' into plan_table

运行utlxplp.sql 或 utlxpls.sql察看explain plan

18. 如何增加buffer cache的命中率?

解答:在数据库较繁忙时,适用buffer cache advisory 工具,查询

v$db_cache_advice . 如果有必要更改,可以使用 alter system set db_cache_size 命令

19. ORA-01555的应对方法?

解答:具体的出错信息是snapshot too old within rollback seg , 通常可以通过增大rollback seg来解决问题。当然也需要察看一下具体造成错误的SQL文本

20. 解释$ORACLE_HOME和$ORACLE_BASE的区别?

解答:ORACLE_BASE是oracle的根目录,ORACLE_HOME是oracle产品的目录。

21. 如何判断数据库的时区?

解答:SELECT DBTIMEZONE FROM DUAL;

第 3 页 共 42 页

22. 解释GLOBAL_NAMES设为TRUE的用途

解答:GLOBAL_NAMES指明联接数据库的方式。如果这个参数设置为TRUE,在建立数据库链接时就必须用相同的名字连结远程数据库

23。如何加密PL/SQL程序?

解答:WRAP

24. 解释FUNCTION,PROCEDURE和PACKAGE区别

解答:function 和procedure是PL/SQL代码的集合,通常为了完成一个任务。procedure 不需要返回任何值而function将返回一个值在另一

方面,Package是为了完成一个商业功能的一组function和proceudre的集合

25. 解释TABLE Function的用途

解答:TABLE Function是通过PL/SQL逻辑返回一组纪录,用于普通的表/视图。他们也用于pipeline和ETL过程。

26. 举出3种可以收集three advisory statistics

解答:Buffer Cache Advice, Segment Level Statistics, Timed Statistics

27. Audit trace 存放在哪个oracle目录结构中?

解答:unix $ORACLE_HOME/rdbms/audit Windows the event viewer

28. 解释materialized views的作用

解答:Materialized views 用于减少那些汇总,集合和分组的信息的集合数量。它们通常适合于数据仓库和DSS系统。

29. 当用户进程出错,哪个后台进程负责清理它

第 4 页 共 42 页

解答: PMON

30. 哪个后台进程刷新materialized views?

解答:The Job Queue Processes.

31. 如何判断哪个session正在连结以及它们等待的资源?

解答:V$SESSION / V$SESSION_WAIT

32. 描述什么是 redo logs

解答:Redo Logs 是用于存放数据库数据改动状况的物理和逻辑结构。可以用来修复数据库.

33. 如何进行强制LOG SWITCH?

解答:ALTER SYSTEM SWITCH LOGFILE; 来源:考试大-Oracle认证考试

34. 举出两个判断DDL改动的方法?

解答:你可以使用 Logminer 或 Streams

35. Coalescing做了什么?

解答:Coalescing针对于字典管理的tablespace进行碎片整理,将临近的小extents合并成单个的大extent.

36. TEMPORARY tablespace和PERMANENT tablespace 的区别是?

解答:A temporary tablespace 用于临时对象例如排序结构而 permanent tablespaces用来存储那些'真实'的对象(例如表,回滚段等)

37. 创建数据库时自动建立的tablespace名称?

解答:SYSTEM tablespace.

第 5 页 共 42 页

38. 创建用户时,需要赋予新用户什么权限才能使它联上数据库。

解答:CONNECT

39. 如何在tablespace里增加数据文件?

解答:ALTER TABLESPACE ADD DATAFILE SIZE

40. 如何变动数据文件的大小?

解答:ALTER DATABASE DATAFILE RESIZE ;

41. 哪个VIEW用来检查数据文件的大小?

解答: DBA_DATA_FILES

42. 哪个VIEW用来判断tablespace的剩余空间

解答:DBA_FREE_SPACE

43. 如何判断谁往表里增加了一条纪录?

解答:auditing

44. 如何重构索引?

解答: ALTER INDEX REBUILD;

45. 解释什么是Partitioning(分区)以及它的优点。

解答:Partition将大表和索引分割成更小,易于管理的分区。

46. 你刚刚编译了一个PL/SQL Package但是有错误报道,如何显示出错信息?

解答:SHOW ERRORS

47. 如何搜集表的各种状态数据?

第 6 页 共 42 页

解答: ANALYZE

The ANALYZE command.

48. 如何启动SESSION级别的TRACE

解答: DBMS_SESSION.SET_SQL_TRACE

ALTER SESSION SET SQL_TRACE = TRUE;

49. IMPORT和SQL*LOADER 这2个工具的不同点

解答:这两个ORACLE工具都是用来将数据导入数据库的。

区别是:IMPORT工具只能处理由另一个ORACLE工具EXPORT生成

的数据。而SQL*LOADER可以导入不同的ASCII格式的数据源

50。用于网络连接的2个文件?

解答: TNSNAMES.ORA and SQLNET.ORA

-DBA数据库管理员JAVA程序员架构师必看

1. 解释FUNCTION,PROCEDURE和PACKAGE区别

A:从参数的返回情况来看:FUNCTION一定要有返回值,而且只能返回一个;PROCEDURE可以有返回值,也可以无返回值

B:从调用方式来看:如果在SQL语句(DML或SELECT)中调用的话一定是存储函数或存储的封装函数不可以是存储过程,但调用存储函数的时候还有好多限制以及函数的纯度等级的问题,你可以参考《ORACLE 9I PL\\SQL程序设计》(机械工业出版社);

C:从实现功能上来看;函数一般情况下是用来计算并返回一个计算结果而存储过程一般是用来完成特定的数据操作(比如修改、插入数据库表或执行某些DDL语句等

第 7 页 共 42 页

等),所以虽然他们的语法上很相似但用户在使用他们的时候所需要完成的功能大部分情况下是不同的

Package是为了完成一个逻辑功能的一组function或procedure的集合。

2.

3.

简述Oracle的存储结构(物理结构、逻辑结构)?

? 物理结构(由控制文件、数据文件、重做日志文件、参数文件、归档文件、密码文件组成)

? 控制文件:包含维护和验证数据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个数据库至少需要一个控制文件

? 数据文件:存储数据的文件

? 重做日志文件:含对数据库所做的更改记录,这样万一出现故障可以启用数据恢复。一个数据库至少需要两个重做日志文件

? 参数文件:定义Oracle 例程的特性,例如它包含调整SGA 中一些内存结构大小的参数

? 归档文件:是重做日志文件的脱机副本,这些副本可能对于从介质失败中进行恢复很必要。

? 密码文件:认证哪些用户有权限启动和关闭Oracle例程 ? 逻辑结构(表空间、段、区、块)

? 表空间:是数据库中的基本逻辑结构,一系列数据文件的集合。 ? 段:是对象在数据库中占用的空间

? 区:是为数据一次性预留的一个较大的存储空间

? 块:ORACLE最基本的存储单位,在建立数据库的时候指定

4.

比较truncate、delete和drop命令?

解释冷备份和热备份的不同点以及各自的优点?

truncate和delete两者都可以用来删除表中所有的记录。区别在于:truncate是DDL(data defining language数据定义语言),它移动HWK,不需要rollback segment(处理事务回滚操作)而Delete是DML(data manufacturing language数据操作语言)操作,需要rollback segment(处理事务回滚操作)且花费较长时间。而drop是DDL语言,用

第 8 页 共 42 页

于对表的操作

5.

如何搜索表中前N条记录?

select * from 表 where Rownum <= N

6.

如何搜索表中第N~M(N<=M)条记录。

select * from (select t.*,rownum r from your_table t) where r>30 and r<60

7.

如何搜索表中某列的第N大的值?

select * from (select t.*,dense_rank() over (order by id) rank from 表名 t) where rank = N;

例:

select * from (select t.*,dense_rank() over (order by id) rank from emp t) where rank = 4;

8.

9.

简述数据库1,2,3 范式的概念与理解。 如何判断谁往表里增加了一条纪录。

10. 解释归档和非归档模式之间的不同和它们各自的优缺点

归档模式是指你可以备份所有的数据库 transactions并恢复到任意一个时间点。非归档模式则相反,不能恢复到任意一个时间点。但是非归档模式可以带来数据库性能上的少许提高

11. 如何加密PL/SQL程序? set nls_lang=us

wrap iname=proc_01.sql oname=proc_02.sql 12. 列举几种常用的关系型数据库?

Oracle 9i、DB2 8.1、Sybase 12.5、SQL SERVER 2000

13. 请阐述游标的作用.你认为什么情况下要使用游标

游标:是用来管理SQL的SELECT语句而分配的一大堆内存。游标是一个对象,能够提供行级的SQL语句控制。

游标可以返回一条或多条记录,或一条也不返回,通常的操作顺序是:

(1) 声明游标,使用查询来定义游标的列和行

第 9 页 共 42 页

CURSOR 游标名称 IS 查询语句(SELECT 语句)

(2) 打开游标,使用PL/SQL命令OPEN来打开一个声明的游标 OPEN 游标名称

(3) 提取数据,从游标中重复提取每条记录到数据结构中,直到数据集合被提空

FETCH 游标名称

INTO {变量1[,变量2,?]} 例:

FETCH NEXT FROM游标名称 将游标指针指向下一条记录 FETCH RELATIVE FROM游标名称 RELATIVE 相对位置 将游标指向相对位置 (4) 关闭游标 CLOSE 游标名称

14. varchar2,char两种数据类型有什么区别,如果表中某字段输入\后储存,该 字段数()((((区别:

1.CHAR的长度是固定的,而VARCHAR2的长度是可以变化的, 比如,存储字符串“abc\,对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时,按实际长度存储。

2.CHAR的效率比VARCHAR2的效率稍高。

3.目前VARCHAR是VARCHAR2的同义词。工业标准的VARCHAR类型可以存储空字符串,但是oracle不这样做,尽管它保留以后这样做的权利。Oracle自己开发了一个数据类型VARCHAR2,这个类型不是一个标准的VARCHAR,它将在数据库中varchar列可以存储空字符串的特性改为存储NULL值。如果你想有向后兼容的能力,Oracle建议使用VARCHAR2而不是VARCHAR。 4. 何时该用CHAR,何时该用varchar2?

CHAR与VARCHAR2是一对矛盾的统一体,两者是互补的关系.

VARCHAR2比CHAR节省空间,在效率上比CHAR会稍微差一些,即要想获得效率,

第 10 页 共 42 页

就必须牺牲一定的空间,这也就是我们在数据库设计上常说的‘以空间换效率’。 VARCHAR2虽然比CHAR节省空间,但是如果一个VARCHAR2列经常被修改,而且每次被修改的数据的长度不同,这会引起‘行迁移’(Row Migration)现象,而这造成多余的I/O,是数据库设计和调整中要尽力避免的,在这种情况下用CHAR代替VARCHAR2会更好一些。)))))

15. 如何理解索引,以及索引对于表的查询和更新操作在性能上的不同影响?(((一个数据量很小的表.可能只占用了一个block.如果利用所引,需要读索引的block,再读数据的block.所以多读了一个block.可能就会慢.或者读取一个很大的表的全部数据.利用所引需要读所有的索引block加所有的数据block.不如全表扫描不用索引,不需要读索引block)))

16. 比较内连接、外连接、交叉连接的区别和联系?

内连接:内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值

外连接:返回查询结果集合中的仅是符合查询条件( WHERE 搜索条件或 HAVING 条件)和连接条件的行

交叉连接:交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积 .返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数

22 有表T1和T2,数据结构完全相同,各有字段F1和F2,现需要用表T2的字段更新表T1的字段F2,条件是表T1的F1与T2的F1相等

第 11 页 共 42 页

23 有表结构如下:create table t1(id number, name varchar2(10) ) ;如何删除掉表t1中重复的记录?注意删除以后字段id的值是唯一的。

24 要求:用SQL语句表示哪些订单的金额高于平均值?

订单表: orders(orderid:订单号, quantity:商品数量,partid:商品编号)

Orderid 1001 1002 1003

商品表:part(partid:商品编号,name:商品名称,price:单价)

Partid P001 P002 P003

25 某业务系统用来实现资金进出的纪录,业务系统的管理数据库的部分关系模式如下所示:

基础信息表(KMBM,KMMC,KMSX,CLX)

历史资金发生余额表(KMBM,YE)

Name A B C Price 20.0 15.0 21.0 Quantity 10 13 16 Paydate Partid P001 P002 P003 近期资金明细发生纪录表(ID,ID2,KMBM,LRLC,FSE) 表一:

KMBM 101 10101 10102 201 202 KMMC 银行存款 北京存款 上海存款 预收账款 其他应付款 KMSX 银行存款 银行存款 银行存款 预收账款 其他应付款 ZCLX 资产类 资产类 资产类 负债类 负债类 第 12 页 共 42 页

表二:

KMBM 101 10101 10102 201 202 表三:

ID 1 1 2 2 ID2 1 2 1 2 KMBM 10101 20101 202 10101 LRLC + + - - FSE 50000 50000 3200000 3200000 YE 100000000 66000000 34000000 0 100000000 表三中(LRLC字段值等于“+”标示流入,:LRLC字段值等于“-”标示流出。

[1-1]:

请根据上述三个数据表的字段和数据纪录反映出的结果,按照个人理解标示出各表的主外键信息。并说明理由. [1-2]:

请通过编写一条SQL语句查询出表一中的KMBM字段值对应的最新余额信息,以不相同的明细KMBM为单位进行统计,统计的结果中要包含表一中的所有字段信息和计算的最新余额。(最新余额=历史资金余额+近期资金流入-近期资金流出) [1-3]:

根据下面的查询结果,编写一条SQL语句实现输出结果同下面的查询结果,并分析原设计者输出此结果的设计思想。 KMBM KMMC YE

第 13 页 共 42 页

―――――――――――――――――― 101 银行存款 96850000 201 预收账款 50000 202 其他应付款 96800000

-------------------------------------------------------

26. 考虑采用关系型数据库完成,某公司人力资源系统需要对员工的薪资及其他相关信息进行管理,信息包括:员工编号、姓名、性别、职位、工资金额、发放日期等。(假定员工的工资是按月发放)

1) 写出建表的SQL。 2) 写出插入记录的SQL。

3) 写出统计报表的SQL,对所有员工薪资进行统计,输出信息包括统计年份、员工编号、姓名、平均工资(月)、工资合计(年)等。输出形式如下所示:

统计年份 员工编号 姓名 2004 2004 . . . 2005 2005

select a.worker_time,a.worker_number,b.worker_name,a.sum_money/12,a.sum_money ( select

substr(to_char(worker_time),1,4),worker_number,sum(worker_money)

0001 0002

小张 小李

5000.00 5500.00

60000.00 66000.00

0001 0002

小张 小李

4500.00 5000.00

54000.00 60000.00

平均工资(月) 工资合计(年)

sum_money from AA group by substr(to_char(worker_time),1,4),worker_number

) a

第 14 页 共 42 页

left join AA b on a.worker_number=b.worker_number

1、对数据库SQL2005、ORACLE熟悉吗?

SQL2005是微软公司的数据库产品。是一个RDBMS数据库,一般应用在一些中型数据库的应用,不能跨平台。

ORACLE是ORACLE公司的数据产品,支持海量数据存储,支持分布式布暑,支持多用户,跨平台,数据安全完整性控制性能优越,是一个ORDBMS,一般用在大型公司。 2、能不能设计数据库?如何实现数据库导入与导出的更新

使用POWERDISINE工具的使用,一般满足第三范式就可以了。EXP与IMP数据库的逻辑导入与导出

3、如何只显示重复数据,或不显示重复数据

显示重复:select * from tablename group by id having count(*)>1 不显示重复:select * from tablename group by id having count(*)=1 4、什么是数据库的映射

就是将数据库的表与字段对应到模型层类名与属性的过程

5、写分页有哪些方法,你一般用什么方法?用SQL语句写一个分页? 如何用存储过程写分页?

在SQLSERVER中使用TOP分页,在ORACLE中用ROWNUM,或分析函数ROW_NUMBER 使用TOP:

select top 20,n.* from tablename n minus select top 10,m.* from tablename m 使用分析函数: select * from

(select n.*,row_number() over(order by columnname) num from tablename n) where num>=10 and num <=20;

使用过程时,只要将分页的范围用两个参数就可以实现。在ORACLE中,要将过程封装在包里,还要用动态游标变量才能实现数据集的返回。 6、ORACLE中左连接与右连接

左连接:LEFT JOIN 右连接:RIGHT JOIN

select n.column,m.column from tablename1 n left join tablename2 m

第 15 页 共 42 页

(1)OOP关注对象和角色,也就是事物的本质 1)OOP把客观世界中的对象抽象成对应的类; 2)通过类构造实例;

3)通过依赖、继承、实现等形式建立对象间的通信关系

(2)OOP易于扩展,增加或改变业务的功能,无需大幅改动改变源代码

(3)OOP易于建模,OOP就是软件架构师在计算机高级语言中对客观世界的抽象和再现,人们可以很好地理解和建立起计算机中的抽象模型

六、谈谈Overload和Override的区别。 答:

方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。

七、谈谈HashMap和Hashtable的区别。

答: HashMap是轻量级的(线程不安全的,效率高的)集合,Hashtable是重量级的(线程安全的,效率低的)集合。

都属于Map接口的类,实现了将惟一键映射到特定的值上。

HashMap 类没有分类或者排序。它允许一个 null 键和多个 null 值。

Hashtable 类似于 HashMap,但是不允许 null 键和 null 值。它也比 HashMap 慢,因为它是同步的。

八、请问abstract class和interface有什么区别? 答:

1) 接口没有任何的实现,而抽象类它可以有部分的实现也可以没有; 2) 如果需要复用或者共享部分代码,应该用抽象类而不是接口;

第 21 页 共 42 页

3) 继承无法解决类型的转换问题,接口就是为了解决这一问题而产生的(Java的单继承是接口产生的根本原因) 接口是一种抽象的第三方规范,跟对象没什么直接关系。

九、请问软件开发中的设计模式你会使用哪些?

答:我熟悉的设计模式有单例模式,DAO模式,模板方法,工厂模式,委托代理模式,MVC模式等。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 Singleton模式一般形式:

定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

十、类的核心特性有哪些? 类具有封装性、继承性和多态性。 封装性:

类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。

继承性:

类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部成员。

多态性:

类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。 十一、请问类与对象有什么区别? 类

类就是某一种事物的一般性的集合体,是相同或相似的各个事物共同特性的一种抽象。 对象

在面向对象概念中,对象(Object)是类的实例(instance)。对象与类的关系就像变量与数据类型的关系一样。

十二、请说出几个常用的异常类 答:NullpointException(空指针异常)

第 22 页 共 42 页

ClassNotFoundException(类找不到异常) ClassCastException(类型转换异常) IllegalArgumentException(非法参数异常) ArithmeticException(算术异常) NumberFormatException(数据格式异常) IndexOutOfBoundsException(数组下标越界异常) IllegalStateException(非法语句异常)

十三、public,private,protected,default访问权限(可见性) 答:

public:全局可见

protected:继承体系结构之间可见 default(或不写):同包可见 private:本类可见。

十四、请写出JSP的几个隐含内置对象 答:JSP中隐含内置对象

名称 类型 注释和范围 request javax.servlet.http.HttpServletRequest request response javax.servlet.http.HttpServletResponse response page javax.lang.Object page Exception java.lang.Throwable page pageContext javax.servlet.jsp.PageContext page session javax.servlet.http.HttpSession session application javax.servlet.ServletContext ServletContext out javax.servlet.jsp.JspWriter OutputStream config javax.servlet.ServletConfig ServletConfig

JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 page JSP 网页本身

第 23 页 共 42 页

exception 针对错误网页,未捕捉的例外 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config Servlet的构架部件 十五请你谈谈SSH整合 答:SSH:

Struts(表示层)+Spring(业务层)+Hibernate(持久层) Struts:

Struts是一个表示层框架,主要作用是界面展示,接收请求,分发请求。

在MVC框架中,Struts属于VC层次,负责界面表现,负责MVC关系的分发。(View:沿用JSP,HTTP,Form,Tag,Resourse ;Controller:ActionServlet,struts-config.xml,Action)

Hibernate:

Hibernate是一个持久层框架,它只负责与关系数据库的操作。 Spring:

Spring是一个业务层框架,是一个整合的框架,能够很好地黏合表示层与持久层。 十六、写一个简单的C/S结构程序,Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示? 答:Server端程序: package test; import java.net.*; import java.io.*;

public class Server {

private ServerSocket ss; private Socket socket; private BufferedReader in;

第 24 页 共 42 页

private PrintWriter out; public Server() { try {

ss=new ServerSocket(10000); while(true) {

socket = ss.accept();

String RemoteIP = socket.getInetAddress().getHostAddress(); String RemotePort = \

System.out.println(\in = new BufferedReader(new

InputStreamReader(socket.getInputStream())); String line = in.readLine();

System.out.println(\out = new PrintWriter(socket.getOutputStream(),true); out.println(\out.close(); in.close(); socket.close(); }

}catch (IOException e) {

out.println(\} }

public static void main(String[] args) {

第 25 页 共 42 页

new Server(); } };

Client端程序: package test; import java.io.*; import java.net.*;

public class Client {

Socket socket; BufferedReader in; PrintWriter out; public Client() { try {

System.out.println(\socket = new Socket(\System.out.println(\System.out.println(\BufferedReader line = new BufferedReader(new

InputStreamReader(System.in));

out = new PrintWriter(socket.getOutputStream(),true); out.println(line.readLine());

in = new BufferedReader(new InputStreamReader(socket.getInputStream())); System.out.println(in.readLine()); out.close(); in.close();

第 26 页 共 42 页

socket.close(); }catch(IOException e) {

out.println(\} }

public static void main(String[] args) {

new Client(); } };

十七、请问软件开发中的设计模式你会使用哪些?

答:我熟悉的设计模式有单例模式,DAO模式,模板方法,工厂模式,委托代理模式,MVC模式等。

Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。 Singleton模式一般形式:

定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。

十八、类的核心特性有哪些? 类具有封装性、继承性和多态性。 封装性:

类的封装性为类的成员提供公有、缺省、保护和私有等多级访问权限,目的是隐藏类中的私有变量和类中方法的实现细节。

继承性:

第 27 页 共 42 页

类的继承性提供从已存在的类创建新类的机制,继承(inheritance)使一个新类自动拥有被继承类(父类)的全部成员。

多态性:

类的多态性提供类中方法执行的多样性,多态性有两种表现形式:重载和覆盖。 十九、请问类与对象有什么区别? 类

类就是某一种事物的一般性的集合体,是相同或相似的各个事物共同特性的一种抽象。 对象

在面向对象概念中,对象(Object)是类的实例(instance)。对象与类的关系就像变量与数据类型的关系一样。

二十、请说出几个常用的异常类 答:NullpointException(空指针异常)

ClassNotFoundException(类找不到异常) ClassCastException(类型转换异常) IllegalArgumentException(非法参数异常) ArithmeticException(算术异常) NumberFormatException(数据格式异常) IndexOutOfBoundsException(数组下标越界异常) IllegalStateException(非法语句异常)

二十一、public,private,protected,default访问权限(可见性) 答:

public:全局可见

protected:继承体系结构之间可见 default(或不写):同包可见 private:本类可见。

二十二、请写出JSP的几个隐含内置对象 答:JSP中隐含内置对象

名称 类型 注释和范围 request javax.servlet.http.HttpServletRequest request response javax.servlet.http.HttpServletResponse response

第 28 页 共 42 页

page javax.lang.Object page Exception java.lang.Throwable page pageContext javax.servlet.jsp.PageContext page session javax.servlet.http.HttpSession session application javax.servlet.ServletContext ServletContext out javax.servlet.jsp.JspWriter OutputStream config javax.servlet.ServletConfig ServletConfig JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应): request 用户端请求,此请求会包含来自GET/POST请求的参数 response 网页传回用户端的回应 page JSP 网页本身

exception 针对错误网页,未捕捉的例外 pageContext 网页的属性是在这里管理 session 与请求有关的会话期 application servlet 正在执行的内容 out 用来传送回应的输出 config Servlet的构架部件 java软件工程师面试题集

EJB方面

1、EJB2.0有哪些内容?分别用在什么场合? EJB2.0和EJB1.1的区别?

答:规范内容包括Bean提供者,应用程序装配者,EJB容器,EJB配置工具,EJB服务提供者,系统管理员。这里面,EJB容器是EJB之所以能够运行的核心。EJB容器管理着EJB的创建,撤消,激活,去活,与数据库的连接等等重要的核心工作。JSP,Servlet,EJB,JNDI,JDBC,JMS.....

2、EJB与JAVA BEAN的区别?

第 29 页 共 42 页

答:Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于Java Bean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器,另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。Enterprise Java Bean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如Webspere、WebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。

3、EJB的基本架构

答:一个EJB包括三个部分:

Remote Interface 接口的代码

package Beans;

import javax.ejb.EJBObject;

import java.rmi.RemoteException;

public interface Add extends EJBObject {

//some method declare }

第 30 页 共 42 页

Home Interface 接口的代码

package Beans;

import java.rmi.RemoteException;

import jaax.ejb.CreateException;

import javax.ejb.EJBHome;

public interface AddHome extends EJBHome {

//some method declare }

EJB类的代码

package Beans;

import java.rmi.RemoteException;

import javax.ejb.SessionBean;

import javx.ejb.SessionContext;

public class AddBean Implements SessionBean

第 31 页 共 42 页

{

//some method declare }

J2EE,MVC方面

1、MVC的各个部分都有那些技术来实现?如何实现?

答:MVC是Model-View-Controller的简写。\代表的是应用的业务逻辑(通过JavaBean,EJB组件实现), \是应用的表示面(由JSP页面产生),\是提供应用的处理过程控制(一般是一个Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

2、应用服务器与WEB SERVER的区别?

希望大家补上,谢谢

3、J2EE是什么?

答:Je22是Sun公司提出的多层(multi-diered),分布式(distributed),基于组件(component-base)的企业级应用模型(enterpriese application model).在这样的一个应用系统中,可按照功能划分为不同的组件,这些组件又可在不同计算机上,并且处于相应的层次(tier)中。所属层次包括客户层(clietn tier)组件,web层和组件,Business层和组件,企业信息系统(EIS)层。

4、WEB SERVICE名词解释。JSWDL开发包的介绍。JAXP、JAXM的解释。SOAP、UDDI,WSDL

第 32 页 共 42 页

解释。

答:Web Service描述语言WSDL

SOAP即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。

UDDI 的目的是为电子商务建立标准;UDDI是一套基于Web的、分布式的、为Web Service提供的、信息注册中心的实现标准规范,同时也包含一组使企业能将自身提供的Web Service注册,以使别的企业能够发现的访问协议的实现标准。

5、BS与CS的联系与区别。

希望大家补上,谢谢

6、STRUTS的应用(如STRUTS架构)

答:Struts是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的framework。 采用Struts能开发出基于MVC(Model-View-Controller)设计模式的应用构架。 Struts有如下的主要功能:

一.包含一个controller servlet,能将用户的请求发送到相应的Action对象。

二.JSP自由tag库,并且在controller servlet中提供关联支持,帮助开发员创建交互式表单应用。

三.提供了一系列实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息。

设计模式方面

第 33 页 共 42 页

1、开发中都用到了那些设计模式?用在什么场合?

答:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。主要用到了MVC的设计模式。用来开发JSP/Servlet或者J2EE的相关应用。简单工厂模式等。

2、UML方面

答:标准建模语言UML。用例图,静态图(包括类图、对象图和包图),行为图,交互图(顺序图,合作图),实现图,

JavaScript方面

1、如何校验数字型?

var re=/^d{1,8}$|.d{1,2}$/;

var str=document.form1.all(i).value;

var r=str.match(re);

if (r==null) {

sign=-4; break;

第 34 页 共 42 页

} else{

document.form1.all(i).value=parseFloat(str); }

CORBA方面

1、CORBA是什么?用途是什么?

答:CORBA 标准是公共对象请求代理结构(Common Object Request Broker Architecture),由对象管理组织 (Object Management Group,缩写为 OMG)标准化。它的组成是接口定义语言(IDL), 语言绑定(binding:也译为联编)和允许应用程序间互操作的协议。 其目的为:

用不同的程序设计语言书写

在不同的进程中运行

为不同的操作系统开发

LINUX方面

1、LINUX下线程,GDI类的解释。

答:LINUX实现的就是基于核心轻量级进程的\一对一\线程模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。

第 35 页 共 42 页

建identity和trust keystore,装载获得的密钥和数字证书。可以配置此SSL连接是单向还是双向的。

8、在weblogic中发布ejb需涉及到哪些配置文件

不同类型的EJB涉及的配置文件不同,都涉及到的配置文件包括ejb-jar.xml,weblogic-ejb-jar.xmlCMPweblogic-cmp-rdbms-jar.xml

9、EJB需直接实现它的业务接口或Home接口吗,请简述理由.

远程接口和Home接口不需要直接实现,他们的实现代码是由服务器产生的,程序运行中对应实现类会作为对应接口类型的实例被使用。

10、说说在weblogic中开发消息Bean时的persistent与non-persisten的差别

persistent方式的MDB可以保证消息传递的可靠性,也就是如果EJB容器出现问题而JMS服务器依然会将消息在此MDB可用的时候发送过来,而non-persistent方式的消息将被丢弃。

11、说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法

Session Facade Pattern:使用SessionBean访问EntityBean

Message Facade Pattern:实现异步调用

EJB Command Pattern:使用Command JavaBeans取代SessionBean,实现轻量级访问

Data Transfer Object Factory:通过DTO Factory简化EntityBean数据提供特性

第 41 页 共 42 页

实体Bean一般还需要

Generic Attribute Access:通过AttibuteAccess接口简化EntityBean数据提供特性

Business Interface:通过远程(本地)接口和Bean类实现相同接口规范业务逻辑一致性

EJB架构的设计好坏将直接影响系统的性能、可扩展性、可维护性、组件可重用性及开发效率。项目越复杂,项目队伍越庞大则越能体现良好设计的重要性

from java-cn

第 42 页 共 42 页

本文来源:https://www.bwwdw.com/article/inbx.html

Top