一亩三分地论坛

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

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

Uber Intern Onsite四轮附求职感想

  [复制链接] |试试Instant~ |关注本帖
堕落的猴子 发表于 2015-4-18 14:35:12 | 显示全部楼层 |阅读模式

2015(4-6月) 码农类 硕士 实习@Uber - 内推 - Onsite |Passfresh grad应届毕业生

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

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

x
已定F家实习,准备优雅地拒掉(挺痛苦的其实),纯分享面经。
土木转行所以细节可能粗糙,请谅解。. visit 1point3acres.com for more.

写在前面:
因为是土木转行找实习,去年秋天上OS和Network恶补基础知识,leetcode和CC150也是12月底才开始刷,从1月初才开始全面申请,相对是比较晚的了。
三个月来一边面试一边刷题一边上master,至此本次求职正式结束,所有拿到面试的,没有被任何一个初面卡住,100%进入最终轮(电面或者Onsite)。90%以上都是内推。
. From 1point 3acres bbs
直接被无视的:LinkedIn(太晚了),Twitter(秒拒,肯定是简历关键词不够),Apple(内推人投错去retail部门),Airbnb(太晚了),Amazon(不够帅?)。
过了面试,太晚没坑的:微软(本来就裁很凶了),Google(0 host),Snapchat(CEO小哥亲口说没headcount了,我懂的,么么哒),Oracle(0 host)。
面到最后,因为实力不济的:Palantir(当天上午作死去面BlackRock结果下午精力不够)。
可以面试,主动放弃的:TripAdvisor(来信太晚),VMware(没兴趣,直接裸做OA然后写面经造福小伙伴),Dropbox(和其他onsite撞太凶而且偏晚)。
OFFER:EPIC,BlackRock,Yelp,Facebook,Bloomberg,Uber,从了Facebook(Uber表示没法提前onsite,唉)。

因为基础薄弱,我Leetcode都是直接看答案然后理解思路,所以根本是很粗糙的半遍,Hard大部分碰到了根本做不出来,CC150也是最多记住思路,所以解题实力和基础功力肯定是不如大部分准备扎实的人。哪怕我在一边面试的过程中也一边刷题外加上算法课,最后Leetcode也只是从120提升到了150的样子。看很多朋友的面经,不得不感叹自己还是挺Lucky的。个人感觉,我对于面试中刷题以外的部分的注重和锻炼,起到了相当大的作用。近期准备写一写自己的心得总结,针对非刷题部分(刷题部分前辈们总结很完美了),希望能够为地里的大家提供一个新的面试思路。
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
感想:
1,Uber家美女真多啊。。。好吧不开玩笑,他们家的女码农是挺多的,内推我的大妞多谢啊。
2,不愧是Uber,问的题不能算难,但是真的挺全面,不只是单纯算法,还会考验一些基础工程能力。.1point3acres缃
3,Why Uber这个问题一定要能准备好多种多样的答案,可以肯定Hiring Manager是会问类似问题的。. 鐗涗汉浜戦泦,涓浜╀笁鍒嗗湴
4,面试官之间会简单交流之前问了什么问题,所以不用担心问题重复,如果真的重复了也肯定是说好的。
5,一般会让你打开笔记本写代码跑测试,投射到大屏幕上,分辨率会因此被自动调高,可以先调低分辨率,不然字太小了。
. Waral 鍗氬鏈夋洿澶氭枃绔,
Onsite:
一轮:ABC小哥,看起来很有肌肉的感觉,天了噜比我聪明还比我肌肉多。

1,Run-Length Encoding,就是把aaabbcccaaaa变成3a2b3c4a这样,要求encode后的信息要比原来的短。
. 鍥磋鎴戜滑@1point 3 acres
首先暴力扫描之。然后问有什么问题,答曰decode的时候111aaa会encode成313a然后decode成313个a。提出每encode一个就插入一个特殊符号标记,他说可以。然后追加问是否可以不用特殊符号,答曰创建新的计数单位,比如用A代表1B代表2,然后aaa就变成Ca(you get the idea),这样就不需要插入额外符号了。
. 1point 3acres 璁哄潧
2,Anagrams,原题,给一堆string,分析有多少组anagrams和各自对应的anagram。
-google 1point3acres
其实没写过原题,只是知道思路。先说用HashMap存计数,然后map的key用任意的anagram。然后说如何比较anagram,先说排序然后比较,然后提出用类似counting sort的线性扫描,然后再提出可以用上面这题的encode方法,用一个额外常数大小的辅助map存储string里不同字符的counter,然后格式化打印该map(比如aacb,经过map扫描然后稍微格式化一下就是2a1b1c),然后对比主map即可。最后打印主map。

3,上面两个都是聊天,选一个出来写代码并且跑一些测试结果。-google 1point3acres

二轮:英伦小哥,看起来相当瘦弱,和上面的是同一个组的,天了噜比我聪明还比我帅。

1,全程其实就一题,设计spotify的当前TOP10榜单,显示的是当前正在被播放最多的10首歌。-google 1point3acres

见仁见智的题,小哥会一直问细节问设计。我能记得的考点:
-用min-heap存TOP10的话,存哪里(缓存),如何维护。播放次数肯定需要一个大的table来存,用什么类型的存储(Redis很万能)。
-用户点击播放或者暂停或者下一首后,这个更新POST到服务器之后服务器应该做什么,这里可以用到消息队列,把更新TOP10和数据库的功能交给worker去做,服务器只负责传递信息。.鏈枃鍘熷垱鑷1point3acres璁哄潧
-worker处理完信息发现需要更新TOP10之后,如何通知服务器并且在客户端那边更新。这里就是一个pub/sub的概念(Kafka万能啦),同时需要有socket池来通知客户端去更新(Python的话就Socket.IO咯)。
-如何减少操作量,比如把一些server的操作移到worker,增加一些条件检查不用每次把整个流程跑一遍(可以提前结束或者跳过某些部分)。
-线程安全和原子操作性(Redis里的INCR和SET的区别还记得嘛),如何保证多个worker接到同一个歌的update能正确操作。(RCU锁之类的)。
-worker挂了怎么办,server挂了怎么办,存heap和table的服务器挂了怎么办,整体的瓶颈可能是哪里(大量人听同一首歌,会导致一个歌不停被update+1,这个其实可以aggregate起来),如何优化(就增加一个aggregator),这个优化的服务器挂了怎么办。大致来说都是用备份服务器,然后备份里放一段时间内的起始备份和一个追加操作的log,类似GFS那样。
-假如我们不追求performance,只追求用户体验,上面提出来的方案应该如何优化。这里就是让备份服务器牺牲空间和效率来定期完整备份主服务器,主服务器挂了直接换备份的上。所以要增加一台Master服务器来管理这些,然后Master服务器本身又要备份。。。就看你愿意说多细了
-有哪些现存技术可以直接实现这些东西,改进的可能性,这里就是show你的buzz word储量了。

三轮:技术大佬,看起来就很睿智,天了噜比我聪明还比我睿智。

1,我个人觉得最有意思的一轮,可能其他人觉得不这样吧。让我实现word count。

先让我别写程序本身,问我一般怎么review和debug一个word count代码。先说了general的peer review,style guide还有yellow duck debugging之类的。最后那个我瞎扯调节气氛的XD。
然后问我知道不知道如何验证程序的正确性,我说test吧,然后他问如何test。我说好像工业化一点的是unit test,然后对方来劲了说你开始写代码吧,顺便写个unit test。
先把代码简单写了下,main里手动输入了input看了下结果,感觉OK。然后承认没写过unit test,被告知可以google,果断打开google抄例子,改写,测试,debug,通过。
然后要我输出word count结果并且按照word排序,依稀记得TreeMap有这个效果,又是直接开google验证想法,确认了直接改写代码,再次改写unit test测试输出顺序。
然后要我输出word count结果并且按照count排序,直接google了一个根据value排序hash map的方法,并且改写unit test测试输出顺序,结果发现结果不正确。debug时间不太够,转去让我问问题。问问题的时候想到因为复制来的方法里会新建一个内容相同的字符串但是内存地址不同,导致查找key的时候会无法找到,对方表示这个分析很好。结束面试。
. 1point 3acres 璁哄潧
四轮:Engineering Manager,就是Hiring Manager了。天了噜比我厉害还比我美。

1,各种聊天聊项目聊他们做什么,问你想做什么在追求什么挑战。
.鏈枃鍘熷垱鑷1point3acres璁哄潧
这里就是show你的激情的时候了。如果这个HM感觉你不适合他们组但是适合别的组,会追加面其他的Manager。我个人是很想做product还有见识下工业界的工作方式和设计哲学,所以就按照这个方向说下去了。. 鍥磋鎴戜滑@1point 3 acres

2,超简单的piglatin函数。

要求详细描述思路,不要一步到位,就慢慢和她从暴力操作string聊到stringbuilder再聊到corner case处理。期间她也不断追加新的input类型,最后皆大欢喜。

3,Why Uber?

因为将来全职有机会去中国出差!是的,我遵从自己的本能,直接这么说!当然了,还说了别的七七八八的,我本来对他们家就很有兴趣(可惜面试安排太晚而且没法提早,只能从了别人),所以这样一个问题作为我求职的finale,实在不能再合适了。

4,因为之前和recruiter提到自己很急(其实已经签了),所以当场让我等了下就口头offer了,唉真是一种说不出的感觉。
. 鍥磋鎴戜滑@1point 3 acres
最后,祝愿各位都能拿到心仪offer,开心过暑假。

评分

15

查看全部评分

 楼主| 堕落的猴子 发表于 2015-4-21 23:04:18 | 显示全部楼层
outtime 发表于 2015-4-21 18:24
楼主有什么推荐的技术博客之类的吗?感觉楼主了解的好多。

我有一个码农群,里面都是另外一个魔兽世界论坛过来的,差不多600来人吧。我每天习惯就是看他们又在吹什么牛,就去搜索下那些关键词,或者自己学到了新姿势就问问他们一般怎么应用和吹牛逼。久而久之就被熏陶了。
. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
技术博客啊wiki啊之类的都是搜索时用的辅助资源(而且那些码农本身都知道针对一些关键字可以看什么样的博客),主要我个人还是喜欢在与人的交流中开始我的知识积累。既然别人已经走过了我要走的道路,那么我就先试试看跟着他们走走看吧,码农本身不就是强调站在巨人肩膀上嘛,我正好有这么一群小巨人伙伴而已XD
回复 支持 1 反对 0

使用道具 举报

 楼主| 堕落的猴子 发表于 2015-4-18 21:33:55 | 显示全部楼层
annawuyi 发表于 2015-4-18 15:24
楼主拿了这么多offer,佩服啊,请问楼主本科有CS基础吗?除了上OS和Network课,还上了什么课?否则不太好刷 ...
. From 1point 3acres bbs
我土木本科是0基础。去年暑假我去学校以non-degree program的形式补上了本科的数据结构课,所以至少刷题时的一些名词听得懂。除了这个本科的数据结构课还有一个本科的advanced programming稍微练了下C/C++/Perl的编程,所以OS和Network的时候没有死得太难看。. 1point 3acres 璁哄潧

我内推里其实同学关系不多,主要是藤校,所以校友多,直接Linkedin客气拜托校友,对方人都很好。当然地里和MITBBS的内推资源我也都用了。总之我把第一份实习看得特别重,所以能内推我就尽力找内推,海投是下下策。大牛们完全可以直接海投实力碾压的XD
回复 支持 1 反对 0

使用道具 举报

annawuyi 发表于 2015-4-18 15:24:21 | 显示全部楼层
楼主拿了这么多offer,佩服啊,请问楼主本科有CS基础吗?除了上OS和Network课,还上了什么课?否则不太好刷题啊。楼主内推那么多,同学关系肯定很好,自己能力也强。楼主的内推主要是校友还是有什么途径?期待楼主的心得总结。谢谢
回复 支持 反对

使用道具 举报

liusicong999 发表于 2015-4-18 21:49:06 | 显示全部楼层
堕落的猴子 发表于 2015-4-18 21:33
我土木本科是0基础。去年暑假我去学校以non-degree program的形式补上了本科的数据结构课,所以至少刷题 ...

像第二轮面试就只会leetcode上的题就不行了吧,用到了network的知识?LZ觉得除了刷题,还有哪些知识必须知道?
回复 支持 反对

使用道具 举报

Johnestar 发表于 2015-4-18 22:05:27 | 显示全部楼层
惊现猴哥,简直太屌。
回复 支持 反对

使用道具 举报

 楼主| 堕落的猴子 发表于 2015-4-18 22:28:08 | 显示全部楼层
liusicong999 发表于 2015-4-18 21:49
像第二轮面试就只会leetcode上的题就不行了吧,用到了network的知识?LZ觉得除了刷题,还有哪些知识必须 ...
鏉ユ簮涓浜.涓夊垎鍦拌鍧.
对于这种新兴公司来说,除了刷题,毫无疑问就是关于业界的新知识和新技术,我这个学期其实上的课就是这个方向。就是脱离算法的设计,哪怕没去过工业界,也能大概理解一些工业界的设计哲学,比如parallelism/multitasking/threading/locking/security/testing/throughput这些。当然主要是我本人对这个新领域就很感兴趣,所以看到一个新名词都想去研究下。或者说,我单纯只是想显得很有姿势罢了!
. more info on 1point3acres.com
第二轮的回答里用到的大部分知识,根本都是我最近两个星期,一个需要用消息队列(这个词上周才明白到底什么概念)的web app作业里自己各种搜索之下学会的。完全是现学现卖。至于这个学期正在上的课:

算法分析,正式开始研究CLRS,所以这个学期的刷题效率要比寒假高多了,能理解最优解的哲学。
Cloud Computing,这个是最关键的也是很push的课。被强迫0基础写web app(学期开始什么tomcat什么django什么node我根本不知道)并且使用各种开源技术,所以多多少少接触了很多buzz word,然后每周读2篇开源技术文章,所以脑子里至少都知道这些开源技术和他们背后代表的技术栈。
Aho老爷教的Translator,这个其实倒没什么帮助,只是增加了一些对于编程语言的了解。比如经典的Java和XX的区别,我能聊多一些,而且不是那种网上随便搜来的列表。. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
最后还有一个Network的进阶课,主要就拿semester project来当学习如何做iOS App了。本质上还是靠斯坦福的白发老爷爷。.1point3acres缃

还有什么都欢迎留言,我在写我的总结之前也希望多交流下看看大家都对什么问题感兴趣呐。
回复 支持 反对

使用道具 举报

又见紫风铃 发表于 2015-4-18 22:32:09 | 显示全部楼层
猴哥太屌了,暑假还望猴哥多多指导
回复 支持 反对

使用道具 举报

annawuyi 发表于 2015-4-19 14:07:09 | 显示全部楼层
堕落的猴子 发表于 2015-4-18 21:33
我土木本科是0基础。去年暑假我去学校以non-degree program的形式补上了本科的数据结构课,所以至少刷题 ...

谢谢楼主回复,请问楼主master是CS吗?去年暑假你刚到美国吧?怎么会想到马上去学校以non-degree program的形式补上了本科的数据结构课?还没开学就想到上什么课了?为什么会想到用non-degree program的形式?楼主没有学java吗?谢谢
回复 支持 反对

使用道具 举报

 楼主| 堕落的猴子 发表于 2015-4-19 21:20:29 | 显示全部楼层
annawuyi 发表于 2015-4-19 14:07
谢谢楼主回复,请问楼主master是CS吗?去年暑假你刚到美国吧?怎么会想到马上去学校以non-degree program ...

我是美本,土木。. visit 1point3acres.com for more.

13年5月毕业,工作了几个月,然后不爽辞。所以当时直接申请CS的master肯定不可能,所以就在本校用non-degree补课,为什么会想上这些课也只是觉得这些课看起来比较基础,能够弥补我和CS本科生之间的基础差距。这个学期才是我master的第一个学期。

我起手就是学java的,最近慢慢在转python和scala。面试主要用java回答。
回复 支持 反对

使用道具 举报

lx223 发表于 2015-4-19 23:11:12 | 显示全部楼层
请问楼主os和network是上的什么课啊?
回复 支持 反对

使用道具 举报

cuiyang36 发表于 2015-4-20 01:17:02 | 显示全部楼层
"设计spotify的当前TOP10榜单"这题楼主是如何准备的,网上有没有可以参考的资料?谢谢,感觉楼主这部分答得很精彩,尤其是Kafka和各种buzz word,是楼主之前用它们做过项目吗?
回复 支持 反对

使用道具 举报

 楼主| 堕落的猴子 发表于 2015-4-20 01:29:48 | 显示全部楼层
lx223 发表于 2015-4-19 23:11
请问楼主os和network是上的什么课啊?
. From 1point 3acres bbs
我们学校的OS和Network课,编号是COMS4118和CSEE4119.

OS是一个巨严格的老师教的,各种改Linux内核然后魔改安卓机。Network则是去实现各种协议的特性,比如DNS比如TCP比如UDP之类的。
.鏈枃鍘熷垱鑷1point3acres璁哄潧
回复 支持 反对

使用道具 举报

 楼主| 堕落的猴子 发表于 2015-4-20 01:36:18 | 显示全部楼层
cuiyang36 发表于 2015-4-20 01:17
"设计spotify的当前TOP10榜单"这题楼主是如何准备的,网上有没有可以参考的资料?谢谢,感觉楼主这部分答得 ...

完全没有,而且我都没怎么看Uber面经里的design题。目前看来他们家经常互让你直接实现一个热门的流媒体,比如Netflix比如Spotify比如Pandora这样。
. From 1point 3acres bbs
我只是把这一年转行到现在所有存在于脑子里的词都发挥出来了而已。Kafka,Redis,Hive这些都是Cloud Computing上准备用在final project里的技术,但是还没实际用过,只是看过技术文章知道大概应用而已。就和我上面说的一样,我只是无时不刻和各种前辈在各种群里交流,每次看到一个新词都去google一下意思+知乎一下大概的应用/优劣/讨论,记在脑子里装逼用。。。XD
回复 支持 反对

使用道具 举报

lx223 发表于 2015-4-20 02:31:56 | 显示全部楼层
堕落的猴子 发表于 2015-4-19 17:29
我们学校的OS和Network课,编号是COMS4118和CSEE4119.

OS是一个巨严格的老师教的,各种改Linux内核然 ...

哦,是学校的课啊,那网上应该没有了。我现在是在转cs的途中,想在网上找一门比较合适的os和network的公开课呢。
回复 支持 反对

使用道具 举报

狂暴CNM地 发表于 2015-4-20 02:45:11 | 显示全部楼层
话说LZ现在的专业还是CS吧。  如果Master还是土木的话感觉不太可能拿到这么多面试。。
回复 支持 反对

使用道具 举报

 楼主| 堕落的猴子 发表于 2015-4-20 04:12:25 | 显示全部楼层
狂暴CNM地 发表于 2015-4-20 02:45
话说LZ现在的专业还是CS吧。  如果Master还是土木的话感觉不太可能拿到这么多面试。。

我本科是土木,目前是CS的Master第一学期。

Master还是土木的话,那真是我多屌都没救了。。。
回复 支持 反对

使用道具 举报

annawuyi 发表于 2015-4-20 16:49:23 | 显示全部楼层
堕落的猴子 发表于 2015-4-19 21:20
我是美本,土木。

13年5月毕业,工作了几个月,然后不爽辞。所以当时直接申请CS的master肯定不可能, ...

继续请问猴哥:本科毕业找的是什么工作?是土木的吗?java是什么时候学的?猴哥敢于辞职,说明有地气,刚学CS就有这么多offer,牛人啊。
回复 支持 反对

使用道具 举报

 楼主| 堕落的猴子 发表于 2015-4-21 07:05:54 | 显示全部楼层
annawuyi 发表于 2015-4-20 16:49. from: 1point3acres.com/bbs
继续请问猴哥:本科毕业找的是什么工作?是土木的吗?java是什么时候学的?猴哥敢于辞职,说明有地气,刚 ...

本科毕业找了结构工程师的工作,java是去年3月,快辞职之前开始学的(6月开始在学校补基础课了)。
回复 支持 反对

使用道具 举报

annawuyi 发表于 2015-4-21 14:26:37 | 显示全部楼层
堕落的猴子 发表于 2015-4-21 07:05
本科毕业找了结构工程师的工作,java是去年3月,快辞职之前开始学的(6月开始在学校补基础课了)。

java 是自学的吗?谢谢
回复 支持 反对

使用道具 举报

本版积分规则

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

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

关闭

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

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

custom counter

GMT+8, 2016-12-4 23:25

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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