Google

工业工程转CS,我拿到了Google的offer

Jingya Sun | USC | Industrial Engineering
来Offer的老师会以非常简单和系统的语言让你理解课堂内容,授之以渔而非授之以鱼,这点是我一年来非常感激的事情,因为我如果自己的话不知道需要花多少时间和精力才能学习到这些东西。最后我通过来Offer的强力内推,拿到了Google的offer。

大家好,我是USC工业工程专业转CS的同学。参加来offer的CS培训已经快一年了,在今年三月份拿到了google的offer,希望可以给你们提供一点点我的经验。

端正态度,找准方向

首先,转CS的同学找程序员工作没有捷径,应该知道怎么去努力,什么是需要解决的问题。

回想起当初找工作时很多人说的把Leetcode刷3遍,offer就随便拿的说法是有多幼稚。 因为我们还停留在背答案的层次,怎么可能遇到新题还会做。另外,转CS的同学只会点算法,连面试都拿不到。

我很lucky,1年前我USC的EE转CS的同学在来Offer拿到Amazon的offer,就强力推荐我直接找孙老师。

我当时连基本的Java语法都不会,抱着试试看的心态给孙老师打电话。孙老师跟我聊了半个多小时,说我的case不容易,从coding能力到project的训练,以及系统的CS的知识需要全面的提高,至少需要半年到一年。

放下电话,我很犹豫,但试听完第一节课,就发现老师会以非常简单的方式让你理解一个你本来以为很复杂的问题,就下决心转CS拼搏一下了。

industrial-cs-google-1

算法和编程

其实刚开始上课的时候完全不会java,所以听了一段时间的课都没有开始写code,后来被孙老师提醒了,才开始写。

其实刚开始报来offer的时候,我怕自己基础太差,还抱着一本head first java慢慢啃,买了各种各样又厚又重的书例如什么data structure,其实自己学的很慢很慢,后来发现来offer一节课的能教我的东西远远超过我自己看书看上好几周,就彻底抛弃了这些书,踏踏实实的复习老师上课讲的内容以及做课后练习。

来offer的老师会以非常简单和系统的语言让你理解课堂内容,授之以渔而非授之以鱼,这点是我一年都非常感激的事情(=ˇωˇ=) 因为我如果自己的话不知道需要花多少时间和精力才能学习到这些东西。

最近还有其他小伙伴问我,如果CS零基础的话,写code的时候要不要参考着老师的答案去写反正我自己的话是不太会这样,除非在初期的时候对java不是很了解,但起码自己也要把伪代码写出来吧

原因是我觉得每个人对一个问题入手的角度和思考方式不同,但如果你上来就直接参考老师写的特别简洁特别棒的方法,你就很难知道自己的思考方式

当你写完自己的code,再跟老师的去做比较的时候,就可以好好分析然后吸收老师code的精华,想想他为什么要这样处理,我的code该怎么改进之类的~一定不要省略这步。

再有就是平常多做总结和类比把同一类问题放到一起想想为什么这个题要这样做,比如说有向图判断有环和无向图是否有环。还有就像是不同类型硬币组成一个target值,如果要枚举的话可以dfs,但是如果是求最少的硬币就可以考虑用dp,当然不是生硬的记这些,而是**要理解为为什么要选择不同的方法,这也是来offer一直教给我们的**

industrial-cs-google-2

转CS简历和项目经验

很多同学可能担心CS转专业可能project方面会比较缺乏,以及简历上关于cs的东西很少。在这儿方面我是从以下几点入手的:

第一是来Offer的project,这个project涉及web app, back-end database(mysql), version control(git), Android development, how to take advantage of Yelp’s/Google’s API等等,这个project涉及的面很广,建议大家好好准备一下。 这个课上的过程可能会遇到各种bug,不过老师上课都会帮你解决的~所以不用担心。

除此以外借了usc的一门web development课程的资料。 所以基本我是前端和后端都了解一些,毕竟转CS的话得到的机会肯定比科班出身的要少,所以前端后端以及full-stack的职位我都会投。

关于内推和面试

转CS的同学拿面试很难,今年的经济形势下,拿面试更难,我的面试机会,包括最后拿到的Google的offer都是老师们强力内推下才拿到的。 所以简单讲一下这方面的经验吧。

不同公司的侧重点会不太一样,比如说我第一个挂掉的phone interview bloomberg,感觉他们对code的准确性要求比较高(因为要当场run code),corner case什么的也要考虑的比较周到~~

像是two sigma特别喜欢问多线程的东西(ಥ_ಥ),但是题目重复率特别高所以要花大部分时间做对应的准备。这些内容我们的系统班的多线程的课程都有cover,所以一定要好好复习。

还有就是就算面试挂了也不要气馁,分析分析自己可以是哪里做的不太好,以后慢慢改进,不断的完善自己的knowledge set。

industrial-cs-google-3

然后来Offer的老师一直建议大家多沟通以及交流,所以拿到一个算法题千万不要自己脑补各种条件,要跟面试官沟通确认,比如说看到array of int就可以问一下是不是sorted,正的,负的,0?有没有duplicate之类的?string的话有没有duplicate?是不是只考虑lower case之类的?

还有就是跟hr的沟通以及写好邮件也是挺重要的~~在这方面我经常会很纠结,比如说某家hr在我做完OA以后说要给我phone interview,结果等了很久也不来邮件。。发邮件怕措辞不好像是催别人,不发邮件又怕完全被遗忘了。。

后来找来Offer的老师帮忙改了一下邮件顿时觉得写的特别好,就是那种写的非常得体但是可以立马达到目的的那种,然后发了这个邮件hr立马回复说不好意思是他忘记了,然后很快帮我安排了一个面试因为hr也很忙每天有很多东西要处理,有的时候可能真的把你忘了或者是还没有来的及办,所以一定要客气一点,多感谢哦

有不是很确定的东西可以经常在来Offer的群里多请教一下,或者找一个找到工作的小伙伴小窗口一下大家都很乐意帮忙的。

最后分享一下来Offer孙老师曾经在朋友圈分享的一篇文章里的一段话,曾经让我很感动:

“要到长大以后,我们终于都变成了星矢,才知道为什么星矢是主角,我们最终变成了默默无闻的平庸的人,我们最终知道,我们不会有无敌的绝招,不会有死而复生的神力,真正能让我们获得人生这漫长战役的胜利的,只有我们绝对不放弃的耐力。

衷心感谢在转CS的路上,来Offer所有帮助过我的老师们。