生物狗变形记第二弹 十五天搞定主要互联网公司offer

avatar 95660
runrain
5490
29
[align="left"]生物狗变形记第二弹 十五天搞定主要互联网公司offer[/align]
[align="left"]我是一只生物狗,当初我就是被那句 21世纪是生物的世纪 骗来了这个坑,后来经过努力回归了码农的行列。[/align][align="left"]然而不幸的是,最近一不小心被公司雷了。由于在此之前完全没有任何心理预期,没办法,只能立即开始准备面试,争取在短时间内找到工作。[/align]
[align="left"]Part 1如何在短时间准备面试?[/align][align="left"]leetcode如今已经进化到800道题了,15天刷完基本就是神仙。很明显,时间有限的情况下,追求刷完是不现实的,到最后我一共刷了不到200道题吧。然而刷题的功力到现在也没有回到巅峰的状态,实在是没有时间,不然我真的很希望能展现更好的我。正题,时间真的很紧,如何高效刷题成为关键。[/align][align="left"]刷题:我参考了TOP100算法题。我并没有写下大部分题,打字很花时间。取而代之的是,每一道题我都思考的非常仔细,如何推演出算法的过程是最重要的,这样子才能举一反三。甚至我忘记了这题怎么写的,我还是能推演出来。注意我们是理工科的,很多人都是在盲目刷题,刷完就忘记了。这很不行。对于其中我不会做的题目,我才会在leetcode上写一遍。[/align][align="left"]面经:面经是比较有参考价值的,他可能展现出公司面试的难易程度以及面试类型,从而进行针对练习。[/align][align="left"]项目:重点准备自己的项目。要熟悉自己的项目的流程,最challenging的部分,处理过的矛盾和主要的impact[/align][align="left"]系统设计:多看看贴子,熟悉主要的架构和会做envelop computing[/align][align="left"]额外:对于多线程,大家至少要过一遍。在真实工作环境中,不可能全部都是只用单线程编程的case。[/align]
[align="left"]Part 2什么是正确的面试方式[/align][align="left"]正确的面试方式比刷题其实更加重要。现在从面试流程开始一步步解析。[/align][align="left"]自我介绍最重要。为什么自我介绍我认为是最重要呢?其实作为面试官,大家心里都清楚,不就是一道题目嘛。做出来了没做出来能真正表现出这个人聪明还是傻吗?也表现不出你这个人能不能胜任这份工作。所以我觉得粉饰自己做过的项目会更加吸引人。onsite的时候,我们介绍自己的项目的时候,千万不要编,做过和没做过是有真正的区别的。而且尽量要对不同的面试官介绍不同的项目,或者是说明同一个项目里不同的细节。因为面试官们最后都会sync up。介绍一模一样的,最后sync up就很没有意思。[/align]
[align="left"]接下来就是算法题了。我们拿到题目。[/align][align="left"]第一件事要和面试官确认所有细节和问清楚edge case。切忌看见一样的题目就心花怒放,直接写题目。很多朋友都说,我遇到都是面经题,全部都做对了,为什么还是没有offer。试想一下,我们把面试官比作吃鸡选手,辛辛苦苦搜了一身神装,你直接开了一个外挂,你还觉得面试官会让你过吗?[/align][align="left"]第二件事是要和面试官go through你的思路。如果遇到了block,要积极和面试官要hint。这其实很重要,说明我们是guidable的candidate。以后工作好相处。而且面试官一旦有别的想法和思路,你如果知道那是work的,你或许有别的解法,也尽量follow面试官的idea。如果你明确能感知到面试官希望你用dfs,那你就用dfs吧。一旦和面试官确认过方法可行,我们就可以写代码了。[/align][align="left"]第三件事开始写代码。其实这个很重要,这个其实和算法面试是有区别的。如果只是逻辑推演能力,到第二项其实考察点已经结束了。第三项其实是用来考验一个程序员的内功。一个程序员逻辑推演能力固然重要,但是在industry的人就会知道写的出maintainable, testable和extendable的代码更加吸引人。两个人都能写出workable代码,但是一个人的method划分,variable名字和data structure选择的好,另外一个人代码全部揉成一坨,static method到处都是。你选谁?再啰嗦一下,其实写代码,切忌埋头苦干啥都不说,多跟面试官交流。就算东扯扯西扯扯也挺好的,我就曾和一个面试官聊到了coding philosophy,面试官也跟我聊的很开心。[/align]
[align="left"]然后就是跑test了。这一点很重要,单独抓出来讲。写完代码后,可以说一句“let me help you go through the code with testcase.”。这是非常重要的,我们给面试官的感觉就是我们非常dedicated。我自己认为一遍AC其实一点价值都没有。不好意思,这里我比较不同意大多数面试机构的观点。大家都是码农,写代码没有错误这是不可能的事情。最好的方式是我通过跑这个test,我找到一些隐藏的bug。这才显得test是很有价值的。[/align]
[align="left"]最后就是问问题了。问问题很考技巧。问问题基本按照两个方向问,1.组里的工作内容和工作环境。2.通过问问题,找到自己和面试官相同的coding philosophy。目的是表现自己很easy going和确实和面试官很match。[/align]
[align="left"]Part 3系统设计[/align][align="left"]这里没讲怎么做系统设计,我下次找个机会再和大家讲讲吧。因为我个人觉得系统设计比算法要简单。[/align]
[align="left"]Part 4结果与感悟[/align][align="left"]有人说,上面全是演技。但是生活从来就是如此。其实换个思路,我们只是想把自己的优点在面试中表现出来罢了。[/align][align="left"]我花了十五天从开始准备到正式onsite。一共有7个onsite,除了一个公司还没有回应之外,其他都拿到offer了,感谢很多面试官们高抬贵手。其实这次被裁不是一件坏事。通过这次被裁,我真的有很多感悟,有了成长。我得到了很多人的帮助,mentor,房东,朋友,同事,同学,亲人。他们一知道我被雷了,立刻帮我联系身边的hr和他们的朋友或者是前同事进行内推。有人第一时间提供内推渠道,有人花了一天时间转发内推给hr,有人几次打电话跟进面试情况,我真的非常感动。这应该就是患难见真情。人在江湖走全靠朋友。[/align]
[align="left"]在这一年半里我在组里真的是学习了很多,做很多有意思的项目。自己写代码的功力也有很大的提升。也慢慢地从一个啥都不懂的new hire变成了组里重要的成员。非常庆幸能加入这个组并从中学到了很多东西。最后再次由衷地感谢在我生命中给予我帮助的所有人。[/align]
[align="left"]祝大家找工作顺利,希望我的这篇帖子能帮到你。[/align]

补充内容 (2018-4-16 03:34):
湾区的小伙伴约起来~

补充内容 (2018-4-17 12:04):
drive.google.com

补充内容 (2018-4-19 02:10):
list 都在share 里面
  • 37
29条回复