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

简介: 美团优选大数据开发岗面试真题-附答案详细解析

公众号(五分钟学大数据)已推出大数据面试系列文章—五分钟小面试,此系列文章将会深入研究各大厂笔面试真题,并根据笔面试题扩展相关的知识点,助力大家都能够成功入职大厂!


image.png


此面试题来自牛客网友分享的美团优选一面,面试时长一小时。网友情况:海外水本,在某三线中厂工作2年。


参考答案由本公众号提供。如有错误,欢迎指正!


以下为面试过程中提问,岗位为大数据开发,根据提问内容看出,主要偏数仓方向


  1. 自我介绍


  1. 到北京工作的意愿


  1. SQL题,给一张城市和交易额表,一张城市对应省份表, 取出 省份 总 交易额大于 500 的 省份 的名字


  1. SQL题,基于刚才, 得出 省份 总 交易额 [0,500 ] , [500,1000 ] , [1000,+∞ ] 在以下三个区间的 省份 的 数量


  1. SQL题,还是基于刚才, 按从小到大的顺序得出每个城市的累计交易额,可以用窗口


  1. 根据分隔符划分字段,可以用正则表达


  1. 主要负责的产品


  1. 产品的指标如何知道带来多少价值


  1. 指标如何做到精准


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


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


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


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


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


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


  1. spark streaming相比flink有什么优点


  1. 有什么想问的吗


答案详细解析


1. 自我介绍


面试的时候,面试官说的第一句话就是:“介绍一下你自己吧。”


很多人真的很实诚的就只说一句:“我叫xx,来自xx,今年xx岁。”然后双方冷场。


这样的自我介绍还不如前段时间流行的一句话:“我叫xx,我喜欢唱跳、rap、篮球。”起码你还让面试官知道了你的特长。


所以这里就需要你用最短的时间让面试官记住你,突出自己的优势、有论证力的说服对方。


原则如下:不要大段背诵简历内容;不要说流水账,内容冗长;自我介绍时间尽量控制在一分钟左右。


那么怎么在最短时间内满足以上三条。


罗振宇说过:“笨拙的人讲道理,而聪明的人会说故事。”


所以面试时我们要摆脱常规回答,学会“讲故事”。那故事怎么讲,记住以下八个字,将自己的经历或想法套进去:


  • 目标:就是我想要做什么,我想要成为什么样的人;
  • 阻碍:做这件事的难点是什么,有哪些“质疑”点;
  • 努力:为了克服难点和“质疑”,我做了哪些事情;
  • 结果:通过我的努力,我现在获得了什么样的成就。


有时间了针对 自我介绍 我再详细的讲解下,这部分还是很重要的,因为这部分就是“推销”自己,给自己打广告的时间。


2. 到北京工作的意愿


招人肯定是希望找到一个踏实,稳定的人,而不是那种来了几天或一段时间就走的人。


面试官问你这个问题,一是在看你大概能在公司呆多久,二是看公司是否有必要培养你或者录用你。


所以回答时一定要表达出你一定能来北京并且能长时间待下去(即使你不是这样),具体回答发挥个人想象。


3. SQL题,给一张城市和交易额表,一张城市对应省份表, 取出 省份 总 交易额大于 500 的 省份 的名字


为了便于理解,根据上面的问题,我们先构造这两张表:


城市交易额表 business_table


city_num:城市编号


gmv:交易额


city_num gmv
1001 210
1001 90
1002 250
1003 200
1004 700
1005 350
1005 150
1006 250
1007 150


城市对应省份表:province_table

province_num:省份编号

province_name:省份名称

city_num:城市编号


province_num province_name city_num
11 a 1001
11 a 1005
12 b 1002
12 b 1003
13 c 1004
13 c 1006
13 c 1007


根据以上表,sql 语句如下(以下仅为其中一种写法,仅供参考)


SELECT MAX(tmp.province_name)
FROM (
  SELECT bt.city_num, bt.gmv, pt.province_num, pt.province_name
  FROM business_table bt
    LEFT JOIN province_table pt ON bt.city_num = pt.city_num
) tmp
GROUP BY tmp.province_num
HAVING SUM(tmp.gmv) > 500;


4. SQL题,基于刚才, 得出 省份 总 交易额 [0,500 ] , [500,1000 ] , [1000,+oo ] 在以下三个区间的 省份 的 数量


参考 sql 语句如下:


SELECT 
  COUNT(CASE 
    WHEN tmp2.pro_gmv >= 0
    AND tmp2.pro_gmv < 500 THEN tmp2.pro_name
    ELSE NULL END) AS gmv_0_500,
  COUNT(CASE 
    WHEN tmp2.pro_gmv >= 500
    AND tmp2.pro_gmv < 1000 THEN tmp2.pro_name
    ELSE NULL END) AS gmv_500_1000, 
  COUNT(CASE 
    WHEN tmp2.pro_gmv >= 1000 THEN tmp2.pro_name
    ELSE NULL END) AS gmv_1000_
FROM (
  SELECT MAX(tmp.province_name) AS pro_name, SUM(tmp.gmv) AS pro_gmv
  FROM (
    SELECT bt.city_num, bt.gmv, pt.province_num, pt.province_name
    FROM business_table bt
      LEFT JOIN province_table pt ON bt.city_num = pt.city_num
  ) tmp
  GROUP BY tmp.province_num
) tmp2;


5. SQL题,还是基于刚才, 按从小到大的顺序得出每个城市的累计交易额,可以用窗口


参考 sql 语句如下:


# 既然面试官让用窗口函数,那咱们就别客气了
SELECT city_num, gmv
FROM (
  SELECT DISTINCT city_num, SUM(gmv) OVER(PARTITION BY city_num) AS gmv
  FROM business_table
) tmp
ORDER BY gmv;


6. 根据分隔符划分字段,可以用正则表达


# java
String address="上海|上海市|闵行区|吴中路"; 
String[] splitAddress=address.split("\\|"); //如果以竖线为分隔符,则split的时候需要加上两个斜杠 \\ 进行转义
#sql
hive> select split('abcdef', 'c') from test;
["ab", "def"]


7. 主要负责的产品


这个根据简历或者你自己的情况实际实说就行。


8. 产品的指标如何知道带来多少价值


这题没有标准答案,根据自己的理解回答即可。


以下仅供参考:


在《精益数据分析》一书中给出了两套比较常用的指标体系建设方法论,其中一个就是比较有名的海盗指标法,也就是我们经常听到的AARRR海盗模型。海盗模型是用户分析的经典模型,它反映了增长是系统性地贯穿于用户生命周期各个阶段的:用户拉新(Acquisition)用户激活(Activation)用户留存(Retention)商业变现(Revenue)用户推荐(Referral)


为什么要说这个模型呢,因为通过这个模型中的一些关键指标我们可以反推出产品的指标所带来的价值有哪些。


AARRR模型:


A 拉新: 通过各种推广渠道,以各种方式获取目标用户,并对各种营销渠道的效果评估,不断优化投入策略,降低获客成本。涉及关键指标例如 新增注册用户数、激活率、注册转化率、新客留存率、下载量、安装量等,我们通过这些指标就可反应出获取目标用户的效果是怎样的。


A 活跃: 活跃用户指真正开始使用了产品提供的价值,我们需要掌握用户的行为数据,监控产品健康程度。这个模块主要反映用户进入产品的行为表现,是产品体验的核心所在。涉及关键指标例如 DAU/MAU 、日均使用时长、启动APP时长、启动APP次数等。


通过这些指标可以反映出用户的活跃情况。


R 留存: 衡量用户粘性和质量的指标。涉及关键指标例如 留存率、流失率等。通过这些指标可以反映出用户的留存情况。


R 变现: 主要用来衡量产品商业价值。涉及关键指标例如 生命周期价值(LTV)、客单价、GMV等。这些指标可以反映出产品的商业价值。


R 推荐: 衡量用户自传播程度和口碑情况。涉及关键指标例如 邀请率、裂变系数等。

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
20天前
|
缓存 NoSQL Redis
Python缓存技术(Memcached、Redis)面试题解析
【4月更文挑战第18天】本文探讨了Python面试中关于Memcached和Redis的常见问题,包括两者的基础概念、特性对比、客户端使用、缓存策略及应用场景。同时,文章指出了易错点,如数据不一致和缓存淘汰策略,并提供了实战代码示例,帮助读者掌握这两款内存键值存储系统的使用和优化技巧。通过理解其核心特性和避免常见错误,可以提升在面试中的表现。
26 2
|
5天前
|
分布式计算 监控 大数据
《吊打面试官》- 大数据工程师50道中大厂面试真题保姆级详解
《吊打面试官》- 大数据工程师50道中大厂面试真题保姆级详解
18 1
《吊打面试官》- 大数据工程师50道中大厂面试真题保姆级详解
|
8天前
|
安全 Java
美团一面,面试官让介绍AQS原理并手写一个同步器,直接凉了
美团一面,面试官让介绍AQS原理并手写一个同步器,直接凉了
25 6
|
11天前
|
分布式计算 Java 大数据
MaxCompute产品使用合集之大数据计算MaxCompute外部表映射了oss中的csv文件,看到"\N"被解析为"N",是什么原因
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
17天前
|
存储 算法 Java
耗时3天写完的HashMap万字解析,争取一篇文章讲透它,面试官看了都直点头!
耗时3天写完的HashMap万字解析,争取一篇文章讲透它,面试官看了都直点头!
47 3
|
21天前
|
数据采集 机器学习/深度学习 数据挖掘
Python数据清洗与预处理面试题解析
【4月更文挑战第17天】本文介绍了Python数据清洗与预处理在面试中的常见问题,包括Pandas基础操作、异常值处理和特征工程。通过示例代码展示了数据读取、筛选、合并、分组统计、离群点检测、缺失值和重复值处理、特征缩放、编码、转换和降维。强调了易错点,如忽视数据质量检查、盲目处理数据、数据隐私保护、过度简化特征关系和忽视模型输入要求。掌握这些技能和策略将有助于在面试中脱颖而出。
31 8
|
23天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
32 0
|
23天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
22 0
|
3天前
|
Java Android开发
Android12 双击power键启动相机源码解析
Android12 双击power键启动相机源码解析
12 0
|
4天前
|
分布式计算 Java API
Java8 Lambda实现源码解析
Java8的lambda应该大家都比较熟悉了,本文主要从源码层面探讨一下lambda的设计和实现。

推荐镜像

更多