一面 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()的使用。

业务理解需要结合场景,再去准备业务面的时候需要着重准备。