【通知】7月22,工业界资深数据科学家教你破解各大公司面试!


一亩三分地论坛

 找回密码
 获取更多干活,快来注册

一亩三分地官方iOS手机应用下载
查看: 2297|回复: 7
收起左侧

新鲜的Twitter OA实习

[复制链接] |试试Instant~ |关注本帖
如果我是金牛座 发表于 2016-11-13 13:28:55 | 显示全部楼层 |阅读模式

2017(7-9月) 码农类 硕士 实习@Twitter - 网上海投 - 在线笔试 |Otherfresh grad应届毕业生

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

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

x
实习OA,但我感觉实习和Full time的OA其实差不多,之前也是做了好多地里的Full time OA,抽中了原题。但现在找不到那些帖子了。。。
楼主抽到的是两题版本,时间限制是7天。。。

第一题是Timeseries Data Aggregation.. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
从一个文件中中提取想要的数据。
文件的第一行是time period, .鏈枃鍘熷垱鑷1point3acres璁哄潧
第二行是空行
第三行开始有数据:具体时间,项目,次数

比如:
2015-08, 2016-04

2015-08-15, clicks, 635
2016-03-24, app_installs, 683
2015-04-05, favorites, 763
2016-01-22, favorites, 788 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
2015-12-26, clicks, 525. 1point 3acres 璁哄潧
2016-06-03, retweets, 101
2015-12-02, app_installs, 982
2016-09-17, app_installs, 770
2015-11-07, impressions, 245
2016-10-16, impressions, 567
. 鍥磋鎴戜滑@1point 3 acres

Output是找出time period中的所有数据,不要求具体日期,如果时间相同,项目和次数也要整合,上面例子的output就应该是
2016-03, app_installs, 683
2016-01, favorites, 788
2015-12, app_installs, 982, clicks, 525
2015-11, impressions, 245
2015-08, clicks, 635

需要注意排序和整合,当然这只是第一个test case,后面的test case有点tricky的地方,就是如果时间和项目都相同的话,那么output的次数应该是它们的合。
比如input:. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
2015-08, 2016-04

2015-08-15, clicks, 635
2015-08-17, clicks, 177
. more info on 1point3acres.com

那么output就应该是:
2015-08-15, clicks, 812

这题不难,就是有点麻烦。。。

第二题就是Tweet Recommendation
做了第一道题再做第二题,简直秒,题目有点长,但其实很简单,如果遇到的话用hash table就好啦~. 鍥磋鎴戜滑@1point 3 acres

攒个人品准备下周的电面,顺便求大米啊~~~

评分

1

查看全部评分

 楼主| 如果我是金牛座 发表于 2016-11-13 13:30:42 | 显示全部楼层
关注一亩三分地公众号:
Warald_一亩三分地
有点小错误~比如input: 2015-08, 2016-04  2015-08-15, clicks, 635 2015-08-17, clicks, 177   那么output就应该是: 2015-08-15, clicks, 812
回复 支持 反对

使用道具 举报

 楼主| 如果我是金牛座 发表于 2016-11-13 13:34:03 | 显示全部楼层
关注一亩三分地微博:
Warald
额。。第一次发帖,有点不知道怎么发,上文中比如
input:
2015-08, 2016-04  

2015-08-15, clicks, 635
2015-08-17, clicks, 177
   
那么output就应该是:
2015-08, clicks, 812
回复 支持 反对

使用道具 举报

阿童木 发表于 2016-11-15 01:56:43 | 显示全部楼层
楼主可以发一下代码吗,谢谢!
回复 支持 反对

使用道具 举报

 楼主| 如果我是金牛座 发表于 2016-11-15 04:12:58 | 显示全部楼层
我用python写的,第一题
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  1. import sys
  2. import collections

  3. class CMP(object):
  4.     def __init__(self, date, catagory, number):
  5.         self.date = date.鐣欏璁哄潧-涓浜-涓夊垎鍦
  6.         self.catagory = catagory. more info on 1point3acres.com
  7.         self.number = int(number)

  8.     def __cmp__(self, other):
  9.         return (cmp(self.catagory, other.catagory))

  10. line = sys.stdin.readline()
  11. line = line.split(',').1point3acres缃
  12. range1 = line[0]
  13. range1 = range1[:4] + range1[5:]
  14. range1 = int(range1)
  15. range2 = line[1].strip()
  16. range2 = range2[:4] + range2[5:]
  17. range2 = int(range2).鏈枃鍘熷垱鑷1point3acres璁哄潧
  18. . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  19. output = []
  20. c = 0
  21. line = sys.stdin.readline()
  22. line = sys.stdin.readline()
  23. while line:
  24.     new_line = line.split(',')
  25. .鏈枃鍘熷垱鑷1point3acres璁哄潧
  26.     obj = CMP(new_line[0], new_line[1], new_line[2][:-1])
  27.     org_catagory = obj.catagory
  28.     org_number = obj.number
  29.     org_date = obj.date[:-3]
  30.     new_date = org_date[:4] + org_date[5:]
  31.     new_date = int(new_date)
  32.     if new_date >= range1 and new_date < range2:
  33.         output.append([org_date])
  34.         output[c].append(obj)
  35.         c += 1

  36.     line = sys.stdin.readline()

  37. d = collections.defaultdict(list)
  38. for k, v in output:
  39.     if k in d:
  40.         flag = 0
  41.         for a in d[k]:
  42.             if a.catagory == v.catagory:
  43.                 a.number += v.number
  44.                 flag = 1
  45.         if flag == 0:
  46.             d[k].append(v)
  47.     else:
  48.         d[k].append(v)

  49. new_d = sorted(d.items())
  50. new_d = new_d[::-1]

  51. for k, v in new_d:. 1point 3acres 璁哄潧
  52.     if type(v) is list:
  53.         v.sort()
  54.     else:
  55.         continue

  56. for k, v in new_d:.鐣欏璁哄潧-涓浜-涓夊垎鍦
  57.     sys.stdout.write(k).鏈枃鍘熷垱鑷1point3acres璁哄潧
  58.     for obj in v:
  59.         sys.stdout.write("," + obj.catagory + ", " + str(obj.number))
  60.     print ""
复制代码
回复 支持 反对

使用道具 举报

somesaywithme 发表于 2016-11-22 10:39:07 | 显示全部楼层
我做了好久了,到现在几个礼拜了都没收到后续,问什么会这样呢?
回复 支持 反对

使用道具 举报

zhihaosun 发表于 2016-11-22 10:46:33 | 显示全部楼层
第一道题用TreeMap挺省事的吧
回复 支持 反对

使用道具 举报

 楼主| 如果我是金牛座 发表于 2016-11-22 11:02:17 | 显示全部楼层
zhihaosun 发表于 2016-11-22 10:46. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
第一道题用TreeMap挺省事的吧
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
Java的话应该ok,python我不知道怎么用………
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-7-21 13:09

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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