美团优选大数据开发岗面试真题-附答案详细解析(二)

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 美团优选大数据开发岗面试真题-附答案详细解析

9. 指标如何做到精准


同上题,没有标准答案。


仅供参考:


指标要做到精准,就必须使用科学方法选指标。


选指标常用方法是指标分级方法和OSM模型。


1. 指标分级方法:指标分级主要是指标内容纵向的思考,根据企业战略目标、组织及业务过程进行自上而下的指标分级,对指标进行层层剖析,主要分为三级T1、T2、T3。


  • T1指标: 公司战略层面指标 用于衡量公司整体目标达成情况的指标,主要是决策类指标,T1指标使用通常服务于公司战略决策层。


  • T2指标: 业务策略层面指标 为达成T1指标的目标,公司会对目标拆解到业务线或事业群,并有针对性做出一系列运营策略,T2指标通常反映的是策略结果属于支持性指标同时也是业务线或事业群的核心指标。T2指标是T1指标的纵向的路径拆解,便于T1指标的问题定位,T2指标使用通常服务业务线或事业群。


  • T3指标: 业务执行层面指标 T3指标是对T2指标的拆解,用于定位T2指标的问题。T3指标通常也是业务过程中最多的指标。根据各职能部门目标的不同,其关注的指标也各有差异。T3指标的使用通常可以指导一线运营或分析人员开展工作,内容偏过程性指标,可以快速引导一线人员做出相应的动作。


2. OSM模型(Obejective,Strategy,Measurement):是指标体系建设过程中辅助确定核心的重要方法,包含业务目标、业务策略、业务度量,是指标内容横向的思考。


O: 用户使用产品的目标是什么?产品满足了用户的什么需求?主要从用户视角和业务视角确定目标,原则是切实可行、易理解、可干预、正向有益。


S: 为了达成上述目标我采取的策略是什么?


M: 这些策略随之带来的数据指标变化有哪些?


10. 就项目中提到的某个实体,讲一下他对应的属性有哪些


实际项目问题,根据简历中写的叙述。


这里也给我们提个醒:简历中所写的项目我们必须非常熟悉才行,并且我们需要熟悉所写项目的整个生命周期,包括项目开发 前中后 期的所有内容,说的时候可以比简历上写的更详细,但是千万不能和简历上有出入。


11. 如果你建模的话,你会如何建模


具体的建模可看这篇文章:数仓建设中最常用模型--Kimball维度建模详解


以下内容截取自上述文章


提到建模,就牢记维度建模四步走,模型怎么建,就围绕以下四步叙说:


image.png


1、选择业务过程


维度建模是紧贴业务的,所以必须以业务为根基进行建模,那么选择业务过程,顾名思义就是在整个业务流程中选取我们需要建模的业务,根据运营提供的需求及日后的易扩展性等进行选择业务。


2、声明粒度


从关注原子粒度开始设计,也就是从最细粒度开始,因为原子粒度能够承受无法预期的用户查询。但是上卷汇总粒度对查询性能的提升很重要的,所以对于有明确需求的数据,我们建立针对需求的上卷汇总粒度,对需求不明朗的数据我们建立原子粒度。


3、确认维度


维度表是作为业务分析的入口和描述性标识,所以也被称为数据仓库的“灵魂”。声明完粒度之后,就要确定哪些属性是维度,那么怎么确定哪些属于维度属性呢,这里就不详细展开了,可以点击上面的文章链接,有详细说明。


4、确认事实


维度建模的核心原则之一是同一事实表中的所有度量必须具有相同的粒度。这样能确保不会出现重复计算度量的问题。有时候往往不能确定该列数据是事实属性还是维度属性。记住最实用的事实就是数值类型和可加类事实


这块内容太多了,说完以上四步之后可以在具体的聊下数仓是怎么分层的,每层都存放什么数据等。具体文章可点击:结合公司业务分析离线数仓建设


12. 主要都抽取哪些数据源,使用什么工具


根据简历的项目回答。


以下仅供参考,主要抽取的数据:


  1. 业务库数据,使用sqoop进行抽取
  2. 流量日志数据,使用flume实时采集
  3. 第三方公司数据,使用通用接口采集


13. 描述一下抽取的内部逻辑,怎么实现的


根据简历的项目回答。


以下仅供参考:


在开始创建抽取系统之前,需要一份逻辑数据映射,它描述了那些提交到前台的表中原始字段和最终目标字段之间的关系。该文档贯穿ETL系统。


设计逻辑:


  1. 有一个规划
  2. 确定候选的数据源
  3. 使用数据评估分析工具分析源系统
  4. 接受数据线和业务规则的遍历
  5. 充分理解数据仓库数据模型
  6. 验证计算和公式的有效性


逻辑数据映射的组成:目标表名称、表类型、SCD(缓慢变化维度)、源数据库、源表名称、源列名称、转换。


这个表必须清晰的描述在转换的过程中包含的流程,不能有任何疑问的地方。


表类型给了我们数据加载过程执行的次序:先是维表,然后是事实表。


与表类型一起,加载维表过程SCD类型很重要,开发之前需要理解哪些列需要保留历史信息以及如何获取历史信息所需的策略。


在源系统得到确认和分析之前,完整的逻辑数据映射是不存在的,源系统分析通常分为两个主要阶段:数据发现阶段,异常检测阶段。


数据发现阶段:需要ETL小组深入到数据的需求中,确定每一个需要加载到数据仓库中的源系统,表和属性,为每一个元素确定适当的源或者记录系统是一个挑战,必须仔细评估。


异常检测阶段:检查源数据库中每一个外键是否有NULL值。如果存在NULL值,必须对表进行外关联。如果NULL不是外键而是一个列,那么必须有一个处理NULL数据的业务规则。只要允许,数据仓库加载数据一定用默认值代替NULL。


14. 除了工作,有去读什么书学习吗


仅供参考:


前段时间读了《数仓工具箱-维度建模权威指南》这本书,受益颇多,对维度建模有了一个清晰的认知,维度建模就是时刻考虑如何能够提供简单性,以业务为驱动,以用户理解性和查询性能为目标的这样一种建模方法。


目前正在读《大数据日知录:架构与算法》,这本书涉及到的知识非常多,全面梳理了大数据存储与处理的相关技术,看书能让我更加系统化,体系化的学习大数据的技术。


15. 你觉得flink和spark streaming有什么区别


这个问题是一个非常宏观的问题,因为两个框架的不同点非常之多。但是在面试时有非常重要的一点一定要回答出来:Flink 是标准的实时处理引擎,基于事件驱动。而 Spark Streaming 是微批( Micro-Batch )的模型。


下面就分几个方面介绍两个框架的主要区别:


  1. 架构模型:


  • Spark Streaming 在运行时的主要角色包括:Master、Worker、Driver、Executor;


  • Flink 在运行时主要包:Jobmanager、Taskmanager 和 Slot。


2.任务调度:


  • Spark Streaming 连续不断的生成微小的数据批次,构建有向无环图 DAG, Spark Streaming 会依次创DStreamGraph、JobGenerator、JobScheduler;


  • Flink 根据用户提交的代码生成 StreamGraph,经过优化生成 JobGraph,然后提交给JobManager 进行处理, JobManager 会根据 JobGraph 生成 ExecutionGraph,ExecutionGraph 是 Flink 调度最核心的数据结构,JobManager 根据 ExecutionGraph 对 Job 进行调度。


3.时间机制:


  • Spark Streaming 支持的时间机制有限,只支持处理时间。


  • Flink 支持了流处理程序在时间上的三个定义:处理时间、事件时间、注入时间。同时也支持 watermark 机 制来处理滞后数据。


4.容错机制:


  • 对于 Spark Streaming 任务,我们可以设置 checkpoint,然后假如发生故障并重启,我们可以从上次 checkpoint 之处恢复,但是这个行为只能使得数据不丢失,可能 会重复处理,不能做到恰好一次处理语义。


  • Flink 则使用两阶段提交协议来解决这个问题。


Flink的两阶段提交协议具体可以看这篇文章:八张图搞懂 Flink 端到端精准一次处理语义 Exactly-once


16. Spark Streaming相比Flink有什么优点


一般都是问 Flink 比 Spark 有什么优势,这个是反过来问的,要注意哦


微批处理优势:


Spark Streaming 的微批处理虽然实时性不如Flink,但是微批对于实时性要求不是很高的任务有着很大优势。


  • 比如10W+的数据写入MySql,假如采用Flink实时处理,Sink 到 MySql 中,Flink是事件驱动的,每条都去插入或更新数据库,明显不靠谱,因为数据库扛不住。假如在Flink的Sink处加上批处理,虽然可以提高性能,但是如果最后一个批次没有达到批大小阈值,数据就不会刷出进而导致数据丢失。


  • Flink是基于状态的计算,所以在多个窗口内做关联操作是很难实现的,只能把所有状态丢到内存中,但如果超出内存,就会直接内存溢出。Spark 因为是基于RDD的可以利用RDD的优势,哪怕数据超出内存一样算,所以在较粗时间粒度极限吞吐量上Spark Streaming要优于Flink。


语言优势:


  • Flink和Spark都是由Scla和Java混合编程实现,Spark的核心逻辑由Scala完成,而Flink的主要核心逻辑由Java完成。在对第三方语言的支持上,Spark支持的更为广泛,Spark几乎完美的支持Scala,Java,Python,R语言编程。


17. 有什么想问的吗


面试是双方相互了解的过程,所以出于礼貌在面试结束询问一下你有没有什么想问的。当然面试官也想借此了解你对他们公司的了解程度及感兴趣程度。


所以请不要回答“我没有问题了”,而是要把这个问题当作最后一次发言机会。问的问题要围绕着这家公司本身,要让对方觉得你很关心、关注公司。


以下是可以问的:


  1. 公司对这个岗位的期望是什么样的?其中,哪些部分是我需要特别努力的?
  2. 是否有资深的人员能够带领新进者,并让新进者有发挥的机会?
  3. 公司强调团队合作。那在这个工作团队中,哪些个人特质是公司所希望的?
  4. 能否为我介绍一下工作环境?


以下是不该问的:


  1. 薪资待遇
  2. 过于高深的问题
  3. 超出应聘岗位的问题
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
7天前
|
存储 NoSQL MongoDB
MongoDB面试专题33道解析
大家好,我是 V 哥。今天为大家整理了 MongoDB 面试题,涵盖 NoSQL 数据库基础、MongoDB 的核心概念、集群与分片、备份恢复、性能优化等内容。这些题目和解答不仅适合面试准备,也是日常工作中深入理解 MongoDB 的宝贵资料。希望对大家有所帮助!
|
1月前
|
机器学习/深度学习 搜索推荐 大数据
深度解析:如何通过精妙的特征工程与创新模型结构大幅提升推荐系统中的召回率,带你一步步攻克大数据检索难题
【10月更文挑战第2天】在处理大规模数据集的推荐系统项目时,提高检索模型的召回率成为关键挑战。本文分享了通过改进特征工程(如加入用户活跃时段和物品相似度)和优化模型结构(引入注意力机制)来提升召回率的具体策略与实现代码。严格的A/B测试验证了新模型的有效性,为改善用户体验奠定了基础。这次实践加深了对特征工程与模型优化的理解,并为未来的技术探索提供了方向。
82 2
深度解析:如何通过精妙的特征工程与创新模型结构大幅提升推荐系统中的召回率,带你一步步攻克大数据检索难题
|
12天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
45 1
|
2月前
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
375 37
|
26天前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
41 1
|
2月前
|
缓存 Android开发 开发者
Android RecycleView 深度解析与面试题梳理
本文详细介绍了Android开发中高效且功能强大的`RecyclerView`,包括其架构概览、工作流程及滑动优化机制,并解析了常见的面试题。通过理解`RecyclerView`的核心组件及其优化技巧,帮助开发者提升应用性能并应对技术面试。
74 8
|
2月前
|
存储 缓存 Android开发
Android RecyclerView 缓存机制深度解析与面试题
本文首发于公众号“AntDream”,详细解析了 `RecyclerView` 的缓存机制,包括多级缓存的原理与流程,并提供了常见面试题及答案。通过本文,你将深入了解 `RecyclerView` 的高性能秘诀,提升列表和网格的开发技能。
65 8
|
1月前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
36 0
|
1月前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
73 0
|
3月前
|
存储 机器学习/深度学习 数据采集
深入解析大数据核心概念:数据平台、数据中台、数据湖与数据仓库的异同与应用
深入解析大数据核心概念:数据平台、数据中台、数据湖与数据仓库的异同与应用

推荐镜像

更多
下一篇
无影云桌面