《数据科学面试40+真题讲解》,K神本年度最后一次开课


一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推你去多家公司面试
Airbnb 数据科学职位
in analytics and inference
天天打游戏、照样领工资,
你要不要来?
把贵司招聘信息放这里
查看: 2145|回复: 20
收起左侧

Houzz DS/QA 电面 跪经

[复制链接] |试试Instant~ |关注本帖
Aesculus 发表于 2017-7-4 05:27:09 | 显示全部楼层 |阅读模式

2017(7-9月) 分析|数据科学类 博士 全职@Houzz - 网上海投 - 技术电面 |Fail在职跳槽

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

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
DS面经真心少,贡献一个攒rp
海投的他家DS,对内装挺感兴趣的,可惜还是跪了

第一轮电面,和一个华人姐姐聊,简历问得特别细,几乎让我把做过的一个project里的model从头到尾完整描述一遍,并且不停地challenge问为什么要这么做,每一步每个细节都会问到,说实话我觉得问model没什么,但我觉得太细节的地方并不能讲……问完简历开始做题,问了一道很基础的统计题(扔小球),延伸问了假设检验 p-value, 然后是一道a/b test,不仅要讲明白实验怎么design还要有business sense,最后一道sql,很简单的先agg再left outer join
.1point3acres缃
面完后HR告知,不够DS的bar,让我继续去面QA,并且可能还要有两轮电话面试,我晕
第二轮电面,是个三哥,感觉没什么interaction,全程都在迷之尴尬沉默,问了我一道我感觉很难的sql,果断跪了……
  1. session_id    ts        action              
  2. s1      123456789    ViewPhoto
  3. s1      123456790    ViewPhoto
  4. s1      123456791    ViewPhoto
  5. s1      123456795    ViewPhoto
  6. s1      123456796    ViewProduct
    . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  7. s1      123456797    ViewPhoto
  8. s1      123456798    END
  9.   
  10. s2      123456830    VewProduct
  11. s2      123456831    ViewPhoto
  12. s2      123456832    Share
  13. s2      123456833    ViewPhoto 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  14. s2      123456845    END

  15. s3      123456830    ViewPhoto                  
  16. s3      123456798    END  
  17. .鏈枃鍘熷垱鑷1point3acres璁哄潧
  18. What is the maximum # of consecutive photos viewed in every session?

  19. s1 - 4. from: 1point3acres.com/bbs
  20. s2 - 1
  21. s3 - 1

复制代码
这题如果用python做其实不难,平时sql用的太少,window function不是很熟……

-google 1point3acres

总体感觉他家HR不是很专业……. 鍥磋鎴戜滑@1point 3 acres
. from: 1point3acres.com/bbs

评分

1

查看全部评分

riva420 发表于 2017-8-2 03:31:59 | 显示全部楼层
看到楼上的讨论,上一个我的写法,抛砖引玉~

WITH session1 AS
(
select *,a.row_num-ROW_NUMBER() OVER(PARTITION BY session_id ORDER BY ts) as grp
from
(SELECT *, ROW_NUMBER() OVER(PARTITION BY session_id ORDER BY ts) AS row_num
FROM session ) a
where a.action='ViewPhoto'. 1point 3acres 璁哄潧

)

select b.session_id,max(count) as max_consecutive
from (
select session_id,count(*)
from session1
group by session_id,grp order by 1
) b group by b.session_id order by 1

回复 支持 1 反对 0

使用道具 举报

iamchrisa 发表于 2017-7-4 06:35:25 | 显示全部楼层
他家hr确实很难联系上 只有他们找我 没有我找他们的
我是先做题 然后电面 电面跪在了一个华人妹妹手上
回复 支持 反对

使用道具 举报

csytracy 发表于 2017-7-6 06:04:53 | 显示全部楼层
iamchrisa 发表于 2017-7-4 06:35
他家hr确实很难联系上 只有他们找我 没有我找他们的
我是先做题 然后电面 电面跪在了一个华人妹妹手上

去linkedin上搜了一圈,那应该是个华人姐姐了, 一个北大本+伯克利phd;一个清华本+ucsd phd的。。。我应该好好准备下再来了。。。bless lz!!
回复 支持 反对

使用道具 举报

iamchrisa 发表于 2017-7-6 06:49:31 | 显示全部楼层
csytracy 发表于 2017-7-6 06:04
去linkedin上搜了一圈,那应该是个华人姐姐了, 一个北大本+伯克利phd;一个清华本+ucsd phd的。。。我应 ...

面试官不是那两个人
回复 支持 反对

使用道具 举报

cicylili 发表于 2017-7-16 05:48:17 | 显示全部楼层
我也是在职跳槽电面挂了。那个人叫MengFei Jiang。上来跟我说她自己Berkely统计硕士毕业,整个电面态度非常挑衅。
回复 支持 反对

使用道具 举报

riva420 发表于 2017-7-18 04:12:28 | 显示全部楼层
这种sql感觉是种套路题,两个window function嵌套,没准备过,面试的情况下很难想出来。 楼主别灰心,好机会多的是~
回复 支持 反对

使用道具 举报

ohhelenguo 发表于 2017-7-18 04:58:45 | 显示全部楼层
这个题目我onsite的时候也面了,当时太困实在没做出来,不过不是用window function吧。。

补充内容 (2017-7-18 04:59):
我当时和recruiter联系的时候,感觉他们确实效率很低,不是很专业的感觉,但是后来听说他们同时在面很多人,感觉也是可以理解的
回复 支持 反对

使用道具 举报

七瓣酱 发表于 2017-7-18 11:53:41 | 显示全部楼层
试着写了一下最后一道sql题

WITH session1 AS
(
SELECT *, ROW_NUMBER() OVER(PARTITION BY session_id ORDER BY ts) AS row_num
FROM session
)
SELECT s1.session_id, CASE WHEN s2.row_num IS NOT NULL THEN MAX(s2.row_num) ELSE 1 END AS max_clicks
FROM session1 s1
INNER JOIN session1 s2 ON s1.session_id = s2.session_id AND s1.row_num = s2.row_num - 1 AND s1.action = s2.action
GROUP BY s1.session_id
回复 支持 反对

使用道具 举报

yuf1357 发表于 2017-7-26 05:16:29 | 显示全部楼层
跪谢楼主!求问他家QA data challenge的面经,昨天收到邮件约data challenge说是3个小时的题目应该是data processing, 多谢!
回复 支持 反对

使用道具 举报

yuf1357 发表于 2017-8-1 02:06:12 | 显示全部楼层
七瓣酱 发表于 2017-7-18 11:53
试着写了一下最后一道sql题

WITH session1 AS

Hi又看到你了哈哈 想请教一下你的code里 为什么不是MAX(s1.row_num), s2.row_num不会多加了一个1吗?

我是这样写的,大概思路差不多,就是MAX那块不一样
# generate a temporary table
SELECT *, ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY ts) AS rank . 鍥磋鎴戜滑@1point 3 acres
INTO session1
FROM session;

SELECT s1.session_id, MAX(s1.rank)
FROM session1 t1
LEFT JOIN session1 t2
ON t1.session_id = t2.session_id AND t1.rank =t2.rank-1 AND t1.action=t2.action
GROUP BY t1.session_id
WHERE t2.ts IS NOT NULL AND t1.action="ViewPhoto";. Waral 鍗氬鏈夋洿澶氭枃绔,
回复 支持 反对

使用道具 举报

七瓣酱 发表于 2017-8-3 22:14:06 | 显示全部楼层
yuf1357 发表于 2017-8-1 02:06
Hi又看到你了哈哈 想请教一下你的code里 为什么不是MAX(s1.row_num), s2.row_num不会多加了一个1吗?

...

后来发现我那个query写的好多地方是错的 这里用row_number的话没办法判断是不是consecutive的,只会把所有标记为‘ViewPhoto’且属于同一个session的entry从1开始编号。so。。。等高手解答

补充内容 (2017-8-3 22:24):
不对我理解有误。。。你的做法大体是对的 @yuf1357 不过最后不该加WHERE t2.ts IS NOT NULL吧?如果有session只有一条record呢?
回复 支持 反对

使用道具 举报

shaniavina33 发表于 2017-8-4 06:09:45 | 显示全部楼层
https://blog.jooq.org/2015/11/07/how-to-find-the-longest-consecutive-series-of-events-in-sql/

楼主可以看看这个
回复 支持 反对

使用道具 举报

yuf1357 发表于 2017-8-4 06:23:14 | 显示全部楼层
七瓣酱 发表于 2017-8-3 22:14. 1point3acres.com/bbs
后来发现我那个query写的好多地方是错的 这里用row_number的话没办法判断是不是consecutive的, ...

对你说的有道理, 应该去掉IS NOT NULL的条件,前面JOIN ON的时候条件已经加够了. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
. 1point3acres.com/bbs
我是只考虑consecutive action写的, 如果是考虑viewphoto action with consecutive time, 那就不用row number了,直接用t1.ts=t2.ts-1来join。这种给senario的问题感觉一定要问clarifying question, 按自己理解做可能就掉坑里了。。。并不清楚这个题面试官是想按时间还是action..
回复 支持 反对

使用道具 举报

feiwudefeng 发表于 2017-9-2 01:02:51 | 显示全部楼层
shaniavina33 发表于 2017-8-4 06:09. from: 1point3acres.com/bbs
https://blog.jooq.org/2015/11/07/how-to-find-the-longest-consecutive-series-of-events-in-sql/
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
楼 ...

非常感谢你的发帖,我觉得这里说的才是解这类题的正确思路。.鐣欏璁哄潧-涓浜-涓夊垎鍦
我onsite的时候也被问到了这道题,当时感觉不知道window function怎么下手就用session variable做了。但是看了这个链接的内容以后觉得这里才是最好的解法。
回复 支持 反对

使用道具 举报

shaniavina33 发表于 2017-9-2 07:24:36 | 显示全部楼层
feiwudefeng 发表于 2017-9-2 01:02
非常感谢你的发帖,我觉得这里说的才是解这类题的正确思路。
我onsite的时候也被问到了这道题,当时感觉 ...

haha,不用客气啦!你的面经都给的很详细,可以说是非常有心啦!good luck!!
回复 支持 反对

使用道具 举报

天天加油 发表于 2017-9-8 04:33:14 | 显示全部楼层
yuf1357 发表于 2017-7-26 05:16. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
跪谢楼主!求问他家QA data challenge的面经,昨天收到邮件约data challenge说是3个小时的题目应该是data p ...

大神方便分享一下data challenge的题嘛~~~邮箱是yts@bu.edu~~~祝offer多多
回复 支持 反对

使用道具 举报

cloudatlas 发表于 2017-10-11 12:06:44 | 显示全部楼层
感谢楼主分享!很受用哇!
回复 支持 反对

使用道具 举报

LoveLizzie 发表于 2017-10-16 03:58:18 | 显示全部楼层
提供一个略微不同的写法。
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
SELECT session_id, MAX(count) AS max_num
FROM (SELECT session_id, num, COUNT(*). Waral 鍗氬鏈夋洿澶氭枃绔,
          FROM (SELECT session_id,
                                    SUM(CASE WHEN action_lag is NULL OR action != action_lag THEN 1
                                                     ELSE 0 END) OVER (PARTITION BY session_id ORDER BY ts) AS num
                      FROM (SELECT *, LAG(action) OVER (PARTITION BY session_id ORDER BY ts) AS action_lag
                                  FROM session) a. from: 1point3acres.com/bbs
                     WHERE action = 'ViewPhoto') b
鏉ユ簮涓浜.涓夊垎鍦拌鍧.           GROUP BY session_id, num) c.鏈枃鍘熷垱鑷1point3acres璁哄潧
GROUP BY session_id;
回复 支持 反对

使用道具 举报

瓷心娃娃 发表于 2017-11-15 15:32:49 | 显示全部楼层
yuf1357 发表于 2017-8-4 06:23. 鍥磋鎴戜滑@1point 3 acres
对你说的有道理, 应该去掉IS NOT NULL的条件,前面JOIN ON的时候条件已经加够了

我是只考虑consecuti ...

我觉得不太对呀,假设session1里面row number为6,7,8也是viewphoto的话,那你的query的结果应该是8吧。我觉得应该是

SELECT *, ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY ts) AS rank ,
ROW_NUMBER()OVER(PARTITION BY SESSION_ID,ACTION ORDERBY TS) AS RANK2
INTO session1. 1point3acres.com/bbs
FROM session;. from: 1point3acres.com/bbs
.1point3acres缃
SELECT s1.session_id, MAX(s1.rank2). Waral 鍗氬鏈夋洿澶氭枃绔,
FROM session1 t1
LEFT JOIN session1 t2 . from: 1point3acres.com/bbs
ON t1.session_id = t2.session_id AND t1.rank =t2.rank-1 AND t1.action=t2.action. from: 1point3acres.com/bbs
GROUP BY t1.session_id. 鍥磋鎴戜滑@1point 3 acres
WHERE t2.ts IS NOT NULL AND t1.action="ViewPhoto";
回复 支持 反对

使用道具 举报

本版积分规则

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2017-11-25 00:56

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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