LeetCode已经1045道题了,得刷多少道才能进Google?

Phoebus

刷多少题才能进Google?

Phoebus导师


大家都说

CS简单,刷刷题就好。

但是刷了半天,

LeetCode都没刷完


大家都说

   Career fair要懂得怎么跟Recruiter聊天。 

但是说了半天Recruiter还是跟你说,

把你的Resume在网上给我吧 


大家都说

你准备好了就一定有的聊。 

但是去了Career Fair,

还是被Recrutier应付了几句打发走


今天我们来听Phoebus导师说说

如何应对HR们,

如何2星期刷完LeedCode,

帮助你稳步走进你心仪的公司


1

导师背景

国内Top2物理本科,在大学期间对Coding有兴趣。之后读了美国常春藤的master,读的是EE Major,同时也选了很多Coding的课。毕业之后顺利找到SWE的工作。现在在Google工作。

 

2

如何应对Career Fair

你首先要理解Career Fair 和一般投简历的不同。这个是流程是不一样。一般投简历是先有简历,然后有HR。但是Career Fair 就是相反的。这就导致你一定要对这个公司有一些了解。 尤其是中小型的公司,你是一定要有备而来的。


那如果你是有备而来的话,又该怎么办呢? 不仅仅只是丢一个简历,跟他们聊一聊工作上面的事情。而是问一些如下的问题。

 你们这个部门招不招人?

 你们的某个product我很感兴趣,我想去学习。


3

如何根据公司介绍提问

这是一家叫Moz的公司官网上面的宣传。 




比如说拿Moz做例子。这段话其是你要看出来几个关键词“Marketing Analytics” 还有“Help people access this data easily”。可以看出这家公司不是卖数据库的,他们的核心业务是Marketing Analytics

那么我们能探讨的问题就有


卖的好的Marketing Analytics产品有哪些? 

你们有多少Data?

用什么处理Data?

准备这些问题的同时,你也要在网上搜索一下。有答案的就不要再问了。还有一些基本的问题也可以问,比如说:

你们的软件team有所少人?

有多少客户?

公司规模有多大?

4

如何根据职位提问

这是Moz的公司官网上面SWE的招人条件。 

这一段里面,Moz说他们有很多牛人,那么你就可以问:

我进去之后会不会有Mentor?

我的背景能不能很快上手?

这个上面同时也说了申请者需要学很多新的技能,所以,你在跟HR聊天的时候,可以说你很喜欢学习新的技术。

总共控制在5-10分钟就可以了。 目的是能给他们留一个影响

有很多HR其是都是前几年刚毕业的,所以很多事情他们自己也不知道。所以,对于这些人,你吹出花来都没有用的。你只要确定你知道你要面试的是什么职位就好了。 


5

导师的面试经验

我面试的时候,因为准备的很充分。所以特别顺利。那周总共有3个onsite,前一天晚上我只睡了3-4个小时就上战场了。 一共有5轮面试。都是1-2道题目,很多都是没有听说过的题目。大概包括了算法,数据结构,另外是数学,最后还是算法还有coding。大概都是一开始先聊一聊简历。介绍完之后就是步入正题。 然后就开始问coding的问题。由简单到难。

这里大家要注意的是,有些面试官由于一开始不知道你的水平,所以先给你一道简单的。你要是做出来的,然后就会给你一道难一点的题目。如果这个你也做出来了,那么他也考察完你的水平了。剩下的时间就是聊天。

6

面试细节

Onsite的时候,一般有两种。在白板上做,还有小公司要求你自己带电脑。

如果你是在白板上面写,那你就把问题问明白之后,把关键词写在白板上面。很多公司面试时候的Communication是算分的。跟她们说清楚你是怎么想的,你想怎么做,交流的差不多了再开始做。

开始写代码的时候,你觉得有必要的话,就写上备注,但是不要硬加。时间和空间都要分析。每个公司都需要,所以不要出错。

然后关于到底是写最优还是最差。我建议你可以先把简单的方法解释出来,不一定要写出来。不要一开始上来就写最难的,要看出他想考什么,然后再动手写。还有一点就是,如果你因为想写最难的,注意控制时间长度。因为要是你写不完,最后还是算你没有做完。

题目写完了,要是有时间可以写一个Test Case,自己跑一下。


7

简历简谈

面试的时候,因为他们都是照着你的简历问的,所以,应该把你希望被问到的写出来。放在最前面。你这样想,都是按照你自己写的来问的,要是你被问楞了,那是很扣分的事情。所以你要做到只要写上去就不要怕被问。 

8

准备面试

我准备面试的时候,一般是在吃完晚饭之后跟朋友一起刷。我们都是在白板上写。说昨天看了什么。 每个人都上去做。说Update,把你学会的跟别人分享。每个人出一两道题。 后来就会非常自然。当然一开始有些人会不自然。 


9

关于背答案

理解和背我觉得其是是一回事。理解了之后,就自然地背下来了。那你也可以背下来之后,慢慢想,自然也就理解了。不是单纯的理解,单纯的背。一定要有一个过程,想想你刷题是为什么。你刷题不是为了安慰自己。是为了通过刷题来提高自己的实力。如果你刷了几遍,你没有到那个实力,那你还要继续刷。比如说Two Sum 的O(n) ,做完之后要想想有没有更好的方法。有一些题目,时间和空间会有Trade Off的。两种方法你都要会。就算是超时的答案,你也要知道。 

当然大家的目标是不一样的。想找稍微好一点的公司的话,Leetcode上面的题目,就至少要过一遍。但是,不要把自己Block住。20分钟一道题。写不出来就去翻答案。只要理解了,第一遍你可以就这样过。只要你的能力提升了。不必纠结是不是你做出来。 尤其是第一遍。

原因是:刷题是为了学东西,看答案也是学东西。没有对不起自己啊。 苦思冥想,你想出来还是要看人家答案。看到别人的答案,就想把自己给撕了。那你想出来的答案是为啥呢? 现在面试的要求越来越高了。这样Block自己之后,你该怎么刷完呢?


10

导师带过的几个学生 

学生A

TA去的是一线公司的广告组,因为面试发挥的特别好,公司给了Senior 的职位。跟我学了比较长,大半年。强度也非常大。每次打电话会说几个题目,研究。每天都有Sync Up,当天就会看。我会给他指出哪里不对,哪个不够clean,算法不对,时间不对等等。我们也常常会有Mock Interview,我也给了他我的答案,这样学员就能跟我的答案相互比较。自己也会想。 面试的时候非常出色的。

一开始的时候,A觉得自己的coding实力不错。后来越做题越觉得实力不够强。要耐心的学习。现在实力很强,反而没有那个时候骄傲。

学生B

这是一位CS 的PHD,lab做的比做题好。 简历写的很好了,所以只是在讲刷题。我们现在做了100-200道。都不是特别难的题目。不过明显实力强了。

一开始的时候是算法稍微难一点的就不可以。现在只要不是tricky就可以写出来了。 现在知道更系统化地思考问题, 从哪里入手。 就算一下子说不出答案,也能讲出更多。


11

Leetcode之后呢? 

要学会很好的利用github,把Leetcode的答案保存上去。可能有多个答案,多个版本。还可以修改之类的。怎么一步步的写的更简明的。

这些是我推荐的网站:

http://www.lintcode.com/en/

一小半是不跟leetcode重复的, 题不错

https://projecteuler.net/

适合对数学比较感兴趣,喜欢做优化的。

http://poj.org/

竞赛人,按分类刷题目。 这里面简单的题目 就相当于面试的难的题目。 大约3000道题。


导师对于学生秉着因人受教的原则,

如果你也想直接联系文中主人公,

请加小助手,回复“导师” 



往期导师访谈精选:


软件工程师

Google | Facebook | PwC | Yahoo


数据工程师

Tesla | Oracle | Twitter | eBay | Amazon


机械工程师

Applied Material | Tesla Philips | Bosch | Faraday Future


硬件工程师

Apple | Oracle Broadcom | Intel | Qualcomm 


其他专业

illumina | Tesla | Applied Material | Torcon | BCG






微杂志 - 公众号搜索引擎

知识产权声明:版权属原作者