一亩三分地

 找回密码 注册账号

扫描二维码登录本站


码农求职神器Triplebyte
不用海投
内推多家公司面试

Total Comp Calculator
输入offer信息
系统自动计算每年收入

科技公司如何
用数据分析驱动产品开发
coupon code 250off 立减$250

深入浅出AB Test
从入门到精通
coupon code 250off 立减$250
游戏初创公司招聘工程师、UIUX Designer和游戏策划
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
查看: 1282|回复: 11
收起左侧

脸书DS Analytics店面

[复制链接] |试试Instant~
我的人缘0

分享帖子到朋友圈
nowhy | 显示全部楼层 |阅读模式
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (28)
 
 
0% (0)    👎

2019(4-6月) 分析|数据科学类 博士 全职@Facebook - 内推 - 技术电面  | Pass/Offer | fresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
最近请朋友内推拿到的店面,题目是面经里的marketplace
SQL部分:
表1是session记录
游客,本帖隐藏的内容需要积分高于 188 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.



第一问挺容易的,就是过去一个月内,每天每个用户的平均session数目。


第二问感觉很麻烦,我卡了很久……
游客,本帖隐藏的内容需要积分高于 188 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.

店面的时候这一问捣鼓了十几分钟吧,好像总时间都过半小时了。最后写完面试官说好,不错,然后就进入product环节了。product还是关于marketplace的,加个sell item button。
然后问们就讨论了一下怎么衡量加这个feature的效果。自我感觉回答挺一般的,没想到后来通知我过了,可能是靠运气吧……发个面经求大米。

面试的时候还发生了挺有意思的状况,超时了。
游客,本帖隐藏的内容需要积分高于 200 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.

评分

参与人数 2大米 +32 收起 理由
sclmaomao + 2 给你点个赞!
清道神君 + 30

查看全部评分


上一篇:Uber DS 05/02 onsite 挂经
下一篇:有没有面三哥成功的tips
我的人缘0
jaymzhu 2019-5-15 06:21:44 | 显示全部楼层
本楼: 👍   100% (2)
 
 
0% (0)   👎
全局: 👍   100% (37)
 
 
0% (0)    👎
这样ok吗
第一问

SELECT user_id, AVG(sessions)
FROM
(
SELECT date, user_id, COUNT(DISTINCT session_id) AS sessions
FROM table1
WHERE date > DATE_ADD(CURDATE(), INTERVAL -1 MONTH)
GROUP BY date, user_id
) temp
GROUP BY user_id;


第二问

WITH
        buyer_group AS
        (
                SELECT user_id, group
                FROM . check 1point3acres for more.
                        (
                        SELECT DISTINCT a.user_id,
                                CASE WHEN b.user_id IS NOT NULL THEN 'group1'
                                ELSE 'group2'
                                END AS group
                        FROM table1 a
                        LEFT JOIN
                                (
                                SELECT DISTINCT user_id
                                FROM table1
                                WHERE event = 'sent_message'
                                AND date = '2019-01-01'
                                ) b
                        ON a.date = '2019-01-01'
                        AND a.user_id = b.user_id
                        ) c
                INNER JOIN table2 d. 1point3acres
                ON c.user_id = d.user_id
                AND c.type = 'buyer'
                AND c.date = d.date
        ),

        revisit AS
        (
                SELECT DISTINCT user_id
                FROM table1
                WHERE date = '2019-01-01' + INTERVAL 7 DAY
                AND event = 'enter'
        )

SELECT
        bg.group,
        COUNT(rv.user_id)/COUNT(bg.user_id) AS retention
FROM buyer_group bg
LEFT JOIN revisit rv
ON bg.user_id = rv.user_id
GROUP BY bg.group;

评分

参与人数 4大米 +14 收起 理由
sclmaomao + 2 给你点个赞!
wasabimao1181 + 1 给你点个赞!
清道神君 + 10
nowhy + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

我的人缘0
qichao1129 2019-5-15 05:30:13 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (17)
 
 
0% (0)    👎
“把这些用户分两组,第一组是当天event包含发送消息这个动作."
那第一组就是发送消息的用户,

那么第二个组是什么呀?

谢谢
回复

使用道具 举报

我的人缘0
 楼主| nowhy 2019-5-15 10:43:08 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (28)
 
 
0% (0)    👎
qichao1129 发表于 2019-5-15 05:30
“把这些用户分两组,第一组是当天event包含发送消息这个动作."
那第一组就是发送消息的用户,

第二组就是没发的,只有enter一种event。
回复

使用道具 举报

我的人缘0
 楼主| nowhy 2019-5-15 10:51:50 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (28)
 
 
0% (0)    👎
jaymzhu 发表于 2019-5-15 06:21
这样ok吗
第一问

第一问我没说清楚,只要求每天的,求的值是session / user,所以只用一个query就行。

第二问我觉得你写的应该没错,我的思路也是用left join来区分两个组的用户,最后再算retention。看你的代码这么复杂,我感觉面试让我现场写,确实写不成这样,自身还需要提高啊
回复

使用道具 举报

我的人缘0
dw357 2019-5-15 11:01:48 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (104)
 
 
0% (0)    👎
楼主哪天面的啊,多久收到onsite消息?
回复

使用道具 举报

我的人缘0
 楼主| nowhy 2019-5-15 12:00:44 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (28)
 
 
0% (0)    👎
dw357 发表于 2019-5-15 11:01
楼主哪天面的啊,多久收到onsite消息?

就最近,过了两天出的结果
回复

使用道具 举报

我的人缘0
jaymzhu 2019-5-16 00:44:28 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (37)
 
 
0% (0)    👎
nowhy 发表于 2019-5-15 10:51
第一问我没说清楚,只要求每天的,求的值是session / user,所以只用一个query就行。

第二问我觉得你 ...

现场一紧张 我是肯定写不出来这么复杂的
回复

使用道具 举报

我的人缘0
冷月无声 2019-5-16 03:38:58 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (23)
 
 
0% (0)    👎
SELECT group, SUM(CASE WHEN date is not null THEN 1 ELSE 0)/COUNT(user_id) as retention
FROM
  (SELECT user_id,
            CASE WHEN SUM(case when event = ‘sent_message’ then 1 else 0 end)>0 THEN ‘group1’ ELSE   ‘group2’ END as group
  FROM table 1
  GROUP BY user_id
  WHERE date = ‘2019-01-1’ AND user_id in (SELECT user_id from table 2 where type = ‘buyer’)) a
LEFT JOIN
  (SELECT DISTINCT user_id,  date
  FROM table1
  WHERE event = ‘enter’ AND
  DATEDIFF(‘2019-01-01’, date) <=14 AND DATEDIFF(‘2019-01-01’, date) >=7) b
ON a.user_id = b.user_id
GROUP BY group
回复

使用道具 举报

我的人缘0
wasabimao1181 2019-5-16 13:54:36 | 显示全部楼层
本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   98% (129)
 
 
1% (2)    👎
nowhy 发表于 2019-5-15 10:51
第一问我没说清楚,只要求每天的,求的值是session / user,所以只用一个query就行。

第二问我觉得你 ...

所以第一问其实就是:
SELECT date, COUNT (DISTINCT session_id) / COUNT(DISTINCT user_id)
FROM table
WHERE date >=sysdate -30
GROUP BY date

评分

参与人数 1大米 +1 收起 理由
sclmaomao + 1 给你点个赞!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法 - 不要多加空格: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版||一亩三分地

GMT+8, 2019-8-21 22:00

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表