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


一亩三分地论坛

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

[找工就业] 6Sense Onsite

[复制链接] |试试Instant~ |关注本帖
gaocan1992 发表于 2016-9-30 12:05:29 | 显示全部楼层 |阅读模式

2016(7-9月)-[14]CS硕士+<3个月短暂实习/全职 - 网上海投| 码农类全职@6Sensefresh grad应届毕业生

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

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

x
今天一大早坐Caltrain去SF进行onsite,吃了一个不错的早餐三明治然后公司超级低调的大门,进去以后还被大狗欢迎了一下。
Onsite一共四轮,和G家差不多。
第一轮
华裔Co-Founder,出了一个XML Parser:就是比如<xml><nodeA>AA</nodeA><nodeB>BB</nodeB></xml>
然后要生成一个树状结构,root是xml,两个子节点nodeA和nodeB,nodeA子节点AA,nodeB子节点BB。第一反应就是stack,但是早上太困了,stack里面的什么时候push什么时候pop的条件都想不到,隐约觉得和验证括号,模拟计算器什么的差不多。然后想了一会脑抽突然想先写recursion版本的,后来发现recursion更难得想。就被引导先做stack,然后脑子好了想出来了,但是各种漏小条件然后在各种帮助下写出来了。(证明早上第一场以后还是要多加练习怎么快速进入状态).1point3acres缃
第二轮.鏈枃鍘熷垱鑷1point3acres璁哄潧
烙印Engineer不记得什么岗位了,问题是一个雇员和经理的列表
emp mag. 1point3acres.com/bbs
1     -
2     1
3     1
4     2. visit 1point3acres.com for more.
5     4. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
那么1就是ceo,因为没有manager
然后打印结果
1. From 1point 3acres bbs
-2
--4
---5
--3
一开始脑抽了想复杂了,以为是topological sort写了个bfs版本的,后来发现就dfs就好了,传一个level参数。
不过之前先把所有的关系存一个hashmap <id, list<id>>这种结构就好。
第三轮
烙印Data Science组貌似,好像无精打采的样子。先出了个题目给你一些point,然后返回能组成的正方形个数。
我第一反应就是弄个hashmap存x坐标和一个list of y坐标,然后检查的时候我先提出hash表要不要来个order。烙印说不需要order不需要额外空间,然后hint了一下。
我发现只要for循环两次hashmap第一个x1,第二个x2,x2 < x1就好了,然后我还要对map.get(x1)再for循环y1, y2(y2 < y1)然后看看在不在map.get(x2)里面,然后说一下可以不用list用set优化。(还忘记了要检查x1 - x2 == y1 - y2)。面试官说可以优化,少一个for循环,于是想出来找到y1, y2就看看x1 - (y1 - y2)在不在map里先就好了不需要循环x2。
第二道题目是Unique Path2我就背书了,然后还展示了下滚动数组烙印看了一下看懂了就默默的走了。
第四轮
烙印CTO,很友好。出了一道data structure design的题目。就是webpage里面ctrl+F查找的时候怎么样设计一个数据结构可以马上知道哪些地方需要highlight。
我先抛弃了单纯的hashmap,trie啥的因为我说没办法build。然后人品爆发想到了hasmap<Chracter, List<Integer>>存每个字符的occurrence然后优化一下list变成set。
但是还是没有到达O(length)最后想了想要不map<char, map<int, chat>>这样,然后走了走发现不对,CTO就直接提示我可以反过来<char, map<char, list<int>>这样就可以了然后我表示佩服。
其他时间就是谈一谈,提提问题什么的然后午饭一个小哥带去旁边餐厅吃了很healthy的food。

感觉这家工程狮是很多伯克利的,然后HR说喜欢招华大的学生但是华大的不愿意来哈哈哈,应该bar还是挺高的。估计要挂了,move on。。。


补充内容 (2016-9-29 20:06):
晚上G家说HC挂了,人艰不拆啊。。。满怀希望,又失业了. Waral 鍗氬鏈夋洿澶氭枃绔,

补充内容 (2016-9-29 20:06):
晚上G家说HC挂了,人艰不拆啊。。。满怀希望,又失业了
. From 1point 3acres bbs
补充内容 (2016-10-7 18:35):
补充一下新情况:给了offer还没谈option

评分

1

查看全部评分

youto 发表于 2016-9-30 12:40:21 | 显示全部楼层
他家好高大上,都是级别比较硬的人来面试
回复 支持 反对

使用道具 举报

 楼主| gaocan1992 发表于 2016-9-30 12:41:09 | 显示全部楼层
youto 发表于 2016-9-29 20:40
他家好高大上,都是级别比较硬的人来面试
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
这一打听我的背景太渣了,感觉要挂
回复 支持 反对

使用道具 举报

sum0mer 发表于 2016-10-22 09:07:54 | 显示全部楼层
gaocan1992 发表于 2016-9-30 12:41
这一打听我的背景太渣了,感觉要挂

鏉ユ簮涓浜.涓夊垎鍦拌鍧. 请问楼主onsite多久拿到的offer?
回复 支持 反对

使用道具 举报

 楼主| gaocan1992 发表于 2016-10-22 09:08:59 | 显示全部楼层
sum0mer 发表于 2016-10-21 17:07
请问楼主onsite多久拿到的offer?

一周多?
回复 支持 反对

使用道具 举报

sum0mer 发表于 2016-10-22 09:22:51 | 显示全部楼层

好的谢谢
回复 支持 反对

使用道具 举报

noname01 发表于 2016-10-25 07:48:50 | 显示全部楼层
楼主也是uw的吗!
能不能麻烦解释一下第四轮题目 trie为啥不可以啊 以及你解法hashmap里character是key存的是什么啊
回复 支持 反对

使用道具 举报

johnnywsd 发表于 6 天前 | 显示全部楼层
  1. # -*- coding: utf-8 -*-

  2. """
  3. http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=204137&highlight=6sense
  4. 华裔Co-Founder,出了一个XML Parser:就是比如<xml><nodeA>AA</nodeA><nodeB>BB</nodeB></xml>. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  5. 然后要生成一个树状结构,root是xml,两个子节点nodeA和nodeB,nodeA子节点AA,nodeB子节点BB。第一反应就是stack,但是早上太困了,stack里面的什么时候push什么时候pop的条件都想不到,隐约觉得和验证括号,模拟计算器什么的差不多。然后想了一会脑抽突然想先写recursion版本的,后来发现recursion更难得想。就被引导先做stack,然后脑子好了想出来了,但是各种漏小条件然后在各种帮助下写出来了。(证明早上第一场以后还是要多加练习怎么快速进入状态)
  6. """

  7. import re
  8. from collections import deque


  9. class Element(object):
  10.     def __init__(self, val):
  11.         self.val = val
  12.         self.children = []
  13.         self.is_matched = False

  14.     def __repr__(self):
  15.         ret = self.val
  16.         if self.val[0] == '<' and self.val[-1] == '>':
  17.             for child in self.children:
  18.                 ret += repr(child)
  19.             ret += self.val[:1] + '/' + self.val[1:]
  20.         return ret
  21. . from: 1point3acres.com/bbs

  22. class Solution(object):
  23.     OPEN_TAG = 'open_tag'
  24.     CLOSE_TAG = 'close_tag'
  25.     TEXT = 'text'

  26.     def parse(self, xml):
  27.         # root = Element()
  28.         stack = []
  29.         self.stack = deque()
  30.         val = ''
  31.         state = self.TEXT
  32.         val = ''
  33.         for s in xml:
  34.             if s == '<':
  35.                 # do something
  36.                 val, state = self._process_token(val, state)
  37.                 state = self.OPEN_TAG. 鍥磋鎴戜滑@1point 3 acres
  38.                 val += '<'
  39.             elif s == '/' and state == self.OPEN_TAG:. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  40.                 state = self.CLOSE_TAG.鏈枃鍘熷垱鑷1point3acres璁哄潧
  41.                 val += '/'
  42.             elif s == '>':
  43.                 val += '>'
  44.                 val, state = self._process_token(val, state)
  45.             else:
  46.                 val += s
  47.         root = self.stack.pop()
  48.         return root

  49.     def _get_open_tag(self, close_tag):. 1point3acres.com/bbs
  50.         return close_tag[:1] + close_tag[2:]

  51.     def _process_token(self, val, state):
  52.         if state == self.TEXT and not val:. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  53.             return val, state
  54.         if state == self.OPEN_TAG or state == self.TEXT:
  55.             elm = Element(val).鏈枃鍘熷垱鑷1point3acres璁哄潧
  56.             if state == self.TEXT:
  57.                 elm.is_matched = True
  58.             self.stack.append(elm)
  59.         elif state == self.CLOSE_TAG:
  60.             open_tag = self._get_open_tag(val)
  61.             tag = None
  62.             children = []
  63.             elm = None
  64.             while self.stack:
  65.                 elm = self.stack.pop()
  66.                 if elm.val == open_tag and elm.is_matched is False:
  67.                     break
  68.                 else:
  69.                     children.append(elm)
  70.             if elm:
  71.                 elm.children = children[::-1]
  72.                 elm.is_matched = True. more info on 1point3acres.com
  73.                 self.stack.append(elm). Waral 鍗氬鏈夋洿澶氭枃绔,

  74.         state = self.TEXT. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
  75.         val = ''
  76.         return val, state


复制代码


  1. import unittest. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
  2. from solution import Solution


  3. class Test(unittest.TestCase):
  4.     def test_1(self):
  5.         sol = Solution()
  6.         xml = "<xml><nodeA>AA</nodeA><nodeB>BB</nodeB></xml>"
  7.         actual = sol.parse(xml)
  8.         self.assertEqual(xml, repr(actual))
    . 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷

  9.     def test_2(self):
  10.         sol = Solution(). from: 1point3acres.com/bbs
  11.         xml = "<xml><nodeA>AA</nodeA><nodeC><nodeB>BB</nodeB></nodeC></xml>"
  12.         actual = sol.parse(xml)
  13.         self.assertEqual(xml, repr(actual))
  14. -google 1point3acres
  15. if __name__ == '__main__':
  16.     unittest.main(verbosity=2)
复制代码

回复 支持 反对

使用道具 举报

johnnywsd 发表于 6 天前 | 显示全部楼层
  1. # -*- coding: utf-8 -*-. visit 1point3acres.com for more.
  2. """
  3. 烙印Engineer不记得什么岗位了,问题是一个雇员和经理的列表
  4. emp mag
  5. 1     -. 1point 3acres 璁哄潧
  6. 2     1
  7. 3     1
  8. 4     2
  9. 5     4
  10. 那么1就是ceo,因为没有manager 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  11. 然后打印结果
  12. 1
  13. -2-google 1point3acres
  14. --4
  15. ---5
  16. -3
  17. """


  18. from collections import defaultdict
  19. class OrgChart(object):
  20.     def __init__(self, relations):
  21.         self.graph = defaultdict(list). from: 1point3acres.com/bbs
  22.         self.ceo = None
  23.         for ee, manager in relations:
  24.             self.graph[manager].append(ee)
  25.             if manager is None:
  26.                 self.ceo = ee
  27. . visit 1point3acres.com for more.
  28.     def get_org_chart(self): 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
  29.         self._ret = []
  30.         self._pre_order(self.ceo, 0)
  31.         return self._ret. Waral 鍗氬鏈夋洿澶氭枃绔,

  32.     def print_org_chart(self):
  33.         chart = self.get_org_chart().鏈枃鍘熷垱鑷1point3acres璁哄潧
  34.         lines = []
  35.         for level, ee in chart:
  36.             lines.append('-' * level + str(ee))
  37.         st = '\n'.join(lines)
  38.         print st
  39. .鏈枃鍘熷垱鑷1point3acres璁哄潧
  40.     def _pre_order(self, node, level):.鏈枃鍘熷垱鑷1point3acres璁哄潧
  41.         if node:
  42.             self._ret.append((level, node))
    .1point3acres缃
  43.         for child in self.graph[node]:
  44.             self._pre_order(child, level + 1). 1point3acres.com/bbs


复制代码
. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴

  1. import unittest
  2. from solution import OrgChart


  3. class Test(unittest.TestCase):
  4.     def test_1(self):
  5.         relations = [
  6.             (1, None),
  7.             (2, 1),
  8.             (3, 1),. 鐣欏鐢宠璁哄潧-涓浜╀笁鍒嗗湴
  9.             (4, 2),
  10.             (5, 4),
  11.         ]
  12.         org_chart = OrgChart(relations)
  13.         actual = org_chart.get_org_chart(). from: 1point3acres.com/bbs
  14.         print
  15.         org_chart.print_org_chart()
  16.         print actual

  17. if __name__ == '__main__':. from: 1point3acres.com/bbs
  18.     unittest.main(verbosity=2)
复制代码
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

custom counter

GMT+8, 2017-11-21 05:33

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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