8个月从CS菜鸟到拿到Google Offer的经历+内推
来自其他站点
[align="left"]投了肯定有100家以上,[/align][align="left"]一共面了30家,[/align][align="left"]11个onsite,[/align][align="left"]前7次都挂了,[/align][align="left"]后4次拿到了3家大公司和一家startup的Offer,[/align][align="left"]最后从了G家。[/align][align="left"]
[/align][align="left"]我的背景,[/align][align="left"]国内软件工程混沌过了4年,[/align][align="left"]毕业时连Java,C++的main都分不清,[/align][align="left"]一共没写过100行代码,[/align][align="left"]CS基础知识是极度零散与凌乱的。[/align][align="left"]误打误撞读了CS 一年的master,[/align][align="left"]12年9月入学,[/align][align="left"]13年1月底开始找工作,[/align][align="left"]当时的程度,[/align][align="left"]和本科毕业时,[/align][align="left"]没太多区别。[/align][align="left"]
[/align][align="left"]总结自己,[/align][align="left"]一共五点支持我,[/align][align="left"]撑了过来。[/align][align="left"]一为知识,[/align][align="left"]二为实践,[/align][align="left"]三为目标,[/align][align="left"]四为心态,[/align][align="left"]五为技巧。[/align][align="left"]
[/align][align="left"]第一,知识[/align][align="left"]掌握一门编程语言[/align][align="left"]我选了python, [/align][align="left"]因为语法和数据结构足够简单,[/align][align="left"]让我更加关注代码的作用 — 目的apply到数据结构上。[/align][align="left"]
[/align][align="left"]入门:[/align][align="left"]codeacademy 学python basic[/align][align="left"]应用:[/align][align="left"]用python写了一遍CC150上能写的题目[/align][align="left"]这时候就逐渐看的懂Python Documentation了[/align][align="left"]
[/align][align="left"]数据结构与算法[/align][align="left"]数据结构:找自己学校的课件或网上教程,仔细研读了3遍[/align][align="left"]算法:其实对找工作用处不大,只要弄懂那些应用到数据结构上的常用算法(DFS etc)和Dynamic Programming就差不多了[/align][align="left"]
[/align][align="left"]3. 训练[/align][align="left"]就是训练用1中语言将算法应用到数据结构上;[/align][align="left"]方法就是刷题,[/align][align="left"]我只刷了CC150,[/align][align="left"]完完整整刷了5遍,[/align][align="left"]最后每次面试,[/align][align="left"]都快速刷一遍。[/align][align="left"]
[/align][align="left"]4. CS素养:[/align][align="left"]刷完题后,以为自己还不错了,[/align][align="left"]但是每面还被拒,[/align][align="left"]发现与面试官随便聊聊,[/align][align="left"]就会暴露自己缺乏CS素养,[/align][align="left"]也就是CS基本常识,[/align][align="left"]以及各种知识的关系。[/align][align="left"]
[/align][align="left"]入门:[/align][align="left"]获取比较全面的CS知识最快的方法,[/align][align="left"]programmerinterview.com[/align][align="left"]把主要的section死记了两遍,[/align][align="left"]偶尔可以应付面试官,[/align][align="left"]但是自己却没办法宏观把握和理解知识。[/align][align="left"]B. 中级:[/align][align="left"]深入学习:[/align][align="left"]a.数据结构[/align][align="left"]b. 算法[/align][align="left"]c. 数据库[/align][align="left"]d. 操作系统[/align][align="left"]
[/align][align="left"]如果能上CS的科目,[/align][align="left"]这4科是最好上的,[/align][align="left"]fancy的课可能对找一个general developer的帮助不大。[/align][align="left"]如果没上过,[/align][align="left"]就上online的课。[/align][align="left"]
[/align][align="left"]e. 推荐Berkley的CS的入门课,[/align][align="left"]建立起了CS思维过程[/align][align="left"]Structure and Interpretation of computer programming:[/align][align="left"]youtube.com[/align][align="left"]
[/align][align="left"]C. 进阶[/align][align="left"]全面吸收,囫囵吞枣;[/align][align="left"]以下知识只是为了完善知识体系,[/align][align="left"]快速学习的。[/align][align="left"]语言:[/align][align="left"]Java, C++[/align][align="left"]随便找本入门书,[/align][align="left"]花几个小时看一遍,[/align][align="left"]了解数据结构在这些语言里[/align][align="left"]都叫什么,[/align][align="left"]怎么使。[/align][align="left"]b. front end:[/align][align="left"]HTML, CSS, JQuery, XML[/align][align="left"]从W3C school 上快速看每一块内容。[/align][align="left"]c. Linux 指令[/align][align="left"]d. Web development: [/align][align="left"]Django[/align][align="left"]e. Mobile: [/align][align="left"]android: online course (udemy)[/align][align="left"]iOS: iOS Programming[/align][align="left"]f. Others[/align][align="left"]Design Pattern: online course (udemy)[/align][align="left"]Programming Pearls:[/align][align="left"]面google前花了两天看的,[/align][align="left"]如果说CC150和leetcode教了方法,[/align][align="left"]那么这本书就教了方法论,[/align][align="left"]亦即思考过程,[/align][align="left"]和从初级思考过程到高级思考过程的思考过程。[/align][align="left"]
[/align][align="left"]第二,实践[/align][align="left"]刷题和CS常识让自己有了lego,[/align][align="left"]但是并不自信,[/align][align="left"]因为没有作品。[/align][align="left"]
[/align][align="left"]自己去写code,[/align][align="left"]build自己的作品。[/align][align="left"]
[/align][align="left"]可以自己写个side project,[/align][align="left"]比如我就写了个iOS的app。[/align][align="left"]也可以认真写写course project,[/align][align="left"]或者找老师做点项目。[/align][align="left"]
[/align][align="left"]第三,目标[/align][align="left"]1.一定[/align][align="left"]自己和周围很多ECE朋友的经验告诉我,[/align][align="left"]只要你想找CS的工作,[/align][align="left"]一定能找到。[/align][align="left"]
[/align][align="left"]所以别有备胎,[/align][align="left"]比如回国工作,[/align][align="left"]再继续读个书,etc。[/align][align="left"]
[/align][align="left"]当只有一个确定的目标,[/align][align="left"]一切都别的简单与坚定。[/align][align="left"]
[/align][align="left"]2. 清单和资源[/align][align="left"]8月底,[/align][align="left"]已经毕业快3个月了,[/align][align="left"]还没找到工作,[/align][align="left"]觉得公司该面的都面了,[/align][align="left"]其实不然。[/align][align="left"]我花了两个小时,[/align][align="left"]把我所有想面还没面的公司列了出来,[/align][align="left"]一共25家;[/align][align="left"]我一一找资源,[/align][align="left"]看自己有没有人认识的人可以refer,[/align][align="left"]如果没有,[/align][align="left"]就去各大中文社区有没有可以refer的,[/align][align="left"]结果22家都被refer。[/align][align="left"]
[/align][align="left"]3. 结盟[/align][align="left"]找到身边一起招工作且态度积极的战友,[/align][align="left"]一起努力。[/align][align="left"]
[/align][align="left"]第四,心态[/align][align="left"]1.自信[/align][align="left"]当刷了那么多遍题,[/align][align="left"]做了那么多储备,[/align][align="left"]build出自己的作品,[/align][align="left"]自信便会出来,[/align][align="left"]突然某一天,[/align][align="left"]一个声音告诉自己,[/align][align="left"]I am ready.[/align][align="left"]
[/align][align="left"]2. 信念[/align][align="left"]其实欲望有多大,[/align][align="left"]信念就有多强。[/align][align="left"]
[/align][align="left"]还可以通过meditation,[/align][align="left"]天天幻想自己拿到offer的场景。[/align][align="left"]
[/align][align="left"]3. 越败越战[/align][align="left"]不断磨练自己的面试技巧[/align][align="left"]发现知识漏洞,及时补救[/align][align="left"]
[/align][align="left"]第五,面试技巧[/align][align="left"]介绍自己的background[/align][align="left"]精心准备自己的education background,[/align][align="left"]和自己所做的projects,[/align][align="left"]对着镜子自己演练熟了,[/align][align="left"]也可以找朋友做Mock interview.[/align][align="left"]
[/align][align="left"]准备3个问题[/align][align="left"]一定要问,[/align][align="left"]让牠们感受到你的兴趣和热忱。[/align][align="left"]
[/align][align="left"]微笑[/align][align="left"]从踏进公司大楼Onsite的时候,[/align][align="left"]就告诉自己时刻微笑,[/align][align="left"]一切问题都会解决。[/align][align="left"]
[/align][align="left"]最后,[/align][align="left"]希望大家都能找到心仪的工作。[/align][align="left"]
[/align][align="left"]如果需要refer Google,[/align][align="left"]可以发邮件给我,[/align][align="left"]grefermit AT gmail dot com[/align]
[/align][align="left"]我的背景,[/align][align="left"]国内软件工程混沌过了4年,[/align][align="left"]毕业时连Java,C++的main都分不清,[/align][align="left"]一共没写过100行代码,[/align][align="left"]CS基础知识是极度零散与凌乱的。[/align][align="left"]误打误撞读了CS 一年的master,[/align][align="left"]12年9月入学,[/align][align="left"]13年1月底开始找工作,[/align][align="left"]当时的程度,[/align][align="left"]和本科毕业时,[/align][align="left"]没太多区别。[/align][align="left"]
[/align][align="left"]总结自己,[/align][align="left"]一共五点支持我,[/align][align="left"]撑了过来。[/align][align="left"]一为知识,[/align][align="left"]二为实践,[/align][align="left"]三为目标,[/align][align="left"]四为心态,[/align][align="left"]五为技巧。[/align][align="left"]
[/align][align="left"]第一,知识[/align][align="left"]掌握一门编程语言[/align][align="left"]我选了python, [/align][align="left"]因为语法和数据结构足够简单,[/align][align="left"]让我更加关注代码的作用 — 目的apply到数据结构上。[/align][align="left"]
[/align][align="left"]入门:[/align][align="left"]codeacademy 学python basic[/align][align="left"]应用:[/align][align="left"]用python写了一遍CC150上能写的题目[/align][align="left"]这时候就逐渐看的懂Python Documentation了[/align][align="left"]
[/align][align="left"]数据结构与算法[/align][align="left"]数据结构:找自己学校的课件或网上教程,仔细研读了3遍[/align][align="left"]算法:其实对找工作用处不大,只要弄懂那些应用到数据结构上的常用算法(DFS etc)和Dynamic Programming就差不多了[/align][align="left"]
[/align][align="left"]3. 训练[/align][align="left"]就是训练用1中语言将算法应用到数据结构上;[/align][align="left"]方法就是刷题,[/align][align="left"]我只刷了CC150,[/align][align="left"]完完整整刷了5遍,[/align][align="left"]最后每次面试,[/align][align="left"]都快速刷一遍。[/align][align="left"]
[/align][align="left"]4. CS素养:[/align][align="left"]刷完题后,以为自己还不错了,[/align][align="left"]但是每面还被拒,[/align][align="left"]发现与面试官随便聊聊,[/align][align="left"]就会暴露自己缺乏CS素养,[/align][align="left"]也就是CS基本常识,[/align][align="left"]以及各种知识的关系。[/align][align="left"]
[/align][align="left"]入门:[/align][align="left"]获取比较全面的CS知识最快的方法,[/align][align="left"]programmerinterview.com[/align][align="left"]把主要的section死记了两遍,[/align][align="left"]偶尔可以应付面试官,[/align][align="left"]但是自己却没办法宏观把握和理解知识。[/align][align="left"]B. 中级:[/align][align="left"]深入学习:[/align][align="left"]a.数据结构[/align][align="left"]b. 算法[/align][align="left"]c. 数据库[/align][align="left"]d. 操作系统[/align][align="left"]
[/align][align="left"]如果能上CS的科目,[/align][align="left"]这4科是最好上的,[/align][align="left"]fancy的课可能对找一个general developer的帮助不大。[/align][align="left"]如果没上过,[/align][align="left"]就上online的课。[/align][align="left"]
[/align][align="left"]e. 推荐Berkley的CS的入门课,[/align][align="left"]建立起了CS思维过程[/align][align="left"]Structure and Interpretation of computer programming:[/align][align="left"]youtube.com[/align][align="left"]
[/align][align="left"]C. 进阶[/align][align="left"]全面吸收,囫囵吞枣;[/align][align="left"]以下知识只是为了完善知识体系,[/align][align="left"]快速学习的。[/align][align="left"]语言:[/align][align="left"]Java, C++[/align][align="left"]随便找本入门书,[/align][align="left"]花几个小时看一遍,[/align][align="left"]了解数据结构在这些语言里[/align][align="left"]都叫什么,[/align][align="left"]怎么使。[/align][align="left"]b. front end:[/align][align="left"]HTML, CSS, JQuery, XML[/align][align="left"]从W3C school 上快速看每一块内容。[/align][align="left"]c. Linux 指令[/align][align="left"]d. Web development: [/align][align="left"]Django[/align][align="left"]e. Mobile: [/align][align="left"]android: online course (udemy)[/align][align="left"]iOS: iOS Programming[/align][align="left"]f. Others[/align][align="left"]Design Pattern: online course (udemy)[/align][align="left"]Programming Pearls:[/align][align="left"]面google前花了两天看的,[/align][align="left"]如果说CC150和leetcode教了方法,[/align][align="left"]那么这本书就教了方法论,[/align][align="left"]亦即思考过程,[/align][align="left"]和从初级思考过程到高级思考过程的思考过程。[/align][align="left"]
[/align][align="left"]第二,实践[/align][align="left"]刷题和CS常识让自己有了lego,[/align][align="left"]但是并不自信,[/align][align="left"]因为没有作品。[/align][align="left"]
[/align][align="left"]自己去写code,[/align][align="left"]build自己的作品。[/align][align="left"]
[/align][align="left"]可以自己写个side project,[/align][align="left"]比如我就写了个iOS的app。[/align][align="left"]也可以认真写写course project,[/align][align="left"]或者找老师做点项目。[/align][align="left"]
[/align][align="left"]第三,目标[/align][align="left"]1.一定[/align][align="left"]自己和周围很多ECE朋友的经验告诉我,[/align][align="left"]只要你想找CS的工作,[/align][align="left"]一定能找到。[/align][align="left"]
[/align][align="left"]所以别有备胎,[/align][align="left"]比如回国工作,[/align][align="left"]再继续读个书,etc。[/align][align="left"]
[/align][align="left"]当只有一个确定的目标,[/align][align="left"]一切都别的简单与坚定。[/align][align="left"]
[/align][align="left"]2. 清单和资源[/align][align="left"]8月底,[/align][align="left"]已经毕业快3个月了,[/align][align="left"]还没找到工作,[/align][align="left"]觉得公司该面的都面了,[/align][align="left"]其实不然。[/align][align="left"]我花了两个小时,[/align][align="left"]把我所有想面还没面的公司列了出来,[/align][align="left"]一共25家;[/align][align="left"]我一一找资源,[/align][align="left"]看自己有没有人认识的人可以refer,[/align][align="left"]如果没有,[/align][align="left"]就去各大中文社区有没有可以refer的,[/align][align="left"]结果22家都被refer。[/align][align="left"]
[/align][align="left"]3. 结盟[/align][align="left"]找到身边一起招工作且态度积极的战友,[/align][align="left"]一起努力。[/align][align="left"]
[/align][align="left"]第四,心态[/align][align="left"]1.自信[/align][align="left"]当刷了那么多遍题,[/align][align="left"]做了那么多储备,[/align][align="left"]build出自己的作品,[/align][align="left"]自信便会出来,[/align][align="left"]突然某一天,[/align][align="left"]一个声音告诉自己,[/align][align="left"]I am ready.[/align][align="left"]
[/align][align="left"]2. 信念[/align][align="left"]其实欲望有多大,[/align][align="left"]信念就有多强。[/align][align="left"]
[/align][align="left"]还可以通过meditation,[/align][align="left"]天天幻想自己拿到offer的场景。[/align][align="left"]
[/align][align="left"]3. 越败越战[/align][align="left"]不断磨练自己的面试技巧[/align][align="left"]发现知识漏洞,及时补救[/align][align="left"]
[/align][align="left"]第五,面试技巧[/align][align="left"]介绍自己的background[/align][align="left"]精心准备自己的education background,[/align][align="left"]和自己所做的projects,[/align][align="left"]对着镜子自己演练熟了,[/align][align="left"]也可以找朋友做Mock interview.[/align][align="left"]
[/align][align="left"]准备3个问题[/align][align="left"]一定要问,[/align][align="left"]让牠们感受到你的兴趣和热忱。[/align][align="left"]
[/align][align="left"]微笑[/align][align="left"]从踏进公司大楼Onsite的时候,[/align][align="left"]就告诉自己时刻微笑,[/align][align="left"]一切问题都会解决。[/align][align="left"]
[/align][align="left"]最后,[/align][align="left"]希望大家都能找到心仪的工作。[/align][align="left"]
[/align][align="left"]如果需要refer Google,[/align][align="left"]可以发邮件给我,[/align][align="left"]grefermit AT gmail dot com[/align]