大数跨境
0
0

美团发offer了!大数据面经复盘来了

美团发offer了!大数据面经复盘来了 大数据技术与架构
2025-05-14
0
导读:必须拿下!

大家好,今天我们分享的内容是关于面试复盘的。

有不止一个大数据提高班的小伙伴面试了美团的数据开发岗位,面经我做了整了,今天分享的是其中的一些有水平的面试问题,如何能够给出超出期望的回答,拿到更好的面试评价。

我们经常说,面试是一个人多年工作经验的多个项目总结,这个过程本身会体现一个人的技能积累、思维模式、未来思考多种因素,所以通过这些面试题可以对自身进行一次检验。

问题一:Spark Stage的划分逻辑?如何查看Spark任务的Stage?你在做任务优化的时候有哪些优化策略?

这个问题是一个经典的老八股了,其实问题本身并没有什么难度。重点在问题的后半部分,关于线上任务优化的策略。

能达到关键的点上就可以了。Spark 通过宽依赖操作(如groupByKey、join)将作业划分为多个 Stage,每个 Stage 内部的窄依赖操作可以高效地流水线执行。理解 Stage 的划分逻辑有助于优化 Spark 作业,例如减少不必要的 Shuffle、调整分区数等。

启动Spark作业后,Spark Web UI可以查看Stage划分和性能指标,Stages的标签页会展示以下信息:

  • Stage 列表:展示所有 Stage 的 ID、名称、状态(运行中 / 已完成 / 失败)、任务数量、输入输出数据量等。
  • 依赖关系:通过 Parent Stages 字段查看 Stage 之间的依赖关系(哪个 Stage 是上游 / 下游)。
  • Shuffle 指标:关注 Shuffle Read Size/Records 和 Shuffle Write Size/Records,这些指标反映了 Shuffle 的数据量。

推荐优先使用 Spark Web UI 查看 Stage 划分和性能指标,结合 EXPLAIN 命令分析 SQL 执行计划。对于复杂场景,可以通过编程方式获取更详细的运行时信息。通过这些工具,可以定位 Shuffle 操作、数据倾斜等性能瓶颈,针对性地优化 Spark 作业。

关于Spark的优化,我们就不再赘述了,你可以参考这篇文章:

问题二:你如何评价一个数据仓库的好坏?

OK,开放性问题来了。这种问题没有标准答案,但是是最佳的体现一个人的积累和思考的问题。我们还是提供一个思路:

一般在中大公司有数仓整体的质量周报,包含内容根据业务关注度有所不同,但是核心的一些指标大同小异。

1. 数据质量
  • 准确性:数据应准确反映业务实际情况,可通过与原始数据源比对、校验,以及检查主键唯一性、全链路数据质量监控覆盖等来评估。
  • 完整性:包括数据无缺失值、记录完整,且涵盖业务所需的所有维度和指标,同时数据质量长期跟踪检测体系完善。
  • 一致性:同一信息主体在不同数据集或不同处理阶段的数据应保持一致,例如指标定义、计算口径等要统一。
  • 及时性:数据能在规定的时间内更新和产出,满足业务对数据时效性的要求,如通过SLA来衡量。
2. 模型设计
  • 合理性:模型要能满足当下业务需求,并具有前瞻性,可容纳未来业务变化,避免烟囱式开发,提高复用性1。
  • 链路简洁性:尽量引用较少的表,降低代码复杂性和任务失败风险,同时避免跨组或部门引用表,减少沟通和权限问题1。
  • 分层与主题划分:有清晰的分层(如 ODS、DWD、DWM、DIM 等)和明确的主题域,符合企业数仓分层规范,方便数据管理和使用。
3. 执行效率
  • 任务运行时间:能在合理时间内产出数据,满足较高的SLA,避免任务长时间运行或超时。
  • 数据倾斜:不存在严重的数据倾斜问题,以免导致部分任务处理时间过长,影响整体作业进度。
  • SQL优化:SQL代码具有较高可读性,无冗余,且有优化空间,可通过调整语句提高执行速度。
4. 资源利用
  • 队列资源申请:申请的 CPU、内存等队列资源合理,利用率处于正常范围,既不浪费也不频繁超发。
  • 成本管理:定期进行成本管理和调控,根据业务重要性合理分配资源,实现成本效益最大化。
5. 数据管理与服务
  • 元数据管理:表有中文别名和详细的字段描述,方便其他人员理解和使用,且具备完善的元数据管理系统,可追溯数据的来源、加工过程等。
  • 权限管理:有严格的权限控制,确保数据安全,不同角色的用户只能访问和操作其权限范围内的数据。
  • 数据服务能力:能提供统一的数据接口给业务用户,方便他们获取和使用数据,并且能快速响应用户的查询和分析请求。
6. 业务价值
  • 使用率:通过表的周访问 PV、分析覆盖率等指标衡量,使用率高说明数仓对业务的支持力度大。
  • 决策支持:能为企业领导提供准确、及时的数据支持,帮助做出正确的决策,同时能为日常运营和业务问题分析提供有效帮助,发现问题并提供解决方案或思路。

围绕上面的内容进行展开即可。

问题三:数仓做了哪些质量管理?

OK,你只需要把DQC本身提供的能力,围绕自己的业务场景进行展开即可。

如果你自己组织语言实在困难,那么你可以参考:

问题四:介绍一个你最熟悉,最有技术含量的项目?以及解决的最有难度的技术问题?

这个题我们略过,各位各显神通吧。

如果你是大数据提高班的同学,恭喜大家这个问题会比90%以上的同学答得好。😄

问题五: Flink如何处理迟到数据?你是怎么做的?

非常好的一个问题。

Flink提供了多种机制处理迟到数据,基本上是围绕 Watermark、Allowed Lateness 和 Side Output,进行灵活处理。

上面的这个回答是Flink框架本身提供的能力,「迟到」本质上是一种乱序行为。

在真实的场景中,如果你是非状态的计算,例如简单的ETL任务,那么一般是通过排序的方式保证「先来后到」。

如果你是有状态的计算,那么大概率是通过「合理丢弃」的方式处理「迟到数据」,例如:

通过event_time事件事件和当前时间对比过滤,例如下面代码:

select * from table_a where current_timestamp()  - event_time <= 48 * 60 * 60

我们丢弃掉那些迟到48小时的数据,保证下游在做48小时聚合计算的结果准确性。

OK,以上就是我们要分享的一些问题和回答思路,提供给大家作为参考。

最后,欢迎加入我们的知识星球小圈子:
《300万字!全网最全大数据学习面试社区等你来》

如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!

【声明】内容源于网络
0
0
大数据技术与架构
关注IT前沿动态,大数据AI领域最新发展。字节、阿里等一线公司大数据专家团队,大数据面试陪跑和大数据提高班进行中。
内容 274
粉丝 0
大数据技术与架构 关注IT前沿动态,大数据AI领域最新发展。字节、阿里等一线公司大数据专家团队,大数据面试陪跑和大数据提高班进行中。
总阅读13
粉丝0
内容274