一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
码农求职神器Triplebyte:
不用海投,内推多家公司面试
Airbnb 数据科学职位
in analytics and inference
游戏初创公司
招聘工程师、Designer和游戏策划
游戏初创公司DreamCraft招聘工程师、UIUX Designer和游戏策划
电商初创公司Good Days
招聘SDE/UI/TPM实习生
把贵司招聘信息放这里
查看: 2638|回复: 21
收起左侧

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

面完后HR告知,不够DS的bar,让我继续去面QA,并且可能还要有两轮电话面试,我晕. 鍥磋鎴戜滑@1point 3 acres
第二轮电面,是个三哥,感觉没什么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.com/bbs
  18. What is the maximum # of consecutive photos viewed in every session?
  19. . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  20. s1 - 4
  21. s2 - 1
  22. s3 - 1

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


. 1point 3acres 璁哄潧
总体感觉他家HR不是很专业……

评分

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. visit 1point3acres.com for more.
from
(SELECT *, ROW_NUMBER() OVER(PARTITION BY session_id ORDER BY ts) AS row_num. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
FROM session ) a
where a.action='ViewPhoto'. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
)
. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
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. 鍥磋鎴戜滑@1point 3 acres
试着写了一下最后一道sql题. 1point3acres.com/bbs

.鏈枃鍘熷垱鑷1point3acres璁哄潧WITH session1 AS

Hi又看到你了哈哈 想请教一下你的code里 为什么不是MAX(s1.row_num), s2.row_num不会多加了一个1吗? 鏉ユ簮涓浜.涓夊垎鍦拌鍧.

我是这样写的,大概思路差不多,就是MAX那块不一样
# generate a temporary table. From 1point 3acres bbs
SELECT *, ROW_NUMBER() OVER (PARTITION BY session_id ORDER BY ts) AS rank
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";
回复 支持 反对

使用道具 举报

七瓣酱 发表于 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。。。等高手解答. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
-google 1point3acres
补充内容 (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/.1point3acres缃

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

使用道具 举报

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

对你说的有道理, 应该去掉IS NOT NULL的条件,前面JOIN ON的时候条件已经加够了

我是只考虑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
https://blog.jooq.org/2015/11/07/how-to-find-the-longest-consecutive-series-of-events-in-sql/
. 1point3acres.com/bbs
楼 ...

非常感谢你的发帖,我觉得这里说的才是解这类题的正确思路。
我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(*)
          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
                     WHERE action = 'ViewPhoto') b
          GROUP BY session_id, num) c. 鍥磋鎴戜滑@1point 3 acres
GROUP BY session_id;
回复 支持 反对

使用道具 举报

瓷心娃娃 发表于 2017-11-15 15:32:49 | 显示全部楼层
yuf1357 发表于 2017-8-4 06:23
对你说的有道理, 应该去掉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
FROM session;. 1point3acres.com/bbs

SELECT s1.session_id, MAX(s1.rank2)
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. from: 1point3acres.com/bbs
GROUP BY t1.session_id
WHERE t2.ts IS NOT NULL AND t1.action="ViewPhoto";
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2018-1-21 15:05

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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