这篇帖子主要以流水账的形式记录一下自己整个春招找实习的过程。注意,有些网址需要 网上学科 (倒过来看)
才能打开。
另外,我根据网上各类面经博客以及自己的经验总结了面试八股文,不妨分享给大家作参考,点击CS 面试题目总结即可查看。
Google 一直以来都是我的 dream company,我也一直关注着 Google 招聘的相关信息,并坚持参加 Google 的 kickstart 考试。Google 实习生的招聘流程为Online Application → Resume Screening → Technical Phone Interviews (2 rounds) → Hiring Committee Review → Project Match → Offer
。理论上讲,越早申请越好,因为报名的人太多,如果申请太晚,可能岗位都满了,即使表现优异也有很大概率匹配不到好的岗位。
2021 SWE internship
岗位投递简历。然后立刻填写了申请表格并提交了准备好的中英文简历。Trie
敲成了Tire
,然后修改了一波就过了。接着面试官问了一个有关钓鱼网站列表维护的开放性问题O(∩_∩)O
。面试大概持续了 40 多分钟,面完我就感觉应该比较稳了。第二天下午就发来了邮件通知我进入下一轮面试。Google Docs
。然后是我自我介绍,接着就是算法题环节,在 n 个物体中选出两个物体使某个公式的值最大。我先简化了一下公式,开始想出了一个用堆维护信息的
O
(
n
l
o
g
n
)
O(nlogn)
O(nlogn)的算法,写完代码后面试官问有没有
O
(
n
)
O(n)
O(n)的算法,我马上就意识到没必要用堆维护,直接保持一个变量不断更新就可以。这里还有个 bug,题目要求返回这两个物体的下标,我写的代码返回的是最大值,面试官提醒了我,我迅速改掉了。另外就是我在代码中用到了pair
,面试官不理解这个类型 first 和 second 成员的意义,让我加了comment
。接着面试官问了一个 follow up,在原有题目的基础上加了一个限制条件,我回答说用一个单调队列来维护就可以了,然后很快写完了代码。最后面试官给我提了几个建议,主要是要注意加强沟通,保证代码可读,这和平时刷题还是不一样(指的应该就是我没看清题目要求以及要对没有明显意义的变量加comment
)。面试结束以后,自我感觉还不错,虽然有几个小 bug,但是题目做的比较流畅。Hiring Committee Review
阶段。后来又过了两天,hr 又屡次联系我要求提交本科成绩单,我本科绩点太渣了(满绩 4,我不到 3,23333),故意没有提交,结果还是躲不过,最后缠磨不过交了研究生的成绩单(也很渣,不提)。o(╥﹏╥)o
碎碎念:Google 的实习面试轮次很少,只有两轮,面试主要是算法题,一般都是力扣中等题水平,所以挂的人不会太多,大部分都会挂在 hc 阶段。如果要申 Google,一定要多参加 kickstart,平时也要多练习白板编程,面试中要多与面试官沟通,代码尽量一次性 bug free。申请失败之后,肯定要总结一下经验,我个人觉得主要是 3 点:
1 月中旬通过微软招聘
微信公众号了解到,微软苏州和北京的暑期实习生招聘开始了,就立刻在网上提交了简历,并找了在微软苏州工作的大佬师姐帮忙内推了一波,师姐还以为 3 月份才开始招实习生,很惊讶这次怎么这么早就开始招人了(其实我也想问今年暑期实习生招聘怎么都这么早)。
Microsoft Teams
,发现面试官已经在了。我还很惊讶,因为之前的面试,面试官都是在面试开始以后几分钟才会进来。同样,还是先自我介绍,然后问了一下我简历的相关问题。接着就是算法题环节了,这次面试官给了一个代码共享的链接,还要求共享屏幕以及开摄像头。第一个题目可参考496. 下一个更大元素 I,单调栈的模板题,很流畅的写完了,然后面试官要求用一个样例把整个代码走一遍,我就自己写了一个输入样例,用注释标明变量的值(相当于手动 debug),把整个程序走了一遍。第二个题目是原题LCP 14. 切分数组,之前没做过,把我难哭了 ┭┮﹏┭┮,我知道要质因子分解,我也知道要动态规划,但是我真的不会设计状态啊,还是太菜了。我和面试官讨论了很久,把我自己想到的都说了,后来面试官可能也是觉得这个题比较难,把正确的状态设计告诉了我,然后我强行理解了一波,想出了一个算法,然后就是白板写了素数筛和质因子分解以及动态规划的过程代码。面试官又说质因子分解的过程复杂度太高,然后我又在素数筛过程中把质因子保存了下来,这次面试官终于说可以了。我一看时间,还剩 3 分钟一个小时。做题做的我满头大汗,心想这个面试官一定是个刷题大佬,已经进微软了,竟然还做这么难的题。最后问了面试官几个问题就结束了。这次微软的效率高了不少,面完 2 个小时就给我发来了第三轮面试的通知,可能是想过年前抓紧把面试流程走完吧。碎碎念:微软的 hc 要比 Google 多,而且在中国大陆也有一些核心业务,所以进微软要比进 Google 要容易一些。微软面试偶尔问一下简历的项目,主要问的是算法题,而且一般就是力扣上的原题,所以刷好 leetcode 是非常必要的。微软面试一般是中文面试,但在 leader 面中,会要求用英文自我介绍,所以一定要提前准备好英文的自我介绍。
2 月底就通过官网投递了亚马逊实习生岗位,但是直到 3 月底,亚马逊才启动实习生的招聘工作,4 月份才得到面试机会,时间线拉的还是挺长的。
非常
要说 3 遍),面试小哥先自我介绍了下,然后说了一下这场面试的时间安排(多长时间问简历,多长时间 coding,多长时间留给我提问),由于面试时间安排在了中午的饭点,还略带歉意地关心了一下我。coding 之前,面试官说有的面试者喜欢边 coding 边交流,有的喜欢先沟通好算法,然后再 coding,询问我喜欢哪一种。coding 过程中,和面试官的交流也非常流畅。整个面试让我觉得亚马逊特别注重面试者的感受,感受非常非常非常棒(非常
继续说 3 遍)。碎碎念:亚马逊是我春招过程中面过的所有公司里体验最好的一个,没有之一。在此不妨为亚马逊打个 call ,如果有兴趣推荐投递一下亚马逊啊。
经常听人说 hulu 的 bar 很高,面试算法题很难,抱着试一试的心态投了 hulu 的实习生。
碎碎念:hulu 面试都是算法题,而且题目还是有一定难度的,但也没有外界传闻的那么难。虽然通过面试要靠算法题,但是进入 team match 阶段似乎项目经历起着非常重要的作用,这一块就是我的弱项了,导致最后 team match 也没有成功,还是自己太菜了啊。
是通过师兄内推的,和师兄交流中,师兄各种夸 Freewheel 福利待遇多么多么好,听说还给北京户口,不禁心向往之。FreeWheel 一共 3 轮面试,而且是放在一起的,每轮面试大概持续 45 分钟。
碎碎念:FreeWheel 的技术栈主要是 C++和 Golang,而且比较推崇 C++的新标准,面试中会涉及许多 C++的新标准语法。第一轮面试是问算法题,第二轮面试比较随意,主要是聊一些对技术的看法。总体来说面试难度不大,面试体验相当不错。
爱彼迎实习招聘启动时间还是蛮晚的,5 月份才开始招人。然而报的人真多,5 月下旬约面试的时候,hr 告诉我只剩一个 hc 了。。。
碎碎念:爱彼迎两轮技术面试都是一个算法题,而且都是 hard 难度,需要现场 coding 和测试,对思维和代码能力都有很高的要求。之后的文化面试还是需要提前准备一下,而且可能需要按照面试运营岗位的要求去准备。
某天下午海投了一波简历,投完腾讯没多久就有一个 hr 加了我,询问了一些我的相关情况,后来我才意识到我把暑期实习投成了日常实习,修改了以后 hr 说暑期实习 3 月份才开始招人,到时候再联系我。哪知到了一月底,突然有个 hr 给我打了电话,问我近期是否有时间可以参加面试。我还有些意外,询问不是说 3 月份才开始么?hr 说可以提前面,就开始面试啦~~
碎碎念:当初没多想,觉得游戏开发行业不错,就投了腾讯游戏开发,最后虽然主要靠 C++和数据结构基础不错拿下了 offer,但是几乎每轮面试(尤其是第 4 轮)都会怼我:你既没有玩过什么手游,又没有学过游戏开发的技术,为什么要投游戏开发呢?最后一轮 hr 面还特意告诉我入职之前要玩一下手游,不然以后没法开展工作。所以要投游戏开发还是要以我做反例,投之前多打手游(段位高或许还可以写在简历上,哈哈),学一些游戏开发的引擎技术。总结来说,4 轮技术面问的都是比较基础的问题,而且面试官都很和气,面试中回答不上的问题也会引导你,感受非常好。
看到 98 上有阿里淘系技术部的内推帖子,就投了一下简历。后来发现阿里不是统一招人,各个部门分开招聘,招人的帖子层出不穷,在我们年级群日常刷屏,简直是百团大战。后来又陆陆续续投了几个部门,最后只选择了淘系技术部和钉钉面试。
挺好
,最后还说我们尽快把流程往后推进好吧
。面试完我就感觉这波应该稳了。Stack
类做反例。面试官以为我懂 Java,就问我了不了解 Spring,我答不知道。还问了其它面向对象设计的问题;设计模式(我只记得单例模式和工厂模式,还没答好);数据库的范式(记不得了);等等。问的问题大多偏向面向对象软件的设计问题,C++就问了一个简单的指针和引用的区别。我说我报名的 C++岗,面试官说阿里做 C++的很少,Java 是主流。我问我万一能拿到 offer,入职之前是不是还要学 Java,面试官说是的(那招聘公告上还说有 C++开发岗???)。面试官又说入职之后会有专人带,入职前也会有培训,所以不用担心。我只能无奈摊手。总结来说,面试小哥人很和气,面试过程气氛也还不错,不过面试的问题让我觉得:在阿里投 C++是没有出路的,要投 C++还是出门左转腾讯吧。碎碎念:阿里面试和其他公司还是略有不同,第一轮面试主要问一些基础问题和算法题(和国内其他公司差不多),但是二面三面主要问做过的项目,而且问的很详细,主要是抓你有没有性能优化的意识和实践。二面时,我在这方面没有准备,所以二面给的评价很低,最后是凭借一面表现不错才得以通过。所以二面后就立刻吸取教训,把简历上的项目好好准备了一下,描述中增加了许多具体数据作支撑,尤其突出性能优化这一方面做的工作,三面收到的评价就很不错。另外,阿里招聘还有很多槽点,两个字概括就是:混乱。各部门各自为政,导致我们年级群日常被刷屏,虽然在投简历时能够投多个部门,但是最后进面试流程的只能有一个部门,所以个人觉得这种宣传方式既浪费阿里的人力,也让应聘者觉得眼花缭乱,抓不到重点。此外,进入面试流程之后,似乎并没有专门的 hr 跟进,我在淘系的二面面试没有任何通知,面试官就打了电话过来要求面试。于是我在三面前特意和内推同学说了一下希望三面前先有个通知。结果面试时间也是通过电话而不是邮件方式通知的,当时我在参加一个公司的笔试,通知人员给我打了三四个电话都没通,由于来电是使用阿里内部电话而且需要分机号码,所以我根本无法回电。之后我又联系内推的同学(这时就体会到有一个内部人员内推的好处了),同学说某天下午给我来电,我特意说明有个时间段我有其它的面试,结果电话又在那个面试时间段打了过来,没有接到,我当时内心是崩溃的。后来还是通过内推同学敲定了最后的三面时间。通过这件事我体会到,邮件真的是比电话更有效的通讯方式。到了 hr 面,hr 迟到了大约 8 分钟,我内心又崩溃了一次。整个招聘面试可谓状况不断。说完槽点,再说些阿里让我感受特别好的地方,在我面过的国内的互联网公司中,阿里给我的面试体验几乎是最好的,面试官非常和气,问的问题很专业,八股文很少,对于面试者不太熟悉的问题,也会很积极地给面试者引导。而且面试过程主要询问的也是面试者熟悉的领域,尤其二三面的项目面,几乎就是面试者的主场,就像是面试者针对自己做过的项目做一次答辩,即使你的项目和部门方向完全不同,面试官也会耐心听你讲述,在你的描述中挖掘面试者的潜力,也就是说即使目前你做的东西和岗位需求并不完全匹配,公司也愿意花时间培养,感受很棒。
找了师姐内推,本来想投 C++开发岗,后来听师姐说她们部门挺不错的,就报了师姐的部门。没想到字节内推竟然不能免笔试,表示强烈谴责!!!
shared_ptr
,吭吭哧哧的写完了,最后还是留下了一些小 bug。最后就是一个算法题,挺简单的,跟面试官说了一下思路,然后就结束了。感觉面试官准备的不是特别充分,每问完一个问题就会停顿 1 分钟左右(好像是去找新的问题,或者是在给我写评价?)。面完感觉应该能过。前面的面试挂了以后,很是不服气(准确来说是把我气炸了),我又回去看了一下职位要求,也没要求必须要熟练掌握 python 和网络编程啊,这面试挂的能是我能力不行吗?肯定是岗位需求不匹配(认真脸.jpg)。我又火速又投了一个 C++开发岗,心想不蒸馒头争口气,一定要把字节的 offer 拿到手,气死我了。
碎碎念:实话说,在我面过的公司,字节是体验最差的。首先是面试官时间观念太差!总是迟到,让人蛮不爽的。再者,到我反问环节,询问部门主要做什么,有些面试官描述很简略,没有表达欲望,感觉并不热爱自己做的工作,没有激情。最后就是岗位匹配问题,字节还是蛮看重面试者与岗位的技术栈匹配程度的,我去面阿里、美团这种 Java 大厂,我总是第一时间表明我主要学的 C++,面试官就很和善地避开 Java 相关的问题,而且还告诉我面试主要看重整体素质,技术栈不匹配没关系,可以将来入职再学。字节就完全不一样了,完全无视我的表述,本来字节的 offer 是志在必得的,结果吃了一记挂信,让我心态炸裂。
海投的简历,选择了美团优选事业群。
Runtime Error
。开始用的 C++还能过百分之四五十的样例,后来实在没办法转 python 同样的算法竟然连样例都过不了(???),我又看不到程序输出,根本不知道是哪里出了问题。开始第一个小时前 3 题一个没 A,急的我满头大汗,怎么算感觉自己的算法都是正确的,不会有访问越界情况。后来在考试过了 1 个小时 10 分钟左右的时候终于找到了问题,注释掉代码ios::sync_with_stdio(false);cin.tie(0);
就行了,至于为什么我也不知道(摊手)。找到了问题所在,后面就很简单了,大概 1 小时 40 分钟这样一次性把 5 个题都过了,然后就交卷了。不得不说,这次编码体验太差了,最简单的第一题我提交了 11 次才过,就为了找Runtime Error
的原因。碎碎念:美团给我的面试感受非常棒,面试官都很和善,更重要的是,美团以 Java 开发为主,但面试官了解到我目前的技术栈主要是 C++以后,特意避开了 Java 相关的问题。二面面试官还特意向我强调,校招主要看面试者的整体素质,对经验要求不会特别严格,所以不用特别担心技术栈不匹配的问题。而且美团面试轮次才 2 轮,在国内互联网企业中可谓独树一帜,效率也很高,在这给美团点个赞。
海投的简历,选择了 C++开发岗。
碎碎念:百度与众不同,一天之内连面 3 场,面试之前要做好准备。面试官人都挺和气的,即使不会的问题也会引导你。面试会问简历和现场 coding,一般会出 2-3 个算法题,问的也都是力扣上的原题,所以准备好 coding 至关重要。
海投的简历,网易效率有点慢啊,投了一个多月,3 月底才开始安排笔试。
由于网易精英实习生进度太慢了,又投了网易互娱的游戏研发实习生。
喂喂喂
地喊了半天,面试官也没吱声,我还以为我麦坏了。咱也不懂明明前面有一次笔试了,为啥面试前还要有代码测试,可能这就是网易的与众不同之处吧。题目不难,花了十几分钟写完代码,又测试了几个样例,在聊天窗口通知面试官写完了,面试官也没回我,然后我就吃点喝点上个厕所啥的,过了半小时面试官上线,问我代码测试感觉如何,说我写的挺快的,我就老老实实回答题目蛮简单的。面试官针对我的简历问了几个问题,夸我 C++和算法的能力蛮强啊(其实一般般),接着问了 C++、操作系统、网络、数据库这些八股文,然后问了几个算法题,口述了一下思路,咱也不懂既然前面有代码测试了怎么面试还会问算法题,不过无所谓,反正我肯定会(哈哈哈哈)。面试小哥人还是很好的,感觉年纪不大,交流起来异常的舒畅。面完感觉应该稳了,等二面。碎碎念:网易还是很注重算法题的,而且面试的题目有一些难度,需要一定的刷题量。面试官都比较和蔼,二面我都以为要挂了,结果还是发了 offer。PS:网易互娱实习生给的薪资还是挺高的,而且在广州,城市也不错,实习的话可以作为一个不错的选择。