数据仓库架构师笔试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据仓库架构师笔试题
1、请简述下什么缓慢变化维,以及通过设计怎样解决缓慢变化维的问题。
参考答案:这道题是数据仓库的基础知识题,能答对答全的基本可确定对方有一定的数据仓库开发和设计经验。
1)
2、请简述下数据仓库一般有哪两种设计模式,以及这两种设计模式的优缺点。
参考答案:这题属于简单的基础知识题。其解题思路如下:
1)能准确说出雪花模型和星型模型这两个模型的,算及格。
2)能描述出雪花模型和星形模型分别是怎样一种模型,比如星型模型是维度与事实表直接关联,不存在多层维度的结构,而雪花模型层了维度表保持三范
式或准三范式设计外其它与星形模型一样的,最好能用图例画出来的,得90
分。
3)能够说出雪花模型和星形模型的优缺点的,其中星形模型减少了关联,用空间换时间,性能更优,雪花模型结构更清晰,维护更方便,但性能差一些。
通常的数据仓库建设都是两者的混合模式存在。得满分。
3、请简述下自己做过的项目中用过那些实体,以及各实体间的关系,并将实体中的一些核
心属性列出来。
参考参考:这道题没有标准答案,根据各自项目的情况有不同答案,首先面试者必须将项目中的关键实体、实体属性,以及实体间的关系描述出来。另外可以通过对方的描述,了解对方在对所做项目的了解程度,在项目中承担的角色和作用,以及对方的语言沟通能力。
4、7、请简述下在实体关系是1对1,1对多,多对多的情况下,怎么去设计表来记录两
个实体之间的关系,可举例说明。
参考答案:本题算是一道相对简单的设计基础题,如果这题答不出来,基本确定没什么数据库设计经验,并且作为开发人员对数据库结构的了解也是很有限的。解题思路如下:1)1对1关系可以将其中一个表的主键带到另一个表中,以便于关联查询。
2)1对多关系只能将前者的主键带在后者的表中,不能反过来。比如学校和班级表,只能表学校的标识放在班级表中,而不能反过来。
3)多对多关系则必须在两者之间额外创建一张中间表(一般叫交叉表),这个答案才是最关键的答案,没答对这个,基本可以判定不及格。
5、请简述下数据库(以Oracle为例)有哪几种常见的Join方式,并简要描述各种Join
方式用在哪种场景下会比较适合?
6、请简要描述下数据库(以Oracle为例)有哪几种常见的索引,并说明每种索引的优缺
点。
7、假设现在有一个社保缴费清单表A(社保号,参保单位编号,缴费月份),缴费清单保
存个人历史所有参数记录。请用一个SQL(可使用伪代码)统计出每个参保人(以社保号标识一个人)在每段工作经历(以缴纳社保为准)的最早缴社保月份、最近缴社保月份,
以及缴纳月份数。
参考答案:这题是一道比较复杂的题,即考验了一个人的理解能力,也考验了实
际开发能力。具体解题思路和计分情况如下:
4)此题如果如果知道通过社保号、参保单位编号作为分析函数的分组键,然后取最大月份,最小月份,算30分。
5)如果能了解到一个人可能对某家公司有多次进出的情况。算及格。
6)如果能分清楚直接用在某家企业最大缴纳月份减去最小缴纳月份取月份数存在可能性错误的,可得80分。
7)如果能通过缴纳月份减去以社保号、参保单位作为分组,以缴纳月份排序生成的序号来作为每次工作经历的分组基数,再通过该分组基础取最大月份和
最小月份之差得出结果的,以满分计。如果能通过其它更复杂的思路得出结
果,可算90分。
8、假设现在有一张日志表(日志流水号,程序名,开始时间,结束时间,运行状态),目
前日志流水号是主键,程序名和运行状态这两个字段上建了普通索引,请用一个SQL 求出最近某个程序的最近成功运行时间。假设总共只有10个程序在运行,但每过3秒运行一次,使得运行的日志越来越大,那以上面的SQL性能是否已经出现问题?如果出现问题,请在不删除日志记录的情况下,怎么去优化这个过程。
参考答案:这首题算中等复杂难度。解决思路及计分情况如下:
1)能知道当前性能的瓶颈使用当前索引根本无法解决的,算及格。
2)能通过将日志表按天分区按小时子分区存储日志,然后尽量从最近分区向早期分区递进查询的,算80分。
3)能想出重新创建一张表,通过程序控制只保存最近成功日志,则可得满分。