JAVAOracle面试题目.docx
《JAVAOracle面试题目.docx》由会员分享,可在线阅读,更多相关《JAVAOracle面试题目.docx(10页珍藏版)》请在冰豆网上搜索。
JAVAOracle面试题目
Oracle面试题
一、连字符
比如雇员的名字和工作代码被合并到一个单个的输出列中。
二、请问oracle下有自动增长类型的字段吗?
--没有
三、视图的优点有哪些?
--对预订的一组行列的访问,提供了另外的安全性
--隐藏了数据的复杂性
--简化了用户的命令
--重名名列
--将应用程序与基表定义的修改隔离开来
四、表A不存在,可以基于表A建立视图吗?
伪视图
createforceview视图名称
asselect×from表A
五、通过视图可以修改基表数据吗?
--在没有‘withcheckoptionconstant’的条件可以更改
六、索引储存时保存了哪些内容?
--rowid和每一行索引的值结合起来
七、Select语句中的关键字UNIQUE,ALL,INTERSECT,MINUS,STARTWITHCONNECTBY,ROLLUP,CUBE?
八、哪些语句是DDL,DCLDML?
九、可以基于多列建立索引吗?
--组合索引
一十、pl/sql块中能不能使用ddl语句?
--不能只能用DML和TCL
一十一、.raw用来存储什么类型的数据,它的最大长度是多少?
可以将raw类型的变量插入到数据库表的raw类型字段中吗?
用于存储二进制数据或字节串。
最大长度是2000个字节
不能向RAW列中插入长度大于2000个字节的RAW的值。
但可以向LONGRAW数据库中插入任何RAW的值
一十二、lob数据类型的数据库列存储的内容是什么?
文本,图像图形,视频剪辑,声音剪辑
一十三、空Lob指的是一个什么样的lob?
它是什么函数来完成的?
空LOB是一个具有定位器且长度为零的LOB,可以通过(EMPTY_BLOB()或EMPTY_CLOB())
一十四、.如何向BFILE类型的列中插入数据?
如有表books(chaptervarchar2(10),contentbfile),
如何向表中插入一条数据chapter='chapter1',content指向c:
"bookdata"book01.doc文件呢.写出完成步骤?
(1.)创建表createtablebooks
(
chaptervarchar2(10),
contentclob
)
droptablebooks
select*frombooks
(2.)在system用户下创建目录
createorreplacedirectorybookdataas'J;"myproject"Oracle"work'
(3.)在system用户下给lee授权
grantreadondirectorybookdatatolee
(4.)
declare
l_bfilebfile;
l_clobclob;
begin
insertintobooks(chapter,content)values('01',empty_clob())returncontentintol_clob;
l_bfile:
=bfilename('BOOKDATA','"001.txt');
dbms_lob.open(l_bfile,dbms_lob.file_readonly);
dbms_lob.loadfromfile(l_clob,l_bfile,
dbms_lob.getlength(l_bfile));
dbms_lob.close(l_bfile);
commit;
end;
一十五、如果写一个case语句来判断成绩信息mark,当大于90时输出'优秀',大于80时输出‘良好’,大于70时输出一般,大于60输出及格,小于60时输出未通过?
select(casewhens_mark<100ands_mark>80then'优异'
whens_mark<=80ands_mark>=60then'优秀'
whens_mark<=59ands_mark>=40then'良好'
whens_mark<40ands_mark>=20then'一般'
whens_mark<=19ands_mark>0then'较差'
end)as成绩fromstumark
一十六、case和decode 语句有什么区别?
分别在什么场合使用?
SELECTCASESIGN(5-5)WHEN1THEN'IsPositive'WHEN-1THEN'IsNegative'ELSE'IsZero'ENDFROMDUAL;
selectdecode(条件,结果1,输出1,结果2,输出2)
SELECTDECODE(SIGN(5-9),1,'IsPositive',-1,'IsNegative','IsZero')FROM DUAL
一十七、有哪几种事务隔离级别,他们都什么区别?
隔离级别脏读不可重复幻像读
READUNCOMMITTED允许允许允许
READCOMMITTED允许允许
REPEATABLEREAD允许
SERIALIZABLE
Oracle明确地支持READCOMMITTED(读已提交)和SERIALIZABLE(可串行化)隔离级别,因为标准中定义了这两种隔离级别。
不过,这还不是全部。
SQL标准试图建立多种隔离级别,从而允许在各个级别上完成的查询有不同程度的一致性。
REPEATABLEREAD(可重复读)也是SQL标准定义的一个隔离级别,可以保证由查询得到读一致的(read-consistent)结果。
在SQL标准的定义中,READCOMMITTED不能提供一致的结果,而READUNCOMMITTED(读未提交)级别用来得到非阻塞读,,在Oracle中,READCOMMITTED则有得到读一致查询所需的所有属性。
在其他数据库中,READCOMMITTED查询可能(而且将会)返回数据库中根本不存在的答案(即实际上任何时间点上都没有这样的结果)。
另外,Oracle还秉承了READUNCOMMITTED的“精神”。
(有些数据库)提供脏读的目的是为了支持非阻塞读,也就是说,查询不会被同一个数据的更新所阻塞,也不会因为查询而阻塞同一数据的更新。
不过,Oracle不需要脏读来达到这个目的,而且也不支持脏读。
但在其他数据库中必须实现脏读来提供非阻塞读。
除了4个已定义的SQL隔离级别外,Oracle还提供了另外一个级别,称为READONLY(只读)。
READONLY事务相对于无法在SQL中完成任何修改的REPEATABLEREAD或SERIALIZABLE事务。
如果事务使用READONLY隔离级别,只能看到事务开始那一刻提交的修改,但是插入、更新和删除不允许采用这种模式(其他会话可以更新数据,但是READONLY事务不行)。
如果使用这种模式,可以得到REPEATABLEREAD和SERIALIZABLE级别的隔离性。
一十八、Intersect和Minus之间有何差别?
一十九、若一个Sequence的最大值为200,并且当前值为200,那么当去nextValue时,会是什么情况?
二十、如何查找过大的匿名PLSQL块,如果存在,有什么解决方案?
查找是否存在过大的匿名pl/sql代码块。
两种解决方案:
A.转换成小的匿名块调用存储过程
B.将其保留在sharedpool中
查找是否存在过大的匿名pl/sql块:
Selectsql_textfromv$sqlareawherecommand_type=47andlength(sql_text)>500;
二十一、如何调整调整buffercache的大小?
根据v$db_cache_advice调整buffercache的大小
SELECTsize_for_estimate,buffers_for_estimate,estd_physical_read_factor,estd_physical_readsFROMv$db_cache_adviceWHERENAME='DEFAULT'ANDadvice_status='ON'ANDblock_size=(SELECTValueFROMv$parameterWHERENAME='db_block_size');
二十二、哪些数据库对象应该有单独的表空间?
哪些数据库对象应该有单独的表空间:
数据字典、回滚段、索引、临时段、表、大对象
二十三、检查IO统计数据
Selectphyrds,phywrts,d.namefromv$datafiled,v$filestatfwheref.file#=d.file#orderbyd.name;
检查最有可能引起磁盘IO瓶颈的文件。
二十四、NotExist和NotIn那个效率高?
第二种格式中,子查询以‘select'X'开始。
运用EXISTS子句不管子查询从表中抽取什么数据它只查看where子句。
这样优化器就不必遍历整个表而仅根据索引就可完成工作(这里假定在where语句中使用的列存在索引)。
相对于IN子句来说,EXISTS使用相连子查询,构造起来要比IN子查询困难一些。
通过使用EXIST,数据库系统会首先检查主查询,然后运行子查询直到它找到第一个匹配项,这就节省了时间。
Oracle系统在执行IN子查询时,首先执行子查询,并将获得的结果列表存放在在一个加了索引的临时表中。
在执行子查询之前,系统先将主查询挂起,待子查询执行完毕,存放在临时表中以后再执行主查询。
这也就是使用EXISTS比使用IN通常查询速度快的原因。
同时应尽可能使用NOTEXISTS来代替NOTIN,尽管二者都使用了NOT(不能使用索引而降低速度),NOTEXISTS要比NOTIN查询效率更高。
二十五、innerjoinleftjoinrightjoin之间的区别?
Java面试题
1.Java中多态有哪些表现形式,都有什么区别
a)Override
b)Overload
区别:
1)override是父类与子类之间多态性的一种表现,overload是一个类中多态性的一种表现。
2)如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。
3)如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型或有不同的参数次序,则称为方法的重载(Overloading)。
2.Abstractclass和interface有什么区别
a)抽象类中可以有实体方法,接口中的方法全部是抽象方法
b)接口中的方法全部是public的,属性全部是publicstaticfinal的。
抽象类则和其他类类似。
c)一个类可以实现多个接口,但只能继承一个抽象类。
3.List,Set,Map几个接口有什么共同点和不同点
a)都是java.util包下的接口
b)List和Set都是Collection的子接口,Map没有父接口
c)List的元素是有序的,元素可以重复。
Set的元素不能保证次序,存入的元素不能有重复。
d)Map使用key-value来映射和存储数据,Key必须惟一,value可以重复。
4.请解释一下Java的泛型,使用泛型有什么好处
a)泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法
b)泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率
5.多线程有几种实现方法,都是什么?
同步有几种实现方法,都是什么?
a)多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
b)同步的实现方面有两种,分别是synchronized,wait与notify
6.Java类实现Serializable接口有什么用处,Serializable接口需要实现什么方法
a)实现Serializable接口的类才可以被序列化,才可以在网络或者进行I/O读取操作。
b)实现Serializable接口不需要实现任何方法。
7.说出Servlet的生命周期
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy方法
8.说出数据连接池的工作机制是什么
J2EE服务器启动时会建立一定数量的池连接,并一直维持不少于此数目的池连接。
客户端程序需要连接时,池驱动程序会返回一个未使用的池连接并将其表记为忙。
如果当前没有空闲连接,池驱动程序就新建一定数量的连接,新建连接的数量有配置参数决定。
当使用的池连接调用完成后,池驱动程序将此连接表记为空闲,其他调用就可以使用这个连接。
9.解析XML文档有哪几种方式?
a)DOM:
DOM在解析文件之前把整个文档装入内存,如果处理大型文件时其性能下降的非常厉害。
这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,适合对XML的随机访问。
b)SAX:
SAX是事件驱动型的XML解析方式。
它顺序读取XML文件,不需要一次全部装载整个文件。
当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
c)StAX:
StAX把重点放在流上。
实际上,StAX与其他方法的区别就在于应用程序能够把XML作为一个事件流来处理。
将XML作为一组事件来处理的想法并不新颖(事实上SAX已经提出来了),但不同之处在于StAX允许应用程序代码把这些事件逐个拉出来,而不用提供在解析器方便时从解析器中接收事件的处理程序。
10.EJB有几种类型,他们之间的区别有哪些?
a)SessionBean,EntityBean,Message-DrivenBean
b)SessionBean是一种非持久性对象,它实现某些在服务器上运行的业务逻辑。
c)EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。
11.请说出IOC和AOP的概念以及在spring中是如何应用的
a)IoC的全称是InversionofControl即控制反转。
IoC模式中,创建对象实例的任务交给IoC容器或框架,使得应用代码只需要直接使用实例
b)AOP的全称是Aspect-OrientedProgramming即面向方面编程。
AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离”。
它允许程序员对横切关注点或横切典型的职责分界线的行为(例如日志和事务管理)进行模块化。
AOP的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中。
c)Spring的核心容器的主要组件是BeanFactory,它是工厂模式的实现。
BeanFactory使用控制反转(IOC)模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。
d)通过配置管理特性,SpringAOP模块直接将面向方面的编程功能集成到了Spring框架中。
所以,可以很容易地使Spring框架管理的任何对象支持AOP。
SpringAOP模块为基于Spring的应用程序中的对象提供了事务管理服务。
通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成到应用程序中。
12.如何集成strut2、Spring和hibernate,需要做什么样的工作?
a)在web.xml中配置springcontextConfigLocation和strut2的FilterDispatcher
b)在struts.xml中配置struts.objectFactory属性为spring
c)在spring的contextxml中配置hibernate的datasource和sessionfactory.
13.Hibernate的延迟加载有什么意义?
如果配置了延迟加载,在页面前端用到了延迟加载的属性,会有什么问题,如何避免?
a)设置属性的延迟加载可以避免不必要的数据库读取,只有在真正调用属性get方法的时候才读取数据库,可以减少对数据库访问次数,提高加载速度。
b)如果配置了延迟加载属性,在页面前端使用时会因为sessionfactory已经关闭,导致属性无法获取。
可以通过在web.xml中配置OpenSessionInView的filter来避免。
14.常见的ajax的框架有哪些?
介绍一下你所熟悉框架的用法。
dwr,jquery,json,dojo,prototype…
15.String和Stringbuffer间有和区别
后者的长度可变
16.Dependencylookup和DependencyInjection是Spring框架的哪个特性?
两者之间有何区别?
17.DependencyInjection有几种类型
SetterInjection和ConstructorInjection
18.IOCContainer提供了两者类型的Containter,是哪两种?
它们之间有何区别
BeanFactory:
ApplicationContext:
Context预先Loading所有的SingleTonBean,即启动时不需要等待Bean的生成。
另外它提供了对国际化的支持。
19.Bean的三中实例化方式
(1)不需要特定的Interface
(2)StaticFactoryMethod
(3)InstanceFactoryMethod
20.Anotation是什么?
它有什么作用?
列举几个用过的Anotation并说明?
如何自定义一个Anotation?
@retention,@target,@resource等
21.jsp有哪些内置对象?
作用分别是什么?
JSP共有以下9种基本内置组件:
request用户端请求,此请求会包含来自GET/POST请求的参数
response网页传回用户端的回应
pageContext网页的属性是在这里管理
session与请求有关的会话期
applicationservlet正在执行的内容
out用来传送回应的输出
configservlet的构架部件
pageJSP网页本身
exception针对错误网页,未捕捉的例外
22.spring的声明式事务是如何实现的用到了什么设计模式
通过动态代理模式实现同时有AOP的概念
23.hibernate的cascade和inverse的概念区别
cascade级联inverse是镜像
24.谈谈struts1.x中的ActionServlet和Action分别使用到了J2EE的哪些设计模式
FrontController,command模式
25.Socket编程中TCP/IP协议和UDP协议的区别
三次握手邮件
26.如何实现无阻塞的Socket编程NIO概念
利用NIO的通道事件响应selector注册来达到无阻塞
27.数据库脏读不可重复读幻影读的概念以及如何避免以上情况
读取到其他事务未提交的操作
读取到其他事务已经提交的操作
先后两次读取同样的检索由于有其他事务的影响结果集的数目发生变化
利用锁,事务隔离级别
28.如果看待选择hibernate的session.delete方法执行大批量数据删除操作
产生大量对象建议直接用jdbc删除
29.prototype中闭包的概念
closurejavascript中作用域的申明和生成地点绑定
30.如何防止内存泄漏
释放该释放的资源利用LURFIFO等算法替换长时间无用的对象避免内存不足
利用weakreference立即释放对象资源softreference内存不足时候回收资源不必等到垃圾回收点的触发
养成良好的tryfinally习惯在finally中手动释放资源
31.数组如何声明,实例化,特别是二维数组
数组声明的方式一般有两种,比如一个int数组:
int[]intArray;
intintArray[];都可以,推荐使用第一种,
数组的实例化是通过new关键字实现的,int[]intArray=newint[3];
二维数组,比如定义一个2行3列的数组int[][]intArray=newint[2][3];
实际上。
对于每行列数可以不同
32.关于GC,列举常见的垃圾回收算法
引用计数法(ReferenceCountingCollector)
跟踪法(TracingCollector)
compacting算法(CompactingCollector)
copying算法(CopingCollector)等等,一般常用的引用计数法和跟踪法
33.Struts1Struts2SpringMvc的前端控制器分别是什么,讲述其中一种MVC的工作流程
Struts1采用servlet作为前端控制器,具体为ActionServlet
Struts2采用Filter作为前端控制器,具体为FilterDispatcher
Spring采用servlet作为前端控制器,具体为DispatcherServlet
34.如何格式化日期,比如系统时间,格式为YYYY-MM-D