环境系萌妹子的逆袭



环境系萌妹子的逆袭

转行cs一年,从一无所知到拿到FB summer intern

这是一段很神奇的经历。因为一年前,我连java都不会写,唯一的计算机相关经历是大一在国内大学修过的公共必修--计算机基础c语言(也早已忘光)。现在竟然拿到fb internship offer,也算是世界真奇妙了。

简介一下我的背景:本科是国内top10大学环境系, 研究生是美国top50大学土木环境系。呐,可想而知毕业之后求职不顺利啦。也不是最厉害的名校,还读这么个专业,你懂得。。美国研究生毕业后在这边做了两个绿色建筑方面的实习。实习的时候上司也对我都蛮好的,要正式full-time offer就不给了>.<, 说不sponsor国际学生。。总之就是各种纠结,各种求面试,再各种悲伤了一年吧,决定转行计算机。。

-------------打开新世界大门的分界线----------------

那是在去年二月,我突然发现有个学校cs系研究生申请接受本科不是cs系的学生,录取后只要求第一学期修一些cs本科必修课,我觉得很适合我的情况,就申请啦。14年2月申请完,我就想着,那就赶紧读一些课程做准备吧,这样9月开学就可以刷题啦,想想就棒棒哒 ^ ^

从14年2月申请完到8月底学校开学前,我在coursera,edx,udacity还有一些学校的cs系公开课程网站上物色了一堆课,最后上完的有python和java的入门课程,UC Berkeley的61B data structure, Princeton的Algorithm 1、2。包括作业和project都认真做了。在学的过程中感觉自己逐渐有点入门,每天都特别开心!感觉找到了真爱@@

到7月algorithm学到一半的时候,我上了第一次九章!!(额,所以这里的潜台词是,我后来又上了一次,因为此时太弱,各种似懂非懂)。九章的两次经历放在下面的框框详细阐述,此处先跳过。

--------------真的开始刷题的分界线----------------

转眼就到了14年9月,开学啦,就正式开始刷题啦!刷题的标配就是cracking the coding interview和leetcode嘛(当然还有可爱的lintcode)。我当时根基非常浅薄,马步还没扎稳也没法练九阴真经啦,就开始慢慢看cc150。

我当时看好慢,每一章的流程是:先看完一章的所有内容,理解一下,把主要的解题思路和好的优化的方法记在本子上,整理一下。然后把题目复制到eclipse里面,一道一道自己写一遍,包括test cases。然后再跟书上的写法对比,看看人家怎么写的(每次一对比都会觉得,人家怎么就这么聪明,我怎么这么蠢-。-)然后把书合上,自己在eclipse上重新写一个比较优化的算法。

呐,时光飞逝,就这么缓慢地把cc150刷了两遍,就到了12月了。。期间我又上了一次九章的课(也是在后面详述),当然这次有了刷题基础就感觉好多啦,深深感觉九章的课特别有用!当然,此时已经有一些可爱的小伙伴得到了offer。。我不管他们,谁让我是菜鸟呢,也没法太早面啊。。所以我是去年12月才正式开始投简历<3

-------------边刷题边准备面试的分界线--------------

啊,其实对暑期实习来说,12月也不算太晚,反正我就接到了一些大公司的面试,比如amazon,fb,google之类。那我特别菜鸟嘛,怎么搞到这些面试的呢,找人refer呗^ ^。九章的某位老师就帮我refer过哈哈,特别有用,立刻拿到面试了!哎呀,所以要脸皮厚,各种找朋友帮忙推,就会有面试哒(反正我是把朋友圈轮了一遍,各种厚脸皮求小伙伴帮忙)。

有了面试机会刷题效率会立刻得到提升的!!反正我以前有时会偷个懒呀,今天少刷几题呀。。有面试了就觉得不会!因为不准备的话分分钟深跪不起。。>.<我也是从这个时候开始怒刷leetcode,开始是按难度做的,先easy,再medium。然后再一遍easy,medium。再接着从高频到低频刷hard。(额,高手肯定不像我这么搞。。因为我比较菜,预感在面试前也刷不完hard,就只能先把高频做了)

结果面试的时候人品大爆发,遇到的所有题我都刷过(额,也有变体啦,不过蛮类似leetcode原题)!那人生中第一次面试(Amazon)就过了。。第二次(FB)也过了。。我就懒得面第三个了,之后面试就推了。。

因为我面的两家都拿到offer,hr都对我蛮好哒,交流也很顺利。印象比较深的是fb的recuiter,特别卖萌,效率奇高,秒回邮件,打电话的时候态度也特别好。那我就愉快地接了offer,现在各种期待暑假啦!

(啊,这里需要说面经吗?我也不懂规矩。。额,需要的话之后补吧。。)



课程帮助

我在九章上了两次课。

-----第一次------

第一次是14年7月,当时刚上完data structure和algorithm,完全没刷过题,整个人都特别蠢!上了九章才开始对刷题有系统认识,大概知道了怎么准备,每一类题目的模板是什么,怎么系统性的整理刷过的大量题目,传闻中特别变态的dp是什么鬼(额,原谅我,之前真的只有闻名不曾见面)。。总之大大提升了我的信心,感觉未来的道路都明朗了起来!哈哈,段老师也特别逗,上课一直都很开心,也学到好多解题套路。我每节课都有记笔记啊,上完课看着厚厚的笔记,感觉拿offer指日可待嘛^.^。

那为什么还要上第二次呢?因为我第一次上九章的课的时候,本人特别水,题目也没有刷过,虽然感觉大概懂了一些基本思路,但是毕竟没有自己做过这些题,感觉是没有真正搞懂啦。类似于内功造化不够,武功招式学一堆也没有很大威力-.- 所以一直想着等内功提升一点再上一次!

-----第二次-------

所以等到14年11月,我刷了一遍cc150,就第二次来上九章啦!此时我已经对刷题有了比较切身的体会,对各路题目不能说理解很深刻吧,大概是怎么回事还是知道的。此时正是最适合上九章的时候(我个人感觉啦)!所以第二次课程学到的知识记得特别清楚!我印象最深的是DP,四种类型讲得好清楚,我之前一直云里雾里#-.-

FB面试里就问到了九章课上讲过的题!而且对方问我能不能优化的时候,我立刻想起段老师曾经说过:n都不满意只能logn啦,想想二分法呗,怎么把现有的去掉一半可能(大概这样,记错了不要骂我)。我就因为这句话想到了优化的办法,解释了一下,面试官就很开心的给我过啦!啦啦啦,上课认真听讲就会有好报的 :)



准备建议

啊,这个不是在第一段里讲过了吗。。。

就是刷了两遍cc150和两遍leetcode,在前期和中后期上了两次九章算法的课,就得到啦!!

九章的课在入门阶段和提升刷题技巧阶段特别有用!因为入门的时候什么都不懂嘛,老师就可以给你指引一下方向,怎么准备啊,什么事刷题啊。。中后期就是看他们具体怎么解得,九章的算法永远比我自己写的好!我每次写完一道leetcode就跟他们的解法对比一下反省反省,想想人家怎么这么聪明>.<

(额,还有一个,我当时想着要攒人品,准备面试到等面试结果期间每次吃饭给20%小费,以及多做好人好事 ^.^)


Read full article from 环境系萌妹子的逆袭


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts