数据仓库及BI工程师面试题集锦
前言
1、介绍一下项目经验、项目中的角。
一、数据库
1、Oracle数据库,视图与表的区别?普通视图与物化视图的区别?物化视图的作
用?
i.视图与表的区别
1.1、视图是已经编译好的sql语句。而表不是
2.视图没有实际的物理记录。而表有。sql查询面试题
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测试。
e)编写详细设计。
f)上线后编写产品文档。
二、ETL工具
1、Informatica中,Update组件叫什么?更新机制?
2、Informatica中,LookUp组件有哪几类?区别是什么?
3、Informatica中,如何调用存储过程?
4、Informatica中,工作流控制有哪些组件?
5、Informatica优化方案?
6、DataStage的JOB有哪些类型?特点分别是什么?
7、DataStage中,如何设置parallel job并行运行?
8、DataStage中,Join Stage 与Lookup Stage组件在使用上有何区别?
9、DataStage的优化方案?
10、什么是维度?
人们观察数据的特定角度。例如,一个企业在考虑产品的销售情况时,通常从时间、地区和产品的不同角度来深入观察产品的销售情况。这里的时间、地区和产品就是
维。
11、事实表、维度表是什么?
12、事实表:就是所有需要统计值的表;维度表:根据时间或地区需要分析的数据
表。
13、DW维表分类