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


Posted in 面试题 onFebruary 07, 2016
一、 技术问题部分(数据库部分)
1、 表空间的管理方式有哪几种?
数据字典管理方式
本地文件管理方式
2、 谈谈你对索引的理解?
索引是若干数据行的关键字的列表,查询数据时,通过索引中的关键字可以快速定位到要访问的记录所在的数据块,从而大大减少读取数据块的I/O次数,因此可以显著提高性能。
3、 说说索引的组成?
索引列、rowid
4、 分区表用过么?谈谈分区表的应用?
分区表在对表的DML的并行处理上有极大得优势,而且可以一部分设为只读,用在销售记录,医院处方等地方!!
5、 你对分区表的理解?怎样截断分区表一个分区的记录?
一个分区表有一个或多个分区,每个分区通过使用范围分区、散列分区、或组合分区分区的行
分区表中的每一个分区为一个段,可各自位于不同的表空间中
对于同时能够使用几个进程进行查询或操作的大型表分区非常有用
alter table table_name truncate partition partition_name;
6、 物理文件有哪几种?控制文件包含了什么信息?
1) 数据文件 2)控制文件 3)日志文件
包含维护和验证有选举权据库完整性的必要信息、例如,控制文件用于识别数据文件和重做日志文件,一个有选举权据库至少需要一个控制文件
7、 表空间用完了如何增加?
三种种扩展方式:
1 增加数据文件 alter tablespace name add datafile ‘路径’ size 4M;
2 扩展数据文件大小alter database datafile ‘路径’ resize 4M;
3 把数据文件设为自动增长
alter database datafile ‘路径’ autoextend on next 1M maxsize 20M;
8、 SGA包含几部分?
Shared pool(共享池),DataBase Buffer Cache(数据缓冲区)
Redo Log Buffer(重做日志缓冲区), Large Pool,大池,JAVA池。

9、 DECODE函数的用法?
DECODE的语法:DECODE(value,if1,then1,if2,then2,if3,then3,…,else),表示如果value等于if1时,DECODE函数的结果返回then1,…,如果不等于任何一个if值,则返回else。初看一下,DECODE 只能做等于测试,但刚才也看到了,我们通过一些函数或计算替代value,是可以使DECODE函数具备大于、小于或等于功能。还可以转化表结构!
10、 DELETE和TRUNCATE的区别?

答:1、TRUNCATE在各种表上无论是大的还是小的都非常快。如果有ROLLBACK命令DELETE将被撤销,而TRUNCATE则不会被撤销。
  2、TRUNCATE是一个DDL语言,向其他所有的DDL语言一样,他将被隐式提交,不能对TRUNCATE使用ROLLBACK命令。
  3、TRUNCATE将重新设置高水平线和所有的索引。在对整个表和索引进行完全浏览时,经过TRUNCATE操作后的表比DELETE操作后的表要快得多。
  4、TRUNCATE不能触发任何DELETE触发器。
  5、不能授予任何人清空他人的表的权限。
  6、当表被清空后表和表的索引讲重新设置成初始大小,而delete则不能。
  7、不能清空父表。

11、 谈谈你对事务的理解?
ORACLE事务从COMMIT、ROLLBACK、连接到数据库或开始第一
条可执行的SQL语句时开始,到一条COMMIT、ROLLBACK语句或退出
数据库时结束。如果在一个事务中包含DDL语句,则在DDL语句的
前后都会隐含地执行COMMIT语句,从而开始或结束一个事务。
如果一个事务由于某些故障或者由于用户改变主意而必须在
提交前取消它,则数据库被恢复到这些语句和过程执行之前的状
态。
利用ROLLBACK语句可以在COMMIT命令前随时撤消或回退一个
事务。可以回退整个事务,也可以会退部分事务,但是不能回退
一个已经被提交的事务。回退部分事务的ROLLBACK命令为:
ROLLBACK to savepoint 存储点名
存储点是用户放入事务中的标记,用来表示一个可被回退的
位置。存储点通过在事务中放入一个SAVEPOINT命令而被插入。该
命令的语法是:
SAVEPOINT 存储点名
如果在ROLLBACK语句中没有给出存储点名,则整个事务被回
退。

12、 给表A加一列abc口述?
数据库正在应用时应先使数据库处于静默状态再
alter table a add abc varchar2(10),
如果不是就直接用!!
13、 客户端连接服务器需要修改什么文件?
tnsname.ora,listener.ora
14、 索引重建的概念?说说索引重建的意义?
当我们创建索引时,oracle会为索引创建索引树,表和索引树通过rowid(伪列)来定位数据。当表里的数据发生更新时,oracle会自动维护索引树。但是在索引树中没有更新操作,只有删除和插入操作。

例如在某表id列上创建索引,某表id列上有值“101”,当我将“101”更新为“110”时,oracle同时会来更新索引树,但是oracle先将索引树中的“101”标示为删除(实际并未删除,只是标示一下),然后再将“110”写到索引树中。

如果表更新比较频繁,那么在索引中删除标示会越来越多,这时索引的查询效率必然降低,所以我们应该定期重建索引。来消除索引中这些删除标记。

一般不会选择先删除索引,然后再重新创建索引,而是rebuild索引。在rebuild期间,用户还可以使用原来的索引,并且rebuild新的索引时也会利用原来的索引信息,这样重建索引会块一些。
15、 你对游标的理解,游标的分类,使用方法?
游标是结果集数据中的指针,作用是为遍历结果集时,存储每条记录的结果,
1.声明游标,2.打开游标,3.提取游标,4.关闭游标
游标for循环
显式游标,隐式游标,游标变量!

16、 存储过程的用法?在存储过程中异常的处理,分类?举两个预定义异常的例子?
存储过程:是预编译数据库SQL的集合
存储过程是预编译过的,执行时勿须编译,执行速度更快,存储过程封装了一批SQL语句,便于维护数据的完整性与一致性。并且可以多次调用。
异常:自定义,预定义,非预定义
No_Data_Found Too_Many_Rows CASE_NOT_FOUND
17、 谈谈你对分区索引的理解,说说分类和区别?
分区表和一般表一样可以建立索引,分区表可以创建局部索引和全局索引。当分区中出现许多事务并且要保证所有分区中的数据记录的唯
一性时采用全局索引。
  1.3.1. 局部索引分区的建立:
SQL> create index dinya_idx_t on dinya_test(item_id)
2 local
3 (
4 partition idx_1 tablespace dinya_space01,
5 partition idx_2 tablespace dinya_space02,
6 partition idx_3 tablespace dinya_space03
7 );
Index created.
SQL>
  看查询的执行计划,从下面的执行计划可以看出,系统已经使用了索引:
SQL> select * from dinya_test partition(part_01) t where t.item_id=12;
Execution Plan
———————————————————-
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=1 Bytes=187)
1 0 TABLE ACCESS (BY LOCAL INDEX ROWID) OF ’DINYA_TEST’ (Cost=
2 Card=1 Bytes=187)
2 1 INDEX (RANGE SCAN) OF ’DINYA_IDX_T’ (NON-UNIQUE) (Cost=1
Card=1)
Statistics
———————————————————-
0 recursive calls
0 db block gets
4 consistent gets
0 physical reads
0 redo size
334 bytes sent via SQL*Net to client
309 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
1 sorts (memory)
0 sorts (disk)
2 rows processed
SQL>
  1.3.2. 全局索引分区的建立
  全局索引建立时global 子句允许指定索引的范围值,这个范围值为索引字段的范围值:
SQL> create index dinya_idx_t on dinya_test(item_id)
2 global partition by range(item_id)
3 (
4 partition idx_1 values less than (1000) tablespace dinya_space01,
5 partition idx_2 values less than (10000) tablespace dinya_space02,
6 partition idx_3 values less than (maxvalue) tablespace dinya_space03
7 );
Index created.
SQL>
  本例中对表的item_id字段建立索引分区,当然也可以不指定索引分区名直接对整个表建立索引,如:
SQL> create index dinya_idx_t on dinya_test(item_id);
Index created.
SQL>
  同样的,对全局索引根据执行计划可以看出索引已经可以使用:
SQL> select * from dinya_test t where t.item_id=12;
Execution Plan
———————————————————-
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=2 Card=3 Bytes=561)
1 0 TABLE ACCESS (BY GLOBAL INDEX ROWID) OF ’DINYA_TEST’ (Cost
=2 Card=3 Bytes=561)
2 1 INDEX (RANGE SCAN) OF ’DINYA_IDX_T’ (NON-UNIQUE) (Cost=1
Card=3)
Statistics
———————————————————-
5 recursive calls
0 db block gets
10 consistent gets
0 physical reads
0 redo size
420 bytes sent via SQL*Net to client
309 bytes received via SQL*Net from client
2 SQL*Net roundtrips to/from client
3 sorts (memory)
0 sorts (disk)
5 rows processed
18、 创建用户的语句?
Create user user_name identified by password
default tablespace tablespacename;
grant create session to username;

19、 谈谈你对实例的理解?
Oracle是用实例来进行数据库管理的,实例在用户和orale数据库之间充当中间层的角色。每当在服务器上启动数据库时,就在内存中创建一个oracle实例,即oracle为数据库分配内存和创建并启动一个或多个oracle进程,然后由实例加载并打开数据库,最后由这个实例来访问和控制硬盘中的数据文件。
20、 触发器中能用COMMIT,为什么?
在触发器中不能使用COMMIT;等事务控制语句。因为触发器是事务触发的如果有事务控制语句就会影响到触发它的事务。即连带触发它的语句之前的已经完成的没有提交的语句都要受到影响。这是会影响到数据的一致性的。
21、 有几种表空间?
数据表空间(永久表空间)、临时表空间、撤销表空间
22、 归档模式与非归档模式?为什么归档模式可以恢复到任意时刻?
归档是在重做日志文件被覆盖之前,将该重做日志文件通过复制操作系统文件的 方式,保存到指定的位置。保存下来的重做日志文件的集合被称为归档重做日志文件,复制的过程被称为归档。
在归档日志(ARCHIVELOG)模式下,ORACLE对重做日志文件进行归档操作。非归档日志(NOARCHIVELOG)模式下,不会对重做日志文件进行归档操作。由于非归档模式不会在覆盖之前保存,这样就造成了数据库在一定时间之前的重做日志文件丢失,也就不能恢复到被覆盖之前。而归档模式在任意时间上都有重做日志文件,故可以恢复到任意时刻。

二、技术问题(JAVA部分)
1、 Struts和Hibernate分别属于持久层,用例层,表示层的那一层?
Struts是表示层,Hibernate是持久层。
2、 Struts里如何体现MVC模式?
Html或jsp文件是MVC模式中的视图层
ActionForm是MVC模式中的模式层
Action是MVC模式中的控制层
通过控制层可以对视图层和模式层进行业务逻辑的处理
3、 用Struts做过那些项目?
4、 谈谈对Struts的认识?
Struts跟Tomcat诸多Apache项目一样,是开源软件,这是它的一大优点。使开发者能更深入的了解其内部实现机制。  
  除此之外,Struts的优点主要集中体现在两个方面:Taglib和页面导航。Taglib是Struts的标记库,灵活动用,能大大提高开发效率。另外,就目前国内的JSP开发者而言,除了使用JSP自带的常用标记外,很少开发自己的标记,或许Struts是一个很好的起点。
  关于页面导航,我认为那将是今后的一个发展方向,事实上,这样做,使系统的脉络更加清晰。通过一个配置文件,即可把握整个系统各部分之间的联系,这对于后期的维护有着莫大的好处。尤其是当另一批开发者接手这个项目时,这种优势体现得更加明显。    
但是我觉得它虽然还有不少缺点,但它是一种非常优秀的J2EE MVC实现方式,对项目的开发有很大的帮助。
5、 String在JAVA里是固定长度的吗?为什么可以用”+”连接?
String 在JAVA中是有固定长度的

可以用”+”连接的原因是Java 语言提供对字符串串联符号(”+”)和其他对象到字符串的转换的特殊支持。字符串串联是通过 StringBuilder(或 StringBuffer)类及其 append 方法实现的。再通过调用StingBuffer中的toString方法,将StringBuffer的对象转换String的对象。
6、 String和StringBuffer的区别?
STRING的长度是不可变的,STRINGBUFFER的长度是可变的。如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法
7、 使用过什么集合类型?你一般用什么类?
集合类型List,Set,Map
一般用Arraylist,Vector,HashMap,HashTable,HashSet,TreeSet

8、 ArrayList里如何取得对象的长度?
通ArrayList中的size()可以取得对象长度。
9、 事务的4个特性?
原子性、一致性、持久性、隔离性。
10、 Oracle用了多久?char与varchar2的区别?
Char是固定长度字符串,varchar2是变长字符串。
比如在char(10)和varchar2(10)中插入test字符串那么
char(10)类型长度就是10,不足的用空格补齐,而
varchar2(10)类型长度就是4。
11、 Oracle用什么获得字符集?
Userenv(‘’)函数
SELECT userenv(‘language’) FROM DUAL;
12、 查询需要COMMIT吗?插入呢?
查询不需要,插入需要,因为做DML操作时需要commit命令确认事务更改。
13、 在Oracle中你用什么工具执行SQL语句?
PLSQL Developer,SQLPLUS等

三、 非技术问题部分
1、 自我介绍!
2、 你对出差的看法?
3、 你对加班的看法?
4、 你认为你适合IT业吗?
5、 你觉得你的优势在什么地方?
6、 你有什么其他的爱好?
7、 你能吃苦吗?

Tags in this post...

面试题 相关文章推荐
编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串
Jan 07 面试题
WebSphere 应用服务器都支持哪些认证
Dec 26 面试题
怎样声明子类
Jul 02 面试题
链表面试题-一个链表的结点结构
May 04 面试题
关于递归的一道.NET面试题
May 12 面试题
什么是托管函数?托管函数有什么用?
Jun 15 面试题
标记环网Toke Ring IEEE802.5
May 26 面试题
Linux如何为某个操作添加别名
Feb 05 面试题
如果重写了对象的equals()方法,需要考虑什么
Nov 02 面试题
Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
Jan 27 面试题
UNIX文件类型
Aug 29 面试题
Shell脚本如何向终端输出信息
Apr 25 面试题
介绍一下SQL Server里面的索引视图
Jul 31 #面试题
一组SQL面试题
Feb 15 #面试题
SQL Server里面什么样的视图才能创建索引
Apr 17 #面试题
第一范式(1NF)、第二范式(2NF)和第三范式(3NF)之间的区别是什么?
Apr 28 #面试题
介绍一下sql server的安全性
Aug 10 #面试题
汇智创新科技发展有限公司
Dec 06 #面试题
如何提高SQL Server的安全性
Jul 25 #面试题
You might like
缓存技术详谈―php
2006/12/14 PHP
PHP simple_html_dom.php+正则 采集文章代码
2009/12/24 PHP
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
PHP使用range协议实现输出文件断点续传代码实例
2014/07/04 PHP
10个超级有用的PHP代码片段果断收藏
2015/09/23 PHP
PHP统计当前在线用户数实例讲解
2015/10/21 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
2019/05/29 PHP
JS判断对象是否存在的10种方法总结
2013/12/23 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
小议JavaScript中Generator和Iterator的使用
2015/07/29 Javascript
JS判断图片是否加载完成方法汇总(最新版)
2016/05/13 Javascript
node.js 动态执行脚本
2016/06/02 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
angularjs 缓存的使用详解
2018/03/19 Javascript
elementUI多选框反选的实现代码
2019/04/03 Javascript
[58:59]完美世界DOTA2联赛PWL S3 access vs CPG 第一场 12.13
2020/12/16 DOTA
[01:19:46]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第一场 2月28日
2021/03/11 DOTA
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
python实现跨excel的工作表sheet之间的复制方法
2018/05/03 Python
解析Python的缩进规则的使用
2019/01/16 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
HTML5利用约束验证API来检查表单的输入数据的代码实例
2016/12/20 HTML / CSS
法国太阳镜店:Sunglasses Shop
2016/08/27 全球购物
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
优秀体育委员自荐书
2014/01/31 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
个人工作表现自我评价
2015/03/06 职场文书
活动总结模板大全
2015/05/11 职场文书
暑期工社会实践报告
2015/07/13 职场文书
生产设备维护保养制度
2015/08/06 职场文书
2016医师资格考试考生诚信考试承诺书
2016/03/25 职场文书
妇联2016年六一国际儿童节活动总结
2016/04/06 职场文书
创业计划书详解
2019/07/19 职场文书
2019年警察入党转正申请书最新范文
2019/09/03 职场文书
css height属性中的calc方法详解
2021/06/03 HTML / CSS