日常实习面经:字节-数据分析师

TimeLine:一面20211108,二面20211110,三面20211112

当时的BG:北邮本硕,管理类专业,一段实习经历:美团商业分析师

写在前面的话:该文档记录日常实习面试的相关问题,面试时间为2021年。以下问题的答案可能存在错误,敬请读者批评指正

一面

1. SQL考察

数据表:用户表user_profile,字段有:user_id'用户id'和login_date'用户登录日期'

1)20211107登录的用户中,次日留存的数量

select count(t1.user_id)
from user_profile t1
where t1.login_date = '20211107'
and exists
(
select 1
from user_profile t2
where datediff(t2.login_date, t1.login_date) = 1

2)20211107登录用户的次日留存率

with a as
(
select count(user_id) as user_cnt_07
from user_profile
where login_date = '20211107'
),
with b as
(
select count(t1.user_id) as user_cnt_08
from user_profile t1
where t1.login_date = '20211107'
and exists
(
select 1
from user_profile t2
where datediff(t2.login_date, t1.login_date) = 1
)
select b.user_cnt_08 / a.user_cnt_07
from a, b

3)2021年11月每一天用户的次日留存率

select t1.login_date, count(t2.user_id) / count(t1.user_id) as retention_rate
from user_profile t1, user_profile t2
where t1.user_id = t2.user_id
and t1.login_date like '202111__'
and datediff(t2.login_date, t1.login_date) = 1
group by t1.login_date

2. 举几个正态分布的例子?

高尔顿板、一个班级的身高分布、一个班级的成绩分布等等

此处有追问:若男生的身高分布和女生的身高分布分别服从正态分布,混合在一起是否还是正态分布?如果男生和女生的身高分布差异特别大的时候,混合在一起是否还是正态分布呢?

假定男生的身高X和女生的身高Y这两个随机变量相互独立,根据正态分布的可加性,X - Y可表示为男生身高与女生身高之间的差异,依然服从正态分布

注:此处回答存疑,期待读者指正

3. 如何检验两组样本的均值是否相等?

采用假设检验的思路,根据样本量大小的差异构造统计量,若样本量偏小且总体方差未知,采用t检验,若样本量大或样本量小但总体方差已知,可采用Z检验

二面

1. SQL考察

有如下数据表:

员工表employee,字段有id'员工id',salary''员工薪资,dep_id'部门id'

部门表department,字段有dep_id'部门id',dep_name'部门名称'

求:各部门薪资水平排名前十的员工id和salary

with a as
(
select id, dep_name, salary
from employee join department
using(dep_id)
),
with b as
(
select dep_name, id, salary,
row_number() over(partition by dep_name order by salary desc) as rn
from a
)
select dep_name, id, salary
from b
where rn <= 10

2. Python考察

现有一个pd.dataframe格式的数据表'user',字段有:user_id'用户id', date'用户登录日期', duration'使用时长'

求:每个用户的总使用时长?

user ['duration'].groupby('user_id').sum()

三面

1. 搭建一个评价抖音的指标体系,请给出最重要的5个指标并给出原因?

1)消费价值:留存,或活跃天数(本质上是留存率曲线对时间的积分)

2)生产价值:平均投稿数、投稿渗透率

3)社交价值:平均好友数、好友间视频分享平均数

4)电商价值:人均消费、人均订单量

5)广告主价值:ARPU(展现-点击-下单-完单)

2. 简要介绍一下Hive

先介绍HadoopHadoop是一整套大数据生态系统,主要包括:

1)HDFS:海量数据的存储

2)MapReduce:海量数据的分析和计算

3)Yarn:资源管理和作业调度

其中,MapReduce本质上是一类分布式计算框架,底层由Java写成,在实现海量数据的分析和计算上具有一定的开发难度,Hive应运而生

Hive是基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成一张类似关系型数据库的数据表,提供了类似SQL(通常称其为HQL)的查询功能,简言之,Hive是一个将SQL任务转换为MR任务的工具

3. 简要介绍一下MapReduce

以统计单词数量为例子进行讲解:

本质上是分治法:

1)分:将问题分解为规模更小的子问题

2)治:将这些规模更小的子问题逐个击破

3)合:将已解决的子问题合并,最终得出“母”问题的解

4. 简要介绍一下数据倾斜和相应的解决方法

注:仅记录当时的回答,读者可自行搜索相关文档以形成自身观点

数据倾斜的表现是:

1)某一个/多个Reducer读写的数据量极大,远超剩余的Reducer,运行进度一直卡着

2)容器OOM报错

数据倾斜的原因是:

HQL中涉及到count distinctgroup byjoin on等操作都会触发Shuffle。一旦触发Shuffle,将会导致所有相同Key值的数据会被拉到某一个/多个Reducer,发生数据倾斜

数据倾斜的解决方案为:

1)参数优化

提高Shuffle并行度(通用优化),即适当增大并行度,可以将原本被分配到同一个Task的不同Key分配到不同Task

负载均衡(适用于group by 造成的数据倾斜),即将计算过程分解为两个MapReduce,第一个MRShuffle过程会随机给Key值打标记,使得每个Key均匀分布到相同Reducer;第二个MR正常执行

Map join(适用于小表 join 大表),即将小表数据全部读入内存中,在Map阶段直接拿大表数据与内存中的小表数据做匹配,避免了Shuffle阶段,因此避免了数据倾斜

Skew Join,即在运行时检测哪个Key值发生了数据倾斜,对会倾斜的Key值使用Map join,不会倾斜的Key值正常处理

2)SQL代码优化

count distinct优化:将count distinct修改成先group bycount

空值优化:给空值随机赋值

group by优化:原理同负载均衡,在需要聚合的Key值随机添加前缀/后缀,得到均匀的Key值后做第一次聚合,再对聚合的结果按照原始Key值做第二次聚合

5. 场景题:Tiktok在两年前进入了美国市场,发现iOS端和安卓客户端的日活、留存率没有太大差异,现在进入了墨西哥市场,发现安卓客户端的日活和留存率显著低于iOS端,如何分析这一现象?

首先,可以探究美国市场和墨西哥市场双端的运营活动是否对齐

其次,众所周知美国的经济发展水平优于墨西哥,猜测美国的iOS端用户和安卓高端机用户的占比相对较高,而墨西哥这两部分用户的占比相对较低,可以探究美墨两国双端高中低端机型的分布差异来验证此猜想

#日常实习##数据分析##字节跳动#
全部评论
这是数据分析实习生的面试呢经历吗
2 回复 分享
发布于 2023-03-22 11:13 北京
我想问一下,就是一面的第一个sql里,为什么子查询里可以用主查询的字段呀,就是子查询的括号里datediff(t2.login_date, t1.login_date),这时候能用t1的字段,我自己试了下确实可以,但是不知道原理是啥,不是子查询优先于主查询执行吗
1 回复 分享
发布于 2023-03-23 23:09 北京

相关推荐

不愿透露姓名的神秘牛友
10-02 18:30
点赞 评论 收藏
分享
13 164 评论
分享
牛客网
牛客企业服务