LinkedIn Sr Data Scientist 技术电面过经 python coding

linkedin recruiter 找到的我说要聊聊, 聊了一下之后觉得面面也无妨,就交了application约了面试。

7/26 周五第一轮电话面试,开始就是面试官自我介绍了一下,说了下面试大概流程。 然后就是轮到我自我介绍。然后面试官会随便问一两个问题, 比如你为啥来LinkedIn,以后有啥想做的方向啊,感觉就是纯聊天,只要没有啥消极言论,都应该OK。 然后就是coding题,会给你一个interactive coding的链接,你和面试官都登陆上去,然后就能相互看到对方输入的东西了。我一共被考了两道题,都是面经里见过的,答案也都有,但是要求都用python或者R,完全没有提SQL,这点和之前面经不一样。最后面试管还会留出5分钟解答你的任何问题。

第一题是找出从Microsoft 跳去google的人, 给了如下 table,第一问:多少人从Microsoft 跳去google (1,2都算)?第二问是多少直接从Microsoft 跳去google (只有1算,2不算,就是member ID 2 不算直接从Microsoft跳到Google,因为中间隔了一个Oracle)?
Member_id, Company, Year_Start
1, Microsoft, 2000
1, Google, 2006
1, Facebook, 2012
2, Microsoft, 2001
2, Oracle, 2004
2, Google, 2007

第二题是更新email subscription的问题,给出了一个7月之前的status table和7月的所有action table,要求update一下之前的status。

– Table - “status”

member_id status
1 on
2 off
3 on
4 off

– Table - “actions”
member_id date_sk action
1 7/2 turn_off
1 7/5 turn_on
2 7/3 turn_on
4 7/10 turn_on
4 7/13 turn_off

– Output Table
member_id current_status
1 on
2 on
3 on
4 off

解体需要用到的都是些基本python functions, 比如df.rank(), df.nunique(), pd.merge()… 我周五面完,周一一大早就来约第二轮了,给消息很快,题库很小的感觉,所以只要认真准备一下,应该都没啥大问题。另外注意coding的时候要逻辑清晰,并且告诉面试官你怎么想的,每一步都在干什么就好。

第一题我的思路:
df_ms = df[df.Company == ‘Microsoft’]
df_ms = df_ms.groupby([‘ID’, 'Microsoft]).Year_Start.min(). 1point3acres
df_ms = df_ms.to_frame()
df_gg = df[df.Company == ‘Google’]
df_gg = df_gg.groupby([‘ID’ ,‘Google’).Year_Start.max(). 1point3acres
df_gg = df_gg.to_frame()
df = pd.merge(df_ms, df_gg, on=[‘ID’], how=‘inner’, surffixes=[“ms”, “gg”])
df[‘hasChange’] = (df.Year_Start_gg - df.Year_Start_ms) >= 0
ans = df.hasChange.sum()

1 Like