数据服务面试题(某不知名企业 做高校大数据的)

数据服务面试题

  1. 有一个录取学生人数表,记录的是每年录取学生人数和入学学生的学制

以下是表结构:

CREATE TABLE `admit` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `year` int(255) DEFAULT NULL COMMENT '入学年度',
  `num` int(255) DEFAULT NULL COMMENT '录取学生人数',
  `stu_len` varchar(255) DEFAULT NULL COMMENT '学生学制',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='录取人数';

year表示学生入学年度

num表示对应年度录取学生人数

stu_len表示录取学生的学制

说明:例如录取年度2018学制3,表示该批学生在校年份为2018~2019、2019~2020、2020~2021

以下是示例数据:

id

year

num

stu_len

1

2018

2000

3

2

2019

2000

3

3

2020

1000

4

4

2020

2000

3

根据以上示例计算出每年在校人数,写出SQL语句:

SQL







WITH recursive t(YEAR,num,stu_len) AS(SELECT YEAR,num,stu_len FROM admit

UNION ALL

SELECT YEAR+1,num,stu_len-1 FROM t WHERE stu_len >= 2)

SELECT YEAR,SUM(num) in_school_num

FROM t GROUP BY YEAR


 

计算结果截图:





 

  1. 简述一下Mysql的索引


 

主键索引:在创建表格的时候,添加了主键约束,那么就会自动生成主键索引

通过主键约束的创建,来生成这个主键索引

唯一索引:

2.1 在创建表格的时候,会根据唯一约束自动的生成唯一索引

2.2 在没有约束的前提下,手动创建唯一索引,唯一索引不会反过去创建唯一约束

普通索引:这个列经常需要被查询,但是这个列又没有什么特点

组合索引:和普通索引相同,有多个列需要同时被查询,但是这些列也没有什么特点,那么就放在一起,创建一个组合索引

函数索引:如果你的列,是需要被使用函数计算之后再用来查询,那么计算过程需要被写在索引里面

位图索引:列的内容是由大量的重复的内容组成的 bitmap

  1. Mysql插入数据的方式有多少种,分别的哪些:


INSERT INTO

INSERT INTO ... SELECT

LOAD DATA INFILE

INSERT IGNORE和INSERT ON DUPLICATE KEY UPDATE














 

  1. 内连接、自连接、外连接(左、右、全)、交叉连接的区别



内连接  [inner] join:

拼接左右两个表格,显示两个表格连接列共同拥有的数据

左连接  left [outer] join:

首先先显示左右两个表格所有的共同数据,然后再显示左边那边表独有的数据,因为右边没有匹配数据,所以显示为空

右连接  right [outer] join:刚好和左连接相反,首先先显示左右两个表格所有的共同数据,然后再显示右边那边表独有的数据,因为左边没有匹配数据,所以显示为空

全连接  full [outer] join:先显示两个表的共同数据,然后再显示左边表的独有数据,右边没有匹配就显示为空,然后再显示右边表的独有数据,左边没有匹配就显示为空。

. 自然连接(*natural join)*

自然连接不用指定连接列,也不能使用ON语句,它默认比较两张表里相同的列,

交叉连接(cross join):相当与笛卡尔积,左表和右表组合






 

  1. 说一下你对数仓分层的理解




数据分层却可以给我们带来如下的好处:

1.清晰数据结构:

2.复杂问题简单化

3.便于维护

  1. 减少重复开发

通常将数据仓库分为三层:

源数据层(ODS)

此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。

数据仓库层(DW)

DW 层的数据应该是一致的、准确的、干净的数据,即对源系统数据进行了清洗(去除了杂质)后的数据。

此层可以细分为两层:

明细层DWD(Data Warehouse Detail):存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联。

业务层DWS(Data WareHouse Service):存储宽表数据,此层数据是针对某个业务领域的聚合数据,应用层的数据通常来源与此层,为什么叫宽表,主要是为了应用层的需要在这一层将业务相关的所有数据统一汇集起来进行存储,方便业务层获取。此层数据通常来源与DWD和DWM层的数据。

数据应用层(ads)

前端应用直接读取的数据源;根据报表、专题分析的需求而计算生成的数据。


 

  1. 对高校的业务系统了解多少,有没有处理高校数据的经验


高校的业务系统一般涵盖教务管理、学生管理、教师管理、课程管理、考试管理、图书馆管理、实验室管理等多个方面。这些系统的目的是为了提高教育管理效率、方便学校内部各部门的信息共享和协作。

 暂无处理学校数据的经验,但在校是班长




 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一鸣888

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值