小白的研究生转CS与找实习经验总结 Part2

8795
26
[align="left"]小白的研究生转CS与找实习经验总结 Part2[/align]
[align="left"]上一篇:1point3acres.com[/align]
[align="left"]我的另一篇实习面经干货:1point3acres.com ... p;page=1#pid2993337[/align]
[align="left"]Part1 提要:[/align][align="left"]在第一部分中,我主要分享了自己对转CS的一些思考、转CS的具体战略步骤、以及日常准备CS面试的技巧。[/align]
[align="left"]在这一部分,我将承接上一篇,来介绍自己作为一个转CS学生,如何一步步打怪升级,最后找到实习的过程。[/align]
[align="left"]首先汇报一下暑期实习offer情况:[/align]
[align="left"]拿到offer:[/align][align="left"]Zillow: SDE Big Data Intern[/align][align="left"]Cisco: SDE 2 Intern[/align][align="left"]eBay: SDE Machine Learning Intern[/align][align="left"]Qualcomm: SDE Computer Vision (C++) Intern[/align][align="left"]USC Information Sciences Institute: Student Worker Summer Intern[/align]
[align="left"]从了:[/align][align="left"]Zillow[/align]
[align="left"]还在in progress但是不想等了:[/align][align="left"]AT&T, Teradata, GEDigital[/align]
[align="left"]下面分三个阶段介绍自己的打怪升级过程,主要分三个阶段:小白期、上升期、稳健期[/align]
[align="left"]小白期:[/align][align="left"]正如前一篇日志中所提到的,研究生刚入学,我作为一个转专业学生,CS的底子非常之差。自己明明学的是data专业,但是Python, SQL完全不会。更可怕的是,连算法big O notation都忘到九霄云外去了,BFS, DFS, hash, merge sort等等最基础的算法知识更是什么都不懂。说白了,就是一个彻彻底底的小白。[/align]
[align="left"]我们研究生第一学期有一门必修课,叫做foundation of data management。第一节课上,老师问大家学过什么数据库,班里几乎所有人都举手了,什么mySQL, ORACLE,等等信手拈来。而只有我和其他两个人没有举手。而我又作死坐在第一排,老师见我没举手,满脸诧异:“你真的没学过数据库?”我强堆笑脸:“真的是。。一点没有。”后来老师的反应我不记得了,但是我只知道,这是我人生中为数不多最为尴尬的时刻。全班人仿佛都盯着我,使我感觉非常难堪。[/align]
[align="left"]好在我是一个弹簧一般的人,别人给我的压力越大,我越能奋起直追。下课后,我立马报了coursera上的SQL课。之后也在一个月内快速学完,写完所有作业,并以满分毕业。同样的,在这段奋起直追的时间里,我以超快的速度上完了另一门python的公开课。[/align]
[align="left"]之后某一天,在刚结束Cisco实习的大神学长来我家作客,和我谈到了刷题的问题。当时还是9月,他建议我立马就开始刷,这样才能在找暑期实习中取得优势。我照他的建议开始刷题,然而,却发现自己的基本编程技能十分生疏,而算法更是一窍不通。我当时low到什么地步,举个例子:two sum费了九牛二虎之力写出了brute force,然后看解答理解了binary search,但是无论如何无法理解hashmap的解法。没错,这就是我的水平。[/align]
[align="left"]我这个人有两个特点,第一,特别笃信“磨刀不误砍柴工”的道理,第二,特别热衷于上公开课。所以,为了夯实java基础,我暂时放弃了刷题,开始上普林斯顿的算法1。这门课真的是极好的一门课,所有的算法都有visualization和详细的讲解,并且都有Java实现的讲解和演示。在讲Java时,同时会讲一些高级概念,比如iterator, interface等等,真的是让人受益匪浅。最重要的是其变态难的programming assignment。按照我同学的话说,就是教你1+1,然后让你推导傅立叶变换。我每周至少要花一整天在本周的作业上。现在回头看来,这几份大作业对于我夯实基本功起到了举足轻重的作用。它们极大地锻炼了我OOP思想、API编程能力、分析问题解决问题能力、debug能力、代码严谨度、和对edge case的思考能力。可以说,任何一个想实际操练算法的人,都应该学学这门课,绝对受益匪浅。其优秀程度不亚于Andrew Ng的ML。[/align]
[align="left"]小白期的我也收获了几个面试。我依然记得我第一个正式的面试是来自一家名叫DOMO的小公司。它来我们学校Career Fair,然后给了我面试。这场面试主要问了一些基本的数据结构设计题,什么情况下怎样设计数据结构等等。当时我懂的不多,也就知道array, hashmap, linkedlist之类,反正我算是在我有限的知识范围内自我感觉答得还不错吧。现在想来真的是太naive了,怪不得之后就杳无音信了呢。[/align]
[align="left"]第二个值得说的是Coursera的OA。这时期我在普林斯顿算法课中段,算法刚起步。由于是第一个OA,特别慌,总想找面经啥的,导致都没安安静静坐下来好好做题。当时的我也真的是菜鸡,想在hackerrank的文本编辑器里写一个private函数都不知道怎么写。最后,当然是挂了。现在看来,当时的这些OA题真的是简单得不能再简单了。如果是当时的自己平行静气坐下来好好写的话,还是有希望的。[/align]
[align="left"]还有一个公司叫Factual。它首先给我发了一个project让我自己做。由于这和我日常上的课有一定关系,我很快做完了,也拿到了电面。第一次电面我也是慌得不行。家里的破网老断网,于是我就做了一个异常傻叉的决定:在学校的操场上电面。现在想来都想抽自己,因为周围真是太tm吵了,以至于我和面试官的沟通多次因为听不清被打断。面试题还好,不是太难,不过后来还是挂了,看来是环境的问题。[/align]
[align="left"]这一阶段唯一令我欣慰的是我拿到了我们学校Information Sciences Institute的Student Worker offer. 这段经历说来也传奇。在我们新生orientation上,我们系的director刚好和我们坐一桌吃午饭。我们一桌中国人大家都战战兢兢不敢说话,午饭气氛十分凝重与尴尬。我为了化解这种尴尬的气氛,开始主动和系主任聊了起来。当聊到我完成了Andrew Ng的ML网课的时候,他眼睛一亮。我发觉他对此感兴趣,又抓紧介绍了本科阶段其他和ML相关的项目,最后成功地吸引了他的注意,当场想要请我去他实验室。我也不含糊,立即掏出手机加了他twitter,火速填完了申请表,并且三番五次叮嘱他我的名字。最后,我拿到了面试,然后从120选10的竞争中拿到了offer。值得注意的是,那时候的我依旧是菜鸡。面试的时候她问我github, hadoop, spark, kaggle啥的,我一概不知。但是,由于我前期充分的networking套磁,加上面试时表现出的强烈的求知欲和积极主动的态度,最终使他录用了我。[/align]
[align="left"]小白期,我体会了慌得不行的、以失败告终的处女OA、电面,也有找到实验室工作的好运,总的来说,也算是不错了。[/align]
[align="left"](未完待续,以后尽量每天更一点,感谢大家捧场)[/align]
  • 77
26条回复