一面 20201111
一共有三面。
三个部分
一面:
一、自我介绍
照着简历叙述即可。会针对简历中所体现的他感兴趣的部分提问。
问了Python爬虫使用的多吗?
回答:是的。
问了sql使用的多吗?
我说是自学的。
二、题目
(一)sql题目。
快手使用的明细数据表。
表格样式。
uid | 用户 |
pid | 视频 |
date | 时间 |
uid用户在date时间观看了pid视频。
001 | xyz | 20201030 |
001 | xyz | 20201030 |
001 | abc | 20201030 |
1. 001用户在20201030观看的视频个数(去重)、总次数(不去重)
select count(distinct pid) , count(pid)
from `table1`
where uid='001'
and date='20201030';
2.20201030这一天观看视频个数总数前十的uid以及每个uid对应的视频个数 。
select uid,count(distinct pid)
from `table1`
where date='20201030'
group by uid
order by count(distinct pid) desc
limit 0,10;
3. 20201024-20201030这一周每一天观看视频前十的uid,每个uid对应的视频个数,以及日期date。
这道题我没有做对。面试官告诉我有两种方法可以做。
第一种是:同第2问,重复7次,并且union all连接起来。
第二种是:使用windows函数 row number() 函数。
select a.* from(
select upload_dt,author_id,count(distinct photo_id) ,row_number() over(partition by upload_dt order by (count(distinct photo_id)) desc) as rn
from ` photo_td`
where upload_dt between '2021-01-01' and '2021-01-07'
group by upload_dt,author_id
) a
where a.rn<=10
(二)业务题目
1.你常用的一款app,比较重要的5个核心指标。
我回答的是:
叨叨记账。
一款记账app。
五个指标是:
每日打开app的次数、每日停留在app内的时长、每日平均每次停留时长、开屏广告停留时长和是否支付、每日点击记账功能的次数。
2.为什么选这5个指标?选择前两个指标是不是太单调了。
我回答的是:可以利用这些原始数据,加工,比如得到30天内每天的使用时长,它的变动趋势,监控相关的原因。
3.假设1024-1030这一周内的日均使用次数指标,相对于前三周下降了10%,猜测一下可能的原因是什么?
我回答的是:
分为内部和外部两大块。
内部:
app是否改版,ui设计或者功能出现变动。
app会针对节日推出相应的祝福语,1024-1030是不是没有相应的节日推送祝福语。
外部:
1101是双十一,人们可能倾向于攒钱冲购物节,所以会在1024-1030少花钱,少记账。
三、向他提问
1.主要负责的具体业务是什么?
大v的生产。
2.用sql多吗?
用的是hive。原始数据的提取都要通过sql提取,进行接下来的业务分析。
3.接下来的面试流程是什么?
一共有三面。今天是一面业务面,还有一面业务面,还有最后是hr面。
4.什么时候出结果呢?
这周。
四、小结
面试官人很好很和蔼。
自我感觉不错。期待二面。
反思:
需要继续熟悉sql。
刷题、unioin all 的使用、window function中的row number()的使用。
业务理解需要结合场景,再去准备业务面的时候需要着重准备。