数据仓库面试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据仓库及BI工程师面试题集锦
前言
1、介绍一下项目经验、项目中的角色。
一、数据库
1、Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作
用?
i.视图与表的区别
1.1、视图是已经编译好的sql语句。而表不是
2.视图没有实际的物理记录。而表有。
3.表是内容,视图是窗口
4.表只用物理空间而视图不占用物理空间,视图只是逻辑概念的存在,
表可以及时四对它进行修改,但视图只能有创建的语句来修改ii.物化视图与视图区别
1.物化视图和视图差别非常大,不是几句能说清物化视图是自动刷新或者
手动刷新的,视图不用刷新物化视图也可以直接update,但是不影响b
ase table,对视图的update反映到base table上物化视图主要用于远
程数据访问,物化视图中的数据需要占用磁盘空间,视图中不保存数据。
2、Oracle数据库,有哪几类索引,分别有什么特点?
a) 1.单列索引与复合索引
一个索引可以由一个或多个列组成,用来创建索引的列被称为“索引列”。
单列索引是基于单列所创建的索引,复合索引是基于两列或者多列所创建的索引。
2.唯一索引与非唯一索引
唯一索引是索引列值不能重复的索引,非唯一索引是索引列可以重复的索引。
无论是唯一索引还是非唯一索引,索引列都允许取NULL值。默认情况下,Oracle 创建的索引是不唯一索引。
3.B树索引
B树索引是按B树算法组织并存放索引数据的,所以B树索引主要依赖其组织并存放索引数据的算法来实现快速检索功能。
4.位图索引
位图索引在多列查询时,可以对两个列上的位图进行AND和OR操作,达到更好的查询效果。
5.函数索引
Oracle中不仅能够直接对表中的列创建索引,还可以对包含列的函数或表达式创建索引,这种索引称为“位图索引”。
3、Union与Union All的区别?
a)Union会对查询结果进行排序去重,效率比union all 低,union all只是两个查询
集的合并操作。建议使用Union all,查询出来后再对数据进行去重操作。
4、对游标的理解?游标的分类?使用方法?
游标是映射在结果集中一行数据的位置实体,有了游标,用户就可以访问结果集中的任何一条数据。游标分为静态游标和REF游标,静态游标分为显示游标和隐式游标,
显示游标使用步骤是声明游标,打开游标,获取记录,关闭游标。所有的DML语句为隐式游标,可以从游标的属性获得sql语句的信息。REF游标是动态关联结果集的临时对象,使用步骤也是先要进行声明游标,然后打开游标,获取记录,关闭游标。
5、如何查找和删除表中的重复数据?给出方法或SQL。
查询表中重复数据。
Select * from people where id in (Select id from people group by id having count(id)>1);
Delete from people where id in(select id from people group by id having count(id)>1) and rowid not in (select min(rowid) from people group by id hacing count(id)>1);
创建索引有哪些需要注意的要点?
a)一般来说,不需要为比较小的表创建索引(数据占用存储空间小)
b)即使是大表,如果经常需要查询的数据不超过10%到15%的话,那就没有必要为
其建立索引的必要。
c)如对于一些重复内容比较少的列,特别是对于那些定义了唯一约束的列。在这些列
上建立索引,往往可以起到非常不错的效果。
d)数据库管理员,需要隔一段时间,如一年,对数据库的索引进行优化。该去掉的去
掉,该调整的调整,以提高数据库的性能。
e)通常来说,表的索引越多,其查询的速度也就越快。但是,表的更新速度则会降低。
这主要是因为表的更新(如往表中插入一条记录)速度,反而随着索引的增加而增加。
f)对于一些数据仓库或者决策型数据库系统,其主要用来进行查询。
g)位图索引。基数是位图索引中的一个基本的定义,它是指数据库表中某个字段内容
中不重复的数值。
6、Oracle数据库中,有哪几种分区?各自特点是什么?作用是什么?分区索引的分
类和作用?
范围分区,散列分区,复合分区,索引分区
7、表T(a,b,c,d),要根据字段c排序后取第21—30条记录显示,请给出sql。
select * from (select c.*,rownum as rn from (select * from t order by c) c) where rn
berween 21 and 30;
8、怎样优化数据库?
i.首先应确定那里出现性能问题,一般一个调度时常都会有时间log
记录,若发现某个调度时间过长,那么我们可以使用oracle自带
profiler进行诊断出该模块出现性能问题的sql。
ii.找出问题sql后对表大小进行分析,知道哪些是大表和小表。
iii.查看该sql执行计划(用autotrace)即可大概找出问题原因。
iv.查询方面:查看是否未走索引,或sql写法中有运算或<> 等影响走索引条件,或并未对关键关联字段创建索引,必要情况重建索引。
v.删除更新情况,尽量使用rowid。
9、华为开发流程是什么(CMMI)
a)华为接口人或业务提出需求文档。
b)我们根据需求文档写入概要设计。
c)根据概要设计进行开发。
d)开发完成后进行ut测试。