一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 431|回复: 7
收起左侧

新鲜的Twitter OA实习

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

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

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

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

x
实习OA,但我感觉实习和Full time的OA其实差不多,之前也是做了好多地里的Full time OA,抽中了原题。但现在找不到那些帖子了。。。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
楼主抽到的是两题版本,时间限制是7天。。。

第一题是Timeseries Data Aggregation.
从一个文件中中提取想要的数据。
文件的第一行是time period, . 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
第二行是空行
第三行开始有数据:具体时间,项目,次数

比如:
2015-08, 2016-04
. from: 1point3acres.com/bbs
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
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


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

需要注意排序和整合,当然这只是第一个test case,后面的test case有点tricky的地方,就是如果时间和项目都相同的话,那么output的次数应该是它们的合。
比如input:. visit 1point3acres.com for more.
2015-08, 2016-04. 1point3acres.com/bbs

2015-08-15, clicks, 635
2015-08-17, clicks, 177


那么output就应该是:. 1point3acres.com/bbs
2015-08-15, clicks, 812. Waral 鍗氬鏈夋洿澶氭枃绔,

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

第二题就是Tweet Recommendation
做了第一道题再做第二题,简直秒,题目有点长,但其实很简单,如果遇到的话用hash table就好啦~. From 1point 3acres bbs
. more info on 1point3acres.com
攒个人品准备下周的电面,顺便求大米啊~~~

评分

1

查看全部评分

 楼主| 如果我是金牛座 发表于 2016-11-13 13:30:42 | 显示全部楼层
有点小错误~比如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 | 显示全部楼层
额。。第一次发帖,有点不知道怎么发,上文中比如
input: . from: 1point3acres.com/bbs
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写的,第一题
. from: 1point3acres.com/bbs
  1. import sys
  2. import collections.1point3acres缃

  3. class CMP(object):. visit 1point3acres.com for more.
  4.     def __init__(self, date, catagory, number):
  5.         self.date = date
  6.         self.catagory = catagory
  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(','). From 1point 3acres bbs
  12. range1 = line[0]
  13. range1 = range1[:4] + range1[5:]. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  14. range1 = int(range1).1point3acres缃
  15. range2 = line[1].strip()
  16. range2 = range2[:4] + range2[5:]
  17. range2 = int(range2)
  18. . more info on 1point3acres.com
  19. output = []
  20. c = 0. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  21. line = sys.stdin.readline()
  22. line = sys.stdin.readline()
  23. while line:
  24.     new_line = line.split(','). from: 1point3acres.com/bbs

  25.     obj = CMP(new_line[0], new_line[1], new_line[2][:-1])
  26.     org_catagory = obj.catagory
  27.     org_number = obj.number 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  28.     org_date = obj.date[:-3]
  29.     new_date = org_date[:4] + org_date[5:]
  30.     new_date = int(new_date)
  31.     if new_date >= range1 and new_date < range2:
  32.         output.append([org_date])
  33.         output[c].append(obj)
  34.         c += 1

  35.     line = sys.stdin.readline()

  36. d = collections.defaultdict(list)
  37. for k, v in output:
  38.     if k in d:. 1point 3acres 璁哄潧
  39.         flag = 0
  40.         for a in d[k]:
  41.             if a.catagory == v.catagory:
  42.                 a.number += v.number
  43.                 flag = 1
  44.         if flag == 0:
  45.             d[k].append(v)
  46.     else:
  47.         d[k].append(v)
  48. . 1point 3acres 璁哄潧
  49. new_d = sorted(d.items())
  50. new_d = new_d[::-1]

  51. for k, v in new_d:
  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)
  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我不知道怎么用………
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

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

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-9 10:31

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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