⼤数据⾯试3分钟⾃我介绍_⾯试真经⼤数据数仓⾯试灵魂30问
(附答案已斩offer)...
作者:7.7
编辑:紫霞仙⼦
云神原⽂:
作者寄语:
最近正好在⼯作,看到社区发的⾯试⽂章受益匪浅()。梳理⽂章每⼀个题⽬后,顺利拿到offer,故总结梳理答疑整理了这篇⽂章,以表感激,同时希望能帮到更多的⼩伙伴们。
以下作答纯属个⼈见解,如有误解,还望不吝指教!⼤家⼀起学习,⼀起进步!(笔芯:可以进社区数仓,⼤家⼀起讨论~)
本着认真严谨的态度,作答解读了部分题⽬,同时也给出了⼀些⾼质量的参考链接。其中省略的有的是鄙⼈不了解的,也有⼀些概念性的问题,可以⾃⾏查⼀下。
⾯试的⼼得体会:
在⾯试过程中,也是⼀种⾃我学习和提升的机会,态度要谦和,知之为知之,⾯试题⽬⼜不了解或者不会的纯属正常(基础除外)。 因此⼀道题⽬答不上来不要⾃乱阵脚,在整个⾯试过程中体现出⾃⼰团队合作的认知以及⾃我独当⼀⾯的能⼒。有的时候⾯试不只看技术,更看眼缘。
0.⾃我介绍
答:1).简单的⾃我介绍,突出⾃我优势(证书、学历、团队等)
2).项⽬介绍(重中之重)
3).显⽬中承担的⼯作,以及模块。
4).如若⾮本专业,可如实回答(是否培训)
5).长的帅或漂亮,前四条都可以忽略
1. 什么是数据仓库?如何构建数据仓库?
可参考:
(如果这个问题回答的好,后⾯很多问题都不需要再问)
答:数据仓库是⼀个⾯向主题的(Subject Oriented)、集成的(Integrate)、相对稳定的(Non-Volatile)、反映历史变化(Time Variant)的数据集合,它⽤于⽀持企业或组织的决策分析处理。
数仓构建:
1). 前期业务调研需求调研 数据调研 技术选型
2). 提炼业务模型,总线矩阵,划分主题域;
多个jdk怎么配置环境变量
3). 定制规范命名规范、开发规范、流程规范
4). 数仓架构分层:⼀般分为
操作数据层(ODS)、公共维度模型层(CDM)和应⽤数据层(ADS),其中公共维度模型层包括明细数据层(DWD和汇总数据层(DWS)
公共维度模型层(CDM):存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数据⼀般根据ODS层数据加⼯⽣成:公共指标汇总数据⼀般根据维表数据和明细事实数据加⼯⽣成。
CDM层⼜细分为DWD层和DWS层,分别是明细数据层和汇总数据层,采⽤维度模型⽅法作为理论基础,更多地采⽤⼀些维度退化⼿法,将维度退化⾄事实表中,减少事实表和维表的关联,提⾼明细数据表的易⽤性:同时在汇总数据层,加强指标的维度退化,采取更多的宽表化⼿段构建公共指标数据层,提升公共指标的复⽤性,减少重复加⼯。
应⽤数据层(ADS):存放数据产品个性化的统计指标数据,根据CDM层与ODS层加⼯⽣成。
5).选择合适的数据模型,不同的⾏业涉选取的模型近不相同,合适的模型,更利于在数据存储,计算,开发,安全,以及数据查询的效率,更能体现数仓的价值。
综上所述:数仓建设这个问题的范围过于⼤,它包含了⼀个0-1的过程,此处只做⼤⽅⾯的回答,具体的细节问题还需另外讨论。
2.如何建设数据中台?可简单说下对中台理解与思路
答:省略(鄙⼈对中台知之甚少)
可参考:
3.数据仓库、数据中台、数据湖的理解
答:数据仓库 分⽽治之 对象BI
数据湖 ⽆为⽽治 对象AI
数据中台 ⼀统天下 对象DataAPI(组织架构)
可参考:
4.传统数仓的程度(建模⼯具、ETL⼯具、BI报表⼯具、调度系统)
答:
建模⼯具:powerDesiger、Erwin、Visio
ETL⼯具: kettle/informatic(主流的两款) 等等
BI报表⼯具:superset、cboard、redash、帆软BI/QuickBI/PowerBI 等等
调度系统:airflow、azkaban、ooize、xxl-job、dolphinscheduler、Zeus、hera、TASKCTL/⾃研平台 等等
参考:
5.传统数仓和⼤数据数仓的异同?有哪些⼤的变化?
答:其区别主要数数仓数据存储的地⽅不同,传统数仓数据存储在mysql/oracle等关系型数据库上,⼤数据数仓存储在hadoop平台的hive 中(实际上是HDFS中),当然也有其他的数仓产品⽐如TD、greenplum等。
我接触过的传统数仓技术架构是使⽤kettle做ETL⼯具,数据保存在mysql中,使⽤MSTR+java开发的数据平台做可视化,随着数据量逐渐增⼤,事实表条数达到千万级,kettle逐渐变得不稳定,
单表做拉链的任务的执⾏时间也指数级增加,从1/2h到了6/7h。
公司考虑使⽤hadoop平台的hive做数据仓库,报表层数据保存在mysql中,使⽤tableau做报表系统,这样不⽤担⼼存储问题、计算速度也⼤⼤加快了。
在此基础上,公司开放了hue给各个部门使⽤,这样简单的提数⼯作可以由运营⾃⼰来操作。
使⽤presto可以做mysql、hive的跨库查询,使⽤时要注意presto的数据类型⾮常严格。
6.印象最深刻的项⽬?为什么?亮点与优势?
答:回答的⽅向两⽅⾯
1.好的项⽬,从中学到了什么
2.差的项⽬,你是如何改造的
7.数仓最重要的是什么?
答:数据的准确性,鄙⼈记得在⼀个统计⽹站上看过,好多数仓因为数据不准确被终⽌。
数据的真正价值在于数据驱动决策,通过数据指导运营,在⼀个不准确的数据驱动下,结果可想⽽知。
如何保证数据的准确性?
元数据的建设与管理是其中重要的⼀个环节
c语言fread和fwrite函数元数据建设的⽬标是打通数据接⼊到加⼯ ,再到数据消费整个链路,规范元数据体系与模型,提供统⼀的元数据服务出⼝,保障元数据产出的稳定性和质量。
⾸先梳理清楚元仓底层数据,对元数据做分类,如计算元数据、存储元数据、质量元数据等,减少数
据重复建设,保障数据的唯⼀性。
另外, 要丰富表和字段使⽤说明,⽅便使⽤和理解。根据元仓底层数据构建元仓中间层,建设元数据基础宽表,也就是元数据中间层,打通从数据产⽣到消费整个链路。
也可在粒度、规范等⽅⾯展开,见仁见智。
可参考:
8.实时数仓做过吗?采⽤什么架构?lambda有哪些优缺点?
答:省略(⽬前我只接触到离线数仓) 参考:
9.如何看待kappa架构?iota架构呢?
答:省略(⽬前还没接触到) 参考:
10.责任⼼?沟通能⼒?团队协作?数据思维?
答:鄙⼈开发出⾝,后转数仓;深有体会搞TP系统和搞AP系统的考虑问题有出⼊,也许更多的是对数仓的机制不了解,
项⽬需要不同的开发⼈员来协作完成某项⼯作,因此⼤家在交流沟通上需要到⼀个共同的点,协作合⼒完成。
11.⽤户画像(静态、动态标签,统计、规则、预测标签,衰退系数、标签权重)
参考:
答:
静态数据-评估价值:⽤户相对稳定的信息,例如,主要包括⼈⼝属性、商业属性等⽅⾯数据;这类信息,⾃成标签,如果企业有真实信息则⽆需过多建模预测,更多的是数据清洗⼯作,如果某些静态信息不准或缺失则需要建模预测。
动态数据-循迹: ⽤户不断变化的⾏为信息,例如:浏览凡客⾸页、浏览休闲鞋单品页、搜索帆布鞋、发表关于鞋品质的微博、赞“双⼗⼀⼤促”的微博消息。等等均可看作互联⽹⽤户⾏为。
形态:标签与权重: ⽤户画像的最终形态是通过分析⽤户⾏为,最终为每个⽤户打上标签,以及该标签的权重
标签:表征了内容,⽤户对该内容有兴趣、偏好、需求等等
权重:表征了指数,⽤户的兴趣、偏好指数,也可能表征⽤户的需求度,可以简单的理解为可信度,概率
数据建模⽅法: 标签=⽤户标识 + 时间 + ⾏为类型 + 接触点(⽹址+内容)的聚合,某⽤户因为在什么时间、地点、做了什么事,所以会打上**标签
12.推荐系统(协同过滤,基于⽤户、商品,SVD,各种距离算法等)
答:省略(只知神策有相关的产品)
13.数仓基础理念理解
可参考:
(主题域 ⾎缘关系 拉链表 代理键 维度退化 缓慢变化维SCD 事实表类型 增量dwd处理 星型/雪花/星座模型 事实 维度 粒度 原⼦/派⽣指标OLAP)
答:省略(概念性的问题可以⾃⾏查)
14.数仓如何确定主题域?CDM?
参考:
mysql面试题常问
答:主题域通常是联系较为紧密的数据主题的集合。可以根据业务的关注点,将这些数据主题划分到不同的主题域。主题域的确定必须由最终⽤户和数据仓库的设计⼈员共同完成。
15.数仓如何分层的?及每⼀层的作⽤?思考:为什么要这么分层?
参考:
答:如何架构分层?
html表格三行三列
结合Inmon和Kimball的集线器式和总线式的数据仓库的优点,分层可为ODS【-MID】-DW-DM-OLAP/OLAM/app(不同企业略有差异)
ODS层是将OLTP数据通过ETL同步到数据仓库来作为数据仓库最基础的数据来源。在这个过程中,数据经过了⼀定的清洗,⽐如字段的统⼀,脏数据的去除等,但是数据的粒度是不会变化的。ODS层的数据可以只保留⼀定的时间。
MID中间层是采⽤Inmon集线器架构的⽅式,使⽤范式建模(贴源)的⽅法。这⼀层主要是做规范化的事情,⽐如应⽤库表⾮规范化,字段格式复杂(json格式)需做⼀些处理。这⼀层不是必须有的。也不会对外开放使⽤。范式建模保证了数据⼀致性、唯⼀性、正确性。
DW-DM层是采⽤Kimball的总线式的数据仓库架构,针对部门(⽐如财务部门)或者某⼀主题(⽐如商户、⽤户),通过维度建模(推荐星型模型),构建⼀致性维度,原⼦粒度的数据是DW层,按照实体或者主题经过⼀定的汇总,建设数据集市模型。数据集市可以为OLAP提供服务。
为什么要分层的思考?
空间换时间。通过建设多层次的数据模型供⽤户使⽤,避免⽤户直接使⽤操作型数据,可以更⾼效的访问数据。 把复杂问题简单化。讲⼀个复杂的任务分解成多个步骤来完成,每⼀层只处理单⼀的步骤,⽐较简单和容易理解。⽽且便于维护数据的准确性,当数据出现问题之后,可以不⽤修复所有的数据,只需要从有问题的步骤开始修复。 便于处理业务的变化。随着业务的变化,只需要调整底层的数据,对应⽤层对业务的调整零感知.
分层的价值
01.⾼效的数据组织形式【易维护】
⾯向主题的特性决定了数据仓库拥有业务数据库所⽆法拥有的⾼效的数据组织形式,更加完整的数据体系,清晰的数据分类和分层机制。因为所有数据在进⼊数据仓库之前都经过清洗和过滤,使原始数据不再杂乱⽆章,基于优化查询的组织形式,有效提⾼数据获取、统计和分析的效率。
02.时间价值【⾼性能】
数据仓库的构建将⼤⼤缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,数据仓库的最⼤优势在于⼀旦底层从各类数据源到数据仓库的ETL流程构建成型,那么每天就会有来⾃各⽅⾯的信息通过⾃动任务调度的形式流⼊数据仓库,从⽽使⼀切基于这些底层信息的数据获取的效率达到迅速提升。
从应⽤来看,使⽤数据仓库可以⼤⼤提⾼数据的查询效率,尤其对于海量数据的关联查询和复杂查询,所以数据仓库有利于实现复杂的统计需求,提⾼数据统计的效率。
03.集成价值【简单化】
数据仓库是所有数据的集合,包括⽇志信息、数据库数据、⽂本数据、外部数据等都集成在数据仓库中,对于应⽤来说,实现各种不同数据的关联并使多维分析更加⽅便,为从多⾓度多层次地数据分析和决策制定提供的可能。
04.历史数据【历史性】
记录历史是数据仓库的特性之⼀,数据仓库能够还原历史时间点上的产品状态、⽤户状态、⽤户⾏为等,以便于能更好的回溯历史,分析历史,跟踪⽤户的历史⾏为,更好地⽐较历史和总结历史,同时
根据历史预测未来。
docker hub私有
16.数仓有哪⼏种建模思想?维度建模、范式建模、datavault?.. 有什么优劣,如何选择?
答:ER模型,维度建模,datavault模型,Anchor 模型。 参考:
ER模型:
数据仓库之⽗ Bill lnmon 提出的建模⽅法是从全企业的⾼度设计⼀ 个3NF 模型,⽤实体关系( Entity Relationship, ER)模型描述企业业务,在范式理论上符合 3NF。数据仓库中的 3NF 与 OLTP 系统中的 3NF 的区别在于,它是站在企业⾓度⾯向主题的抽象,⽽不是针对某个具体 业务流程的实体对象关系的抽象。其具有以下⼏个特点:· 需要全⾯了解企业业务和数据。· 实施周期⾮常长。. 对建模⼈员的能⼒要求⾮常⾼。采⽤ ER 模型建设数据仓库模型的出发点是整合数据,将各个系统
中的数据以整个企业⾓度按主题进⾏相似性组合和合并,并进⾏⼀致性 处理,为数据分析决策服务,但是并不能直接⽤于分析决策。其建模步骤分为三个阶段。·⾼层模型:⼀个⾼度抽象的模型,描述主要的主题以及主题间的 关系,⽤于描述企业的业务总体概况。· 中层模型:在⾼层模型的基础上,细化主题的数据项。. 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存 储,同时基于性能和平台特点进⾏物理属性的设计,也可能做⼀ 些表的合并、分区的设计等。
维度建模:
维度建模从分析决策的需求出发构建模型,为分析需求服务,因此 它重点关注⽤户如何更快速地完成需求分析,同时具有较好的⼤规模复杂查询的响应性能。其典型的代表是星形模型,以及在⼀些特殊场景下 使⽤的雪花模型。其设计分为以下⼏个步骤。· 选择需要进⾏分析决策的业务过程。业务过程可以是单个业务事 件,⽐如交易的⽀付、退款等;也可以是某个事件的状态,⽐如 当前的账户余额等;还可以是⼀系列相关业务事件组成的业务流 程,具体需要看我们分析的是某些事件发⽣情况,还是当前状态, 或是事件流转效率。· 选择粒度。在事件分析中,我们要预判所有分析需要细分的程度,
从⽽决定选择的粒度。粒度是维度的⼀个组合。· 识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括 维度属性,⽤于分析时进⾏分组和筛选。·选择事实。确定分析需要衡量的指标。
Data Vault 模型:
Data Vault 是 Dan Linstedt 发起创建的⼀种模型,它是 ER 模型的衍 ⽣,其设计的出发点也是为了实现数据的整合,但不能直接⽤于数据分 析决策。它强调建⽴⼀个可审计的基础数据层,也就是强调数据的历史 性、可追溯性和原⼦性,⽽不要求对数据进⾏过度的⼀致性处理和整合g 同时它基于主题概念将企业数据进⾏结构化组织,并引⼊了更进⼀步的 范式处理来优化模型,以应对游、系统变更的扩
展性。一类容器和二类容器
Data Vault 模型组成部分:
Hub:是企业的核⼼业务实体,由实体 key、数据仓库序列代理 键、装载时间、数据来源组成。 Link:代表 Hub 之间的关系。这⾥与 ER 模型最⼤的区别是将关 系作为⼀个独⽴的单元抽象,可以提升模型的扩展性。它可以直 接描述 1 : 1 、 l :n 和 n:n 的关系,⽽不需要做任何变更。它由 Hub 的代理键、装载时间、数据来源组成。 Satellite:是 Hub 的详细描述内容, ⼀个 Hub 可以有多个 Satellite。它由Hub 的代理键、装载时间、来源类型、详细的 Hub 描述信 息组成。
Anchor 模型:
Anchor 对 Data Vault 模型做了进⼀步规范化处理, Lars. Ri:innback 的初衷是设计⼀个⾼度可扩展的模型,其核⼼思想是所有的扩展只是添 加⽽不是修改,因此将模型规范到 6NF,基本变成了 k-v 结构化模型。我们看⼀下 Anchor 模型的组成。 Anchors:类似于 Data Vault 的 Hub ,代表业务实体,且只有主键。 Attributes:功能类似于 Data Vault 的 Satellite ,但是它更加规范 化,将其全部 k-v 结构化, ⼀个表只有⼀个 Anchors 的属性描述。 Ties:就是 Anchors 之间的关系,单独⽤表来描述,类似于 Data Vault 的 Link,可以提升整体模型关系的扩展能⼒。 Knots:代表那些可能会在多个 Anchors 中公⽤的属性的提炼, ⽐如性别、状态等这种枚举类型且被公⽤的属性。
以上四种模型总结:
综上所述:数据模型的选择应该根据所述的⾏业以及现有的业务综合考虑,选择合适的模型或者混合性模型,但要遵循模型的设计的原则;
1.⾼内聚低耦合
2. 核⼼模型与扩展模型分离
3.公共处理逻辑下沉及单⼀

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。