大数据开发笔试题(一)

1、Oracle 中下列哪个表达式值为 true?(D)
A、null = null
B、’’ = null
C、0 = null
D、以上三个都不为 true

2、Oracle 支持的表分区类型为?(ABD)
A、List
B、Range
C、HashMap
D、复合分区

3、下列对 Oracle 索引的说法正确的是?(AD)
A、索引在 Oracle 中通过 B+ 树存储
B、Oracle 只支持全局索引
C、Oracle 不支持分区索引
D、索引可以提高表的访问速度

4、对于 Oracle 存储过程和函数下列说法错误的是?(CD)
A、函数总是向调用者返回数据,并且一般只返回一个值
B、存储过程不直接返回数据,但可以改变输出参数的值
C、存储过程必须带有输出参数
D、函数不能定义输出参数

5、数据库中的对象包括?(ACD)
A、表
B、权限
C、视图
D、存储过程
在这里插入图片描述
6、Hive 的 sortby 和 orderby 的区别?
orderby 会对输入的数据做全局排序,只有一个 reduce,数据量较大时,很慢。sortby 不是全局排序,只能保证每个 reduce 有序,不能保证全局有序。

7、在 hive 中,什么情况容易出现数据倾斜?怎么解决?
倾斜原因:map 输出数据按 key Hash 的分配到 reduce 中,由于 key 分布不均匀、业务数据本身的特点、建表时考虑不周等原因造成 reduce 上的数据量差异过大。
(1) key 分布不均匀
(2) 业务数据本身的特性
(3) 建表时考虑步骤
(4) 某些 hql 语句本身就存在数据倾斜

解决方案:
(1) 参数调整:hive.map.aggr = true hive.groupby.skewindata = true 有数据倾斜的时候进行负载均衡,当选项设置为 true,生成的查询计划会有两个 MR Job。第一个 MR job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果时相同的 group by key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR job 再根据预处理的结果按照 Group By Key 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce 中),最后完成最终聚合操作。
(2) SQL 语句调整
A、选用 join key 分布最均匀的表作为驱动表。做好列裁剪和 filter 操作,以达到两表做 join 的时候,数据量相对变小的效果。
B、大小表Join: 使用 map join 让小的维度表(1000 条以下的记录条数)先进内存。在 map 端完成 reduce。
C、大表Join大表: 把空值的 key 变成一个字符串加上随机数,把倾斜的数据分到不同的reduce上,由于null 值关联不上,处理后并不影响最终结果。
D、count distinct 大量相同特殊值: count distinct 时,将值为空的情况单独处理,如果是计算 count distinct,可以不用处理,直接过滤,在最后结果中加1。如果还有其他计算,需要进行group by,可以先将值为空的记录单独处理,再和其他计算结果进行 union。

8、Oracle有几种表关联方式?有何区别?
Oracle 中,表关联主要有四个:inner join、left join、right join、full outer join。其中 inner join 为内连接,当关联的左右两个表记录都存在时,记录才会出现在关联结果中。而剩下三个均为外连接。其中 left join 保证左表记录都保留在关联结果中,而记录在右表总关联不上的则置为空,right join 与 left join 类似。而 full outer join 则保证左右两个表都会出现在关联结果汇总,若记录在左表或右表中关联不上,则置为空。

9、何为数据仓库?OLAP与OLTP有何区别?
数据仓库是一个面向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它用于支持企业或组织的决策分析处理。数据仓库是为了便于多维分析和多角度展现而将数据按特定的模式进行存储所建立起来的关系型数据库,对多个异构的数据源有效集成,集成后按照主题进行了重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改。 当今的数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。 OLTP最大优点是可以即时地处理输入的数据,及时地回答。也称为实时系统(Real time System)。衡量联机事务处理系统的一个重要性能指标是系统性能,具体体现为实时响应时间(Response Time),即用户在终端上送入数据之后,到计算机对这个请求给出答复所需要的时间。OLTP是由数据库引擎负责完成的。 OLAP是数据仓库系统最主要的应用,专门设计用于支持复杂的分析操作,往往需对大数据量进行处理,侧重对决策人员和高层管理人员的决策支持。根据分析人员的要求快速、灵活地进行大数据量的复杂查询处理,并且以一种直观而易懂的形式将查询结果提供给决策人员,以便他们准确掌握企业的经营状况,了解对象的需求,制定正确的方案。

10、sql 编程题
设某公司数据库中有关系模式如下:
职工(职工号,职工名,性别,年龄)
工作(职工号,公司号,工资)
公司(公司号,公司名,地址)
请创建表并写出查询每个公司女职工的平均工资的SQL语句。

create table employee(employee_id CHAR(30), employee_name CHAR(30), gender CHAR(4), age INT(3));
create table job(employee_id CHAR(30), company CHAR(30), salary FLOAT);
create table company(company_id CHAR(30),company_name CHAR(30), address CHAR(30));
SELECT C.`company_name`, AVG(B.`salary`) AS female_avg_salary 
FROM employee A
INNER JOIN job B ON A.`employee_id` = B.`employee_id`
INNER JOIN company C ON B.`company` = C.`company_id`
WHERE A.`gender` = "女"
GROUP BY B.`company`;

你可能感兴趣的:(大数据开发笔试)