Fork me on GitHub

Google面试经历-一

记第一次紧张刺激的Google面试!

为什么是面试经历(一)呢?
因为还有即将到来的:
  Google面试经历(二)-实习生面试
以及可能会有的:
  Google面试经历(三)-实习生转正面试或者校招面试
  Google面试经历(四)-失败总结
OK,下面正式写这次google mock interview的经历:

背景

  可能有人会奇怪,这么早就招人了吗?正常来说,是不会这么早的。但是因我为参加了2017的Google Code Jam,并且取得了比较不错的成绩,所以在一月上旬就收到了HR发来的邮件,大意是要面向参与GCJ的选手办一个叫”A Day with Google”的活动,可以选择面试或者模拟面试。
  时间这么早?这把既没有做好找工作的准备,也没有什么面试经验的我吓到了。直接面应该不会当场给出反馈,模拟的话可以知道自己的一些问题,所以出于涨涨见识,划划水的想法,我最终选择了场次最早的 mock interview。

曲折的经历

  1. 约定1月29日上午面试,晚上没睡好,还起了个大早,结果被面试官鸽了,没有接到电话,而且通知的Google Doc也被锁上了……跟HR沟通之后得知是面试官忘记了,改到1月31日上午面试。
  2. 30日发现Google Doc又被锁了……和HR小姐姐来回一共发了11封邮件,终于解决了,不得不说,小姐姐态度非常好,不像某些官僚机构。
  3. 终于等来了31日的面试,面试官的态度也非常温和,声明正式面试一共只有45分钟,先过一遍流程,他再点评一下。没有自我介绍…上来直接对着简历问了项目,“我看你做的项目挺多,用几分钟讲讲你的项目”,我巴拉巴拉全讲了,然后12分钟过去了。“我们的时间不多了,开始做题吧!”,面试题如下:
  有一个n*n的棋盘,上面有m个糖果,最开始有一个人在棋盘左上角,他可以向左向右或者向下移动,但不能向上移动,问他最少需要多少步吃完所有糖果。
  我几乎没怎么想,就说了一个暴力的DFS解法。说着说着就发现DP可以搞,“好像动态规划可以,再容我想一会儿!”,画个图就可以发现,一个糖果或者没有糖果的行很简单,多于一个糖果的行其实一定是从最左或最右的糖果处下去,所以只需要维护吃到每一行最左或最右糖果的最小值就行了,转移的时候讨论上一行的端点在这一行最左到最右区间的里面还是外面。
  很简单,然而转移方程的边界条件,我搞了好长时间,面试官一直说有问题。15分钟就这么过去了…
  面试官提醒:”注意时间”,我一狠心,还是写了暴力的,先计算每两个糖果之间的距离,然后dfs,一共写了8分钟,然后又自己检查了3分钟确认bug-free。最后,和面试官说了一下代码思路,他:“不错,写的很快而且正确!可惜前面DP的思路在小细节上卡壳了!”
  之后,我简单问了几个问题,回答都比较官方吧。

总结

  面试官给了一些建议:
  1. 项目简述时间太长。建议挑一个最有含金量的讲几分钟就行了。别的公司可能和面试官聊high了就可以不做或者少做题。谷歌的面试必须做题,前面时间长了,后面做题的时间就短了。
  2. 过于追求最优解。思考问题卡住的时候,要注意把握时间,只要能让面试官觉得你coding能力强,即使不是最优解也行。
  3. 写代码最好先在纸上打好草稿,一气呵成的感觉比较好,因为他看我写代码的时候明显觉得我在思考…
  4. 写完先自己肉眼debug一下,虽然我写的没什么问题,但是还是确认一下比较保险。
  过年好好准备,照进度继续刷Leetcode(有兴趣的同学可以看我的专题小题大做Leetcode),过完年面个实习生,美滋滋。

本文已结束,谢谢阅读!
微信扫一扫,订阅本博客
0%