国内应届生是不是把Leetcode刷的滚瓜烂熟就能进google了?

我自己在FB做过面试官,面试过200多个人,对FLG那套面试模式还是比较熟悉的。

另外很多人只回答了题主第一个问题,后面还有一连串问题啊喂(都不审题,就教人做题了,狗头)

国内应届生是不是把Leetcode刷的滚瓜烂熟就能进google了?

这个大家意见挺统一的,我仅从不同角度来说下为什么不能。

因为Google面试出的题目你大多不能在LeetCode/LintCode上找到原题。

Google算法面试的一大特点就是喜欢出新题或者变种题,你可以去翻翻面经,基本上很少会有原题出现。所以LC刷得再熟练,没有真正理解的话,可能换个马甲就不会做了。

另外算法面试的时候,如果你很快秒掉一题,面试官可能会再出一道题或者各种follow up。无脑刷题背答案是没用的。

大家水平都差不多,那最后会以什么标准区分呢?

像Google这样的大厂,面试评价体系已经很标准了。这里我们只讲算法面试,实际上还有系统设计和行为问题面试。

来看一道题,结合具体例子来感受下吧

最长回文子串 Longest Palindromic Substring

对于这道题,面试评价从高到低如下

Strong Hire

使用 O(n) 或者 O(nlogn) 的算法实现出来 (Manacher’s Algorithm or Suffix Array),并且代码优秀,无 Bug 或者有很小的bug,但是能自己发现并解决,无需太多提示

Hire

能够分别使用枚举法和动态规划实现时间复杂度 O(n^2) 的算法。并且代码质量合格,无Bug,无重复代码,无需面试官给提示。

Weak Hire

只使用了其中一种 O(n^2) 的算法实现出来,代码质量还不错,可以有一些小 Bug,面试官可以给一些小提示。

No Hire

只能想出一种 O(n^2) 的算法,但是 Bug 太多,或者需要很多提示。

Strong No Hire

连一种 O(n^2) 的算法都想不到

4-5轮面试下来

有 >= 1 个 Strong No Hire => No offer
有 >= 2 个 No hire => No offer
有 1 个 No Hire + 1 个 Weak Hire => No Offer
有 1 个 No Hire,其他都是 Hire => Offer or 加面(取决于公司招人多不多,门槛高不高)
有 1 个 Weak Hire => Offer or 加面

一种极端情况是: 一个 Strong Hire + 一个 Strong No Hire => 开个会一起讨论一下,通常结果是加面或者No Offer。

总结一下,就是**面试不一定会要求你用最优复杂度的算法来解决问题。**而只刷LC的话,会容易让你产生一定要用最优解来做题的误区。

还有代码不是写出来就可以过的,代码质量同样很重要。

好的代码质量包括:Bug free,良好的Coding Style(包括变量名命名规范有意义,合理的使用空格,善用空行等),容易让人读懂的逻辑,没有冗余代码,有边界检测和异常处理。

先实习再转正是不是很容易?

这个得看公司,很不巧,**G家实习转正很不容易。**至少在北美是如此,国内的话竞争应该会更大,不要说转正了,实习就很难拿。

说下北美这边Google实习要怎样才能转正。

谷歌实习转正需要4个feedback,一次实习可以从host和co-host那里各收集1个feedback。

剩下2个有两种方法获得:再实习一次,或者通过两轮面试。

所以如果要拿两次谷歌实习,至少要提前一年就做准备。并且第一次实习的表现决定了会不会给第二年的实习offer。一般大部分人时间只够一次实习,再加两轮面试才有机会转正。

关于算法面试的方方面面,我在《九章算法班》里面讲得很多了,除了怎样正确高效地刷题,和面试官如何沟通,如何提升代码质量,大厂的面试风格等等都有所涉及。最新一期正在招生中,有3节免费体验课,可以领取九章算法精选100道算法面试题哦。

猜你喜欢

转载自blog.csdn.net/JiuZhang_ninechapter/article/details/106564864