来源:http://www.techug.com/post/why-i-studied-full-time-for-8-months-for-a-google-interview.html
我最早接触编程是在中学时代,但是大学时却选择了经济学专业。之所以没有选择计算机专业,是因为我那时觉得等到我毕业的时候,计算机专业毕业生将会人满为患。后来才知道,我真是太天真了。
毕业后我参了军,由于驻地在韩国,因此我自学了两年韩语。
在退伍之前,我尝试重新学习编程,但是我发现难度非常高。我只在中学的时候学过BASIC,在我尝试学习C++的时候,我发现两者的区别非常大。
退伍之后,我决定留在韩国一年,一边教英语,一边利用晚上的时间学习编程,我接触了Perl、HTML、CSS、JavaScript和SQL。经过一年的学习之后,我在西雅图找到了一份编程工作。
此后的15年里,我一直都是一名web开发者。我成立过3家企业,其中两家现在依然在运营,而且能够盈利。我也在大型和小型企业中工作过,我曾帮助多家初创企业获得成长,帮他们构建并且管理工程团队。我做过产品经理、CEO、设计师和营销官等多种工作。
可以说,我的职业生涯挺成功,但是我并不想就此停下。
寻求突破
几年前,我觉得自己找工作应该不会很难,因为我觉得自己是一个少见的全栈开发者。但是2013年在我真的开始找工作的时候,我才发现自己有着很多欠缺。在之前的多年里,我已经不再学习新的东西,我的很多技能都已经荒疏,而且我的技能包也已经落伍。而且,由于没有计算机科学专业的学位,这让我找一份理想中的软件工程师工作变得更加困难。
2016年,我觉得突破自己,让自己从一名web开发者转型成为一名软件工程师。我给自己定下了一个目标:在几个月的时间里,通过刻苦的学习和努力掌握计算机科学专业的所有知识。
可能有人会觉得web开发和软件工程并没有太多本质的区别,但是事实上软件工程还需要从业者掌握数据架构、算法、编制语言等知识。尤其是那些知名公司,他们都要求软件工程师具备这些能力。
为何选择谷歌?
谷歌的招聘门槛非常高,他们只招聘那些最优秀的人才。因此,如果我能够被谷歌录取,那我就有资格被任何一家公司录取。
简单说,谷歌招揽那些最顶尖的人才,然后为他们提供优厚的待遇。他们的整个招聘流程,就是在筛选优秀人才。
现在很多企业在招聘工程师的时候,除了编程能力和技术能力之外,还希望候选人具有“谷歌标准”,这一个词就足以说明谷歌员工有多优秀了。
谷歌面试大学
我的一个朋友恰巧就在谷歌工作,他给了我一份谷歌面试指导,上面写了谷歌对候选人技术能力的各种要求。这份指导,也成为了我的学习计划书。
根据这份指导,我找到了各种YouTube视频来学习,里面有很多MIT和UC Berkeley等知名学府的公开课。
我最早给这个视频列表起名为“Project9894”,因为谷歌的成立时间为1998年9月4日。之后,我把它重命名为“谷歌面试大学”。
之后我将这个列表上传到了我的Github页面上,希望能够帮助其他和我一样想要在谷歌获得职位的人。一些人甚至给我发来了感谢信,这让我备受鼓舞。
如果我得不到这份工作怎么办?
其实就算得不到这份工作,那也没关系。
虽然为了成为谷歌的软件工程师,我花费了大量的时间和精力进行学习,但是即使失败了,我依然在这个过程中丰富了自己的知识和技能,这个全新的技能包可以让我在其他一些公司得到一个软件工程师的职位。
无论最后结果如何,我都成功的走入了软件工程师世界的大门。
你不用像我一样学那么多
是的,我花了8个月的时间。但是其实我完全可以少花一些事件。在这个学习过程中,我也犯了一些错误,浪费了一些事件。有很多东西我后来发现其实并不需要去学习。
例如,我花了3周的时间学习C++。结果我在面试中使用的是Python,而不是C++。
我还看了大量的视频,读了许多书籍,但是后来我发现,还不如拿这些时间去练习代码编写。
另外,我还意识到最好的学习方法就是不断重复,加深记忆。在学习了一个概念之后,你应该每隔一段时间就复习一下这个概念,直到它深深的印在你的脑子里。
总结
最初的时候,我恨不得跳过学习阶段,直接被谷歌雇佣。但是慢慢的我意识到,学习对我有多重要,我很高兴逼着自己去学习。我对计算机有了全新的认识,搞清了书籍架构和算法,以及它们彼此间的关系。
我现在已经完全准备好了。我眼前是一片美好的未来。
《横扫offer---程序员招聘真题详解700题》,开点工作室著,清华大学出版社出版,天猫、京东等各大网上书店及实体书店均有发售。