零基础刷题拿到亚麻社招Offer的经验

去年七月写了篇《哎,Data类实在太难招工作了》(原谅错别字),经过了楼主大半年的奋斗,拿到了亚麻音乐社招的sde全职offer,另外拿到的onsite有Apple(onsite挂), Google(onsite安排出了问题,后面详说),Twilio (onsite 挂), Amne(Onsite还没去)。目前打算从了Amazon music。这篇文章主要讲讲楼主这一年找工作的经历,积累下的经验,希望能够帮助到广大还在挣扎中的朋友。

首先讲一讲Data类的工作大致分成三类,data analyst, data engineer, data scientist。面试所需的skill set如下:
DA: SQL, case study, 重bq
DE:算法easy到medium( 也有公司是hard比如苹果某些组的DE跟sde是一个标准);SQL,ETL知识,轻BQ,轻ML知识
DS:算法easy到medium,比DE要求低一些;SQL, ML算法,统计,case study
如果你是刚开始考虑自己到底是找Data类还是码农类的工作的话,如果你肯下功夫刷题,我的建议是SDE>DE>DA>DS。为什么?Data类的工

作看似非常好入门但是有很多坑,就DS来说,不同公司的考点不同,你不仅需要学ML,统计,case, 还有算法,内容太多太杂,虽然每一样都是比SDE好入门但是复习起来非常不容易。楼主就是自学的统计跟ML到后面面试的时候还得花时间去复习。不如直接算法来的straightforward,无论面那个公司只需不停地focus刷题就可以。而看似最好入门的DA,就是因为太好入门了,所以很多美国人也可以做,注重work cross functionally,所以语言非常重要,对大部分同胞来说还是吃亏的。

之前那篇文章中楼主讲了自己的背景,应该没有背景比楼主更差更难过简历关的了,所以在去年楼主投出去的简历都是没有回复的。在去年的8月份楼主在一个求职群里看到有个华人小公司招人,抱着试一试的态度居然被录用了,虽然薪水非常非常低,但是工作经验对于专业不对口的同学来说非常有用,今年开始投简历以后得到的回复就有一些了。楼主去年入职的华人小公司非常小,刚进去的时候只有几个人,本来打算认真好好干几年的,几个月后公司发生了一些不可说的事情,楼主变成了最早入职的员工,从那之后打算跳槽了。在职刷题的日子非常艰苦,每天下班后已经非常累了,还是逼自己多刷几道题,楼主当时还有音乐上的活,整个人非常非常累,一度还累生病了。转机发生在今年年初。

GOOGLE

今年1月末的时候看到Google有个music operation的工作,需要3年的sql经验,以及music industry operation的经验,楼主本科时候陆陆续续有个两年part time的经验,硬着头皮让youtube music的朋友给我内推了。结果一周后直接收到了onsite邀请。由于这个职位非常冷门,晚上没有任何面经,楼主决定拖个半个月再去onsite,后来被证明这是个不好的决定。大家找工作的时候如果碰到这种组招点对点的职位,只招一个的,能尽快面就尽快面,不要等到自己准备好了再面。投简历也是一样,组招的职位,越早越好,拿面试远比面试困难。Google的onsite定在了NYC,一切都订好NDA都签好后,楼主发现了个问题。当时的工作是在波士顿,貌似狗家HR以为我在纽约,丝毫没提trip安排的事。楼主战战兢兢地问了下报销的事,没想到HR说哦你不在纽约啊,那就先电面吧。。。直接哭晕。。电面很顺利,都是些music industry的问题,面试官也很喜欢我的背景,本来以为过了,结果第二天发现这个职位撤了。然后接到电话说这个职位被filled了,但是feedback不错,所以不冷冻,让我看到别的合适的职位告诉她。虽然狗家的这个职位挂了,但是对我的帮助非常大。为了准备这个面试,我找了7个朋友每人给我模拟 30到45分钟的BQ电面,涵盖了各种有可能被问到的BQ,对之后的面试帮助非常大。我建议大家在准备BQ的时候最好找人给你模拟,在别人面前说会有面试的氛围跟感觉,跟自己跟自己说完全不一样。

APPLE

二月份,让朋友内推了苹果家的两个组,都是Data Engineer职位,但是从面试跟交流上感觉要求的算法能力跟SDE是一样的。苹果家拿面试非常难,建议大家找熟的朋友强推,面试难度也是面过几家里面比较难的。第一个是Austin的组,HR非常友善,回复很快。楼主因为自己专业问题找工作时略显自卑,没想到HR说我做HR二十多年,发现会玩乐器的Engineer比其他人perform更好,非常鼓励我。顺利过了HR面跟一轮tech面后被邀请到Austin Onsite,一共六轮,其中一轮是吃饭,也算在面试中。每轮都会有大概10分钟的BQ,然后做题。全部是算法题,难度在medium到hard之间。
第一轮里扣买股票问题变种,要求return的是买卖的index,会有followup,全都是买股票系列那几题。第二轮是类似LRU的题,楼主当时还没做过这道题,用list的方法写了个不是最优解的,在各种提示下说出了最优解的思路但是没有时间 Implemt。
第三轮吃饭纯BQ。
第四轮印度人蠡口思儿。
第五轮记不清了是一道two pointer的题,现实的例子,不是原题。
第六轮蠡口散而。

除了第二轮不完美,其他几轮都最优解答出来。但是依然没有通过,想来想去应该是第二轮的问题。悲剧的是第二轮原本是吃饭,面试官搞错了,所以让第三轮的面试官带我吃饭。面完几天后HR说组里说要在等一段时间再给我回复。大概两周后我再催崔出了拒信。果家Austin整体给我印象很好,食堂很漂亮,东西也好吃。面试期间每天还给100刀的伙食费,不用凭证直接给。

另外一个组是Siri中的某个组,华人大姐HM聊天时看了我的背景问我算法是不是自学的,我说是,一度冷场十几秒,非常尴尬。HM说组里的人都很厉害是大神,感觉不是很满意我的背景,一度以为挂了,然后给了technical电面。我给拖了一两周。电面是蠡口刘启巴的变种,有followup,另外还问了写大数据的问题,怎么优化查找之类的。一周后HR给我打电话说feedback是positive但是组里没有headcount了,两个选择,要么10月份(每年9,10月是果家刷新headcount的时间)新的headcount出来后安排onsite,要么推给其他的组。我说我刚面完Austin的组,她问了我HR名字帮我去说一说增加几率,然而没有啥用。对了果家可以不同的组一直投,没有冷冻的。

挂了苹果的Onsite后楼主一度陷入深深的绝望,倒不是因为想进顶尖的公司,是觉得只有那几个公司才愿意不介意我的专业给我面试,而我却

没有把握住。哭了几天之后静下心来,继续海投,得到了一些回应:

CRUNCHBASE:

这家店的面试让我非常无奈。HR跟HM面非常顺利,他家做的东西跟我工作做的东西非常像。很快迎来了电面。电面是个台湾人,题目非常简单,two sum, three sum以及各种不同的follow up。楼主全部Bug free秒了。结果收到了拒信。后来得到feedback说台湾小哥说我的code等号左右没有空格,不够规整。问了几个其他公司的面试官都说不会以这个做标准,且不说IDE会改,这是一个说了就会马上注意的问题,以这个作为标准真的很无奈。但是楼主确实没加空格,没有办法。之后的面试都非常注意这一点,也算吸取教训吧。

AMNE:

他家是先OA,然后一轮technical电面,一轮纯BQ。tech电面是聊天的形式,先是问项目,非常详细,各种数据类型,用的技术细节。然

后是算法题只需要讲思路,问了三道,两道买股票medium, hard; 一道蠡口思旧,楼主拿到了Onsite还没去。

TWILIO:

他家是Data engineer, growth. 是一个需要三年工作经验的职位,不知为啥给了楼主面试。面试体验非常好,回复也很快。加上HR轮,一共5轮电面,才给楼主发了onsite邀请。5轮电面中一轮hr; 一轮technical 一道medium sql加一道medium 算法;两轮印度女HM面(第一轮因为她要坐飞机只面了15分钟,第二轮一小时);一轮VP面 BQ加上case分析。VP说他们组里有很多musician,所以会很有意思之类的encourage我。Onsite 五轮,一轮bar raiser纯BQ,2轮database design,一轮HM纯聊天,一轮Data analyst聊项目细节,case分析。她家办公室很漂亮,整体很年轻,氛围很好。HR跟我交流下来关系还不错,说最后招了个有更多工作经验的,我说没关系,保持联系,以后有什么合适我和我朋友的opening可以联系你,她说好的没问题。大家如果看上twilio的职位,觉得跟自己特别match的可以把简历发给我,我帮你转发hr。

AMAZON:

亚麻音乐的面试一波三折。去年让朋友内推没反应。今年让朋友内推data engineer的职位拿到了面试。

第一轮tech电面主要是各种项目detail

第二轮是个印度人,问了我项目之后说我应该申ds的,问啥申de,我说ds需要更多的经验才能做,而且我对engineering的兴趣更大。剩下30分钟问了我4道sql,2道算法。是的,你没看错,楼主都做出来了。然后收到hr回复说,面试官觉得我更加适合ds, 准备给我安排ds面试。我看了下他发过来的ds的jd, 要求五年经验,尼玛这不是坑我么。。楼主冷静了下说,我能不能试试sde I,这一问,改变了我的命运。HR给我 安排了SDE的面试。签了NDA具体不能说,社招一轮电面,4轮onsite,每轮一小时。原本安排在了5月底,而楼主5月14号在twilio面试,问亚马逊能不能把两个onsite合起来,我就不用飞来飞去了。亚麻爸爸非常给力,给我安排在了5月17号面试,包了我三晚酒店跟回去的飞机。
Twilio原本说5月16给 结果,然后说需要更多时间考虑,5月22日给了拒信,楼主还没来得及悲伤接到了亚马逊的电话,双手都在发抖,被告知通过了。
5月24日team match面试, 面完5分钟后告知过了。今天谈了offer,给的包裹很大,楼主不negotiate就从了。

去年这个时候楼主hashmap都不知道,就这么不停地边刷题边在职工作终于守得云开见月明。面试等待的日子非常煎熬,楼主也不知道当时是怎么熬过来了,如果没有爱人跟朋友的陪伴,真的很难渡过这段时光。去了amazon music对楼主来说应该是最好的结果了,跟专业相关,包裹跟location也不错。希望还在奋斗的朋友们不要放弃希望,坚持刷题是王道。楼主一共刷了433题,题不多,但是每一道都刷了至少三遍以上。每个人的学习方式不一样,最重要的是找到适合自己的学习方式。我来提供一下我的学习方式,不一定适合所有人:
楼主从小就是属于拿到电脑或者小霸王直接上手,不看说明书的那种,在犯错中进步。看说明书会让我静不下心,而直接上手会有feedback 让我做对题目有成就感。但是算法上建议大家先看一下data structure跟algorithm:

  1. princeton 的 algorithm网课
  2. http://interactivepython.org/runestone/static/pythonds/index.html
    第二个source非常好,是Python data structure方面从0开始入门的好东西,非常建议0基础同学学一下这个。我每次面试之前也都会巩固一下。
    看完之后就可以上手刷题了。刷题最困难的是easy类别的前200题,从无到有的过程。我建议大家第一遍刷题不要花太多时间,10分钟想不出
    来看答案的思路。过完一轮后开始二刷。二刷就要保证不看答案就能通过,并且会最优解,以及明白复杂度。二刷后过一段时间三刷,三刷就当成自己的模拟面试,一拿到题边说边写,注意变量名,并且要会在coderpad.co上运行。刷完这200道easy题基本上各种的data structure 跟算法都会接触到了。
    然后开始做medium的题,从easy到medium甚至hard,比从0到easy要容易一些,算法还是那些万变不离其宗,重要的是适应思路。比如dp其实就是数学归纳法的思路,算n想象你有了n1的解,然后逐个归到0时候的解,这样from top to bottom。会了之后再想想能不能from bottom to top降低复杂度。每个人的情况不同这里不多说,刷了一些medium跟hard之后大家再根据自己的薄弱环节专门找时间刷一个主题的题。比如楼主本来对heap啥都不知道,找了一个下午狂刷了一些heap题之后就没问题了。还有graph曾经是楼主的噩梦,花了好久的时间一直做graph题才搞清楚一些。这时候还可以回过头看看普林斯顿那个算法课,会有新的理解。
    其他的不多说,这一年确实是我经历的最大的磨难。非常理解一些找不到工作绝望的朋友的心情,大家看到能鼓励就鼓励,不能理解就不理,希望国人还是能够团结互帮互助,在海外飘着都不容易。为了回报论坛,我打算在入职之前为一些朋友提供无偿的模拟面试服务,按照苹果的面试标准跟流程用coderpad.co让大家熟悉熟悉感觉,并从各个角度给出建议。由于精力有限会根据大家的简介筛选,并仅提供给python选手。需要的同学可以把简历跟自我介绍发到我邮箱kezilin1998@gmail.com (非我名字)。
    另外求SF地区一起租房或者有房间的朋友。
    以及想找一名sf地区的mentor, 我会给paid, 最好是有大数据经验。楼主还是觉得自己很多方面需要学习一下,以免被pip。都请邮箱联系我。谢谢
    祝大家都能找到自己心仪的工作!

补充内容 (2019530 03:02):
补充一个海投的经验。大家海投的时候一定要注意根据role的jd去写,role需要什么样子技能跟经验(比如work cross functionally)就写上去,会增加很大的几率。不相关的技能不要放上去了,找工作时要展示对方需要
补充内容 (2019530 03:03):
对方需要什么你给什么,不要什么都放上去。简历最重要的是match而不是看你这个人有多厉害。切记切记!!!

3 Likes