【面经】阿里数据研发多面面经
作者:SJZ97
链接:https://www.nowcoder.com/discuss/612313?type=0&order=0&pos=78&page=1&channel=-1&source_id=0
来源:牛客网
主要是看了一下技术问题,其他一些因人而异的问题删掉了。
一面
自我介绍
针对简历中尤其是字节实习中的相关项目经历展开询问
主要工作介绍
你说熟悉上下游,能否挑一个项目具体讲一讲
数仓建模应该分为哪几个部分
1.选择业务板块-电商 物流。
2.规范定义-规范的命名体系、数据域。
- 业务板块-基于业务的命名空间
- 数据域-当前业务板块下一组业务活动的集合,项目属于具体的业务板块,数据域面向业务分析,对业务过程或维度进行抽象
- 修饰类型-从属于某个业务域,比如日志域中访问终端包括无线、PC
- 维度-从属于一个数据域,表示度量的环境,是描述信息,如地理,时间维度等,原子指标如下单金额,派生指标=原子+修饰词+时间,比如1天海外买家支付金额
3.模型设计
- 选择业务过程-比如下单
- 声明粒度-一行表示什么,确定维度,确定事实
- 层次
- 数据操作层 ODS:把操作系统数据几乎无处理地存放在数据仓 库系统中。
- 公共维度模型层 CDM:存放明细事实数据、维表数据及公共指标汇总数据 , 其中明细事实数据、维表数据一般根据 ODS 层数据加工生成,CDM 层又细分为明细数据层 DWD 和汇总数据层 DWS ,采用维度模型方法作为理论基础,更多地采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,提高明细数据表的易用性:同时在汇总数据层,加强指标的维度退化,采取更多的宽表化手段构建公共指标数据层,提升公共指标的复用性。
- 应用数据层 APP:存放数据产品个性化的统计指标数据,根据 CDM 层与 ODS 层加工生成 。(个性化指标:排名型、比值型等))
4.维度设计
- 维度的定义-度量称为“事实” ,将环境描述为“维度”。
- 维度设计步骤-选择或新建维度-唯一,确定主维表-ODS表 直接与业务系统同步,确定相关维度-确定哪些表与主维表的关联关系 如商品与类目、spu、卖家、店铺等存在维度关系,确定维度属性-从主维表、相关维表中选择维度属性或新的维度属性。
- 一致性-保证交叉探查不会出现问题,例如计算转化率。具体方法:共享维表-只有一个,一致性上卷-子集,交叉属性-两个维度部分属性相同。
- 维度整合(垂直-不同来源但有相同的数据集,如淘宝 天猫。水平-不同来源相同数据集,如蚂蚁金服的数仓来自淘宝、支付宝、1688。
- 维度拆分-水平-机票酒店和普通商品拆开,它们有特殊维度属性。垂直-有的热度低,或者属性经常变化,或者产出时间晚。
- 缓慢变化维-快照维表,历史拉链表,极限存储-底层是历史拉链,上层多了视图,对下游用户透明,微型维度-垂直拆分,经常变化的拆分出去,比如注册时间不变,但等级经常改变。
5.事实表设计
- 事务型事实表-任何类型的事件都可以被理解为一种事务。比如创建订单、付款。
- 周期快照事实表:当需要一些状态度量时,比如账户余额、买卖家星级 、 商品库存、卖家累积交易额等,则需要聚集与之相关的事务才能进行识别计算,于是便有了周期快照事实表。快照事实表在确定的问隔内对实体的度量进行抽样,这样可以很容易地研究实体的度量值,而不需要聚集长期的事务历史。
- 累计快照事实表:事务型事实表能够很好的记录单一事务的发生,但对于统计不同的事务时间的关系逻辑较为复杂。比如统计买家下单到支付的时长、买家支付到卖家发货的时长、买家从下单到确认收货的时长等。如果使用事务事实表进行统计,则逻辑复杂且性能很差。对于类似于研究事件之间时间间隔的需求,采用累积快照事实表可以很好地解决。
工作中主要使用的的 Hive 吧,有没有做过什么 Hive 调优
- set hive.map.aggr=true,即开启 map 端的 combiner,减少传到 reducer 的数据量,同时需设置参数hive.groupby.mapaggr.checkinterval 规定在 map 端进行聚合操作的条目数目。
- 设置 mapred.reduce.tasks 为较大数量,降低每个 reducer 处理的数据量。
- set hive.groupby.skewindata=true,该参数可自动进行负载均衡。生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同的 Group By Key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group By Key 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce中),最后完成最终的聚合操作。
你的上游是广告,讲一讲广告有哪些具体的计价规则
CPT cost per time
CPC cost per click
CPM cost per mile 千次广告收入。
CPA cost per action 按转化次数计费,无转化不计费。
CPS cost per sale 按订单计费
CPV cost per view 有效播放计费,例如:播放时间 >= 10s
CPD cost per download
CPI cost per install
OCPC optimized cost per click 本质是 CPC,采用更科学的转化率预估机制。
OCPM 本质还是 CPM
OCPA optimized cost per action,根据转化去优化出价。
ECPM 每次曝光价格
Cost 广告成本 + 货品成本。
二面
作为数据研发最核心的三个能力是什么
我回答的 “1、业务(商业) 2、技术 3、耐心细心沉得住气”面试官很满意,还给我补充了一点就是“数据分析和算法能力”
做的什么业务,具体讲一讲上下游,涉及到的业务方是什么,有哪些基本诉求?
业务方就是用数据的人。
ER 模型和维度模型的区别,分别适合什么样的场景
ER模型严格遵守第三范式,适合对性能要求较高的场景。注重的是精简高效,更多是面向数据的整合和一致性治理,期望达到“single version of the truth”。
维度建模更多面向业务,可以通过指标来定义的场景。
四层模型了解吗?为什么要这么设计,有什么用
ODS,DWD,DWS,APP。
- 复杂问题简单化。
- 结构清晰方便管理。
- 减少重复开发。
- 隔离原始数据。
事务了解吗
一个程序执行单元,例如:在关系数据库中,一个事务可以是一条 SQL 语句,一组 SQL 语句或整个程序。事务应该具有4个属性:原子性、一致性、隔离性、持久性。
- 原子性-做完或不做
- 一致性-完整性不破坏
- 隔离性-数据只能被一个事务请求
- 持久性-完成后不回滚,故障时不受影响
作为一个数据研发,怎么样提高效率,或者说都是数据研发,效率差异会体现在哪里?
- 业务理解
- 上下游业务方沟通
- 经验和制定复杂技术方案的能力
Hadoop 和 Spark 的区别,Spark 做了哪些优化,好在哪里?
主要是 MapReduce vs Spark。
- Spark 和 Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据通信是基于内存,而 MR 是基于磁盘。
- Spark 只有在 shuffle 的时候将数据写入磁盘,而 MR 中多个 MR 作业之间的数据交互都要依赖于磁盘交互。
- Spark 更擅长函数处理和迭代,模型更加丰富。
三面
三面 35 mins 部门交叉面。
交叉面一般不会问技术。因为是不同岗位的人来面试。
数据研发和算法,职业规划
讲了一些重构和优化工作,然后被追问 “既然都已经优化了,那么你觉得还有哪里不够好呢?”
随机森林用过吧,讲一讲集成学习中 boosting 和 bagging 的区别
四面
说实话当时都没有把这当成一场面试,而是不断和阿里的前辈交流数据对于业务的价值,可以做哪些事情。后来也从大老板(没错,就是我实习组的大老板)那里了解到因为已经通过了手淘数据团队的面试,所以他面我的时候也是比较宽松的,基本是让我问他问题…
加了一轮技术笔试
笔试没有发挥太好,所以加一轮技术笔试。
一共10道题,5道简答题,5道 SQL,给了2个小时,不太难。
终面
45 mins 天猫精灵技术团队大老板
数据质量监控,字节是怎么做的?
- 产生-加工-消费的整个数据生命周期的质量管控
- 准确性、完整性、一致性、及时性、有效性
表字段是否一致,数据条目数量、空值比例、电话告警数、最晚产出时间、不同表相同维度聚合结果是否一致。
数据任务调度平台的原理知道吗
如果同时有10万个任务,他们的启动逻辑是什么样子的?
血缘分析原理
- Hive:Hive 提供了 Hook 机制,在 Hive 编译、执行的各个阶段,可以调用参数配置的各种 Hook。我们利用 hive.exec.post.hooks 这个钩子,在每条语句执行结束后自动调用该钩子。
- MapReduce:由于输入输出均是由各种 InputFormat/OutFormat 执行,因此可以在 Job 提交时获取。在 org.apache.hadoop.mapreduce.JobSubmitter#submitJobInternal 方法中添加一些逻辑,如在 submitJob 之后。
- Spark:可以通过自定义 org.apache.spark.scheduler.SparkListener。然后在 spark/conf 中指定 spark.sql.queryExecutionListeners 和 spark.extraListeners 订阅事件总线上的事件。
实习阶段做了哪些数据服务
微服务框架的原理和一些基本概念
终面总结:
(面试结束后分析和自我安慰)
可能前几轮面试官重点考察的是我的能力下限,也就是能不能胜任这些实习工作,而终面大老板的面试风格则是考察我的能力上限,这个主要体现在对于已经做过的业务和掌握知识的底层技术的好奇,对于曾经学过的知识的迁移运用能力等等。
【面经】阿里数据研发多面面经相关推荐
- 【面经】阿里数据研发三面面经
欢迎点击此处关注公众号. 55min 提问,5min 反问,不做题.面试官是架构师,面试问题完全围绕实习经历. 自我介绍 实习做了什么 详细讲项目 和其他团队的配合 机器学习会算一些阈值.分数,做关联 ...
- 数据研发岗位需要技能
数据研发岗位 今天面完阿里数据研发二面.面试官问我有不有继续写博客,我还颇为惭愧.很久没更新CSDN了.面试结束我特地问问数据研发到底是什么,需要掌握什么技能或者技术.以下是对面试官回答的一个简单的总 ...
- 数据分析/大数据研发面经笔经(阿里/腾讯/网易/招行信用卡中心/小红书/vivo等)
**个人简介:**本硕985,本科专业应用数学,硕士专业cs.有一段滴滴数据运营实习,硕士期间做过两个工业类的项目(异常检测/关联分析),发了两篇水论文(二作). **为什么投数据分析:**本来第一意 ...
- 在MySQL和PostgreSQL之外,为什么阿里要研发HybridDB数据库?
编者按 \\ 在大数据火遍IT界之前,大家对数据信息的挖掘通常聚焦在BI(Business Intelligence)之上.BI具有着明确的分析需求,清晰地知道需要处理哪些信息,并且如何最终获得多维度 ...
- 全面分析阿里数据中台,小白也能看懂 | CSDN原力计划
扫码参与CSDN"原力计划" 作者 | yuanziok 来源 | CSDN原力计划获奖作品 数据中台被誉为大数据的下一站,由阿里兴起,核心思想是数据共享,2015年阿里提出&qu ...
- AI一分钟 | 传许家印已投资贾跃亭FF;腾讯将发布可接收微信的智能音箱;阿里确认研发自动驾驶技术...
整理 | Just 一分钟AI 1.据接近恒大的知情人士处获悉,许家印已确认投资了贾跃亭旗下的法拉第未来,并成立了专门的汽车团队. 2.针对"因违反美国制裁禁令,美国商务部禁止美国企业向 ...
- AI一分钟 | 传许家印已投资贾跃亭FF;腾讯将发布可接收微信的智能音箱;阿里确认研发自动驾驶技术
整理 | Just 一分钟AI 1.据接近恒大的知情人士处获悉,许家印已确认投资了贾跃亭旗下的法拉第未来,并成立了专门的汽车团队. 2.针对"因违反美国制裁禁令,美国商务部禁止美国企业向 ...
- 专访阿里资深研发工程师窦贤明:PG与商业数据库差距并不明显
导语:窦贤明,花名执白,阿里资深研发工程师,参与过PostgreSQL与Greenplum的内核源码维护.开发,以及云上自动化服务之类的工作. 窦贤明认为, 支持类型.功能和语法丰富,性能优良 9月2 ...
- 星辰大海:阿里数据体验技术揭秘!
简介:阿里巴巴数据体验技术团队从一开始建立就致力于打造数据领域体验技术的标杆.经过多年的深耕,形成了一整套面向两个阶段的用户产品的体验技术架构.本文重点介绍团队在 SQL 编辑器,BI 平台,数据可视 ...
最新文章
- 递归神经网络预测股票好文章
- Caffe---Pycaffe 绘制loss和accuracy曲线
- Spark SQL中 RDD 转换到 DataFrame (方法二)
- PHP算法用redis crontab 进行异步邮件队列发送
- GitHub 的 Action 接入 Stryker.NET 进行自动化测试单元测试鲁棒性
- 自己移植Asterisk1.8到OpenWRT下
- 201512-1-数位之和
- TYVJ1613 不和谐的公司
- pycharm中tensorflow代码不能自动补全或import红线问题解决
- android 7 audio架构,7.2.1 Audio系统的各个层次
- mysql 参数化分页_LR12 DataWizard从Mysql数据取参数化数据
- 俄罗斯方块c语言代码 vc 6.0,VC++6.0俄罗斯方块代码
- Python 基础测试题(含答案)
- 工业相机常见的数据传输接口方式
- 电商平台-财务系统模块的设计与架构
- 文件名字超出计算机无法删除,电脑文件名太长无法删除怎么办
- Kubeadm部署-Kubernetes-1.18.6集群
- 人工智能的发展,主要经历哪几个阶段?
- git报错:error: failed to push some refs to ... 的解决办法及如何让线上覆盖本地方法【Git/SVN】
- 设计模式普及之抽象工厂模式