2018后台开发(C++)暑期实习面试总结

从3月份开始的实习面试,内推-网申-笔试-面试等等一系列漫长又煎熬的找实习过程总算是尘埃落定了。谈不上面经,这里分享一下我的面试经历。首先说一下面试结果

公司 部门 渠道&流程 结果
阿里 阿里云 内推,电面 二面挂
腾讯 腾讯云&TEG 提前批+正式批, 电面+现场面 offer
头条 财经服务端&头条主端 部门点招,视频面 offer
微软 O365 网申,笔试+现场面 offer
摩根士丹利IT -- 网申,笔试+电面+现场面 offer
美团 点评事业部 内推 一面挂
招行信用卡中心 后台开发(java) 网申+笔试+视频 一面挂

总的来说,有挫折也有惊喜,中间经历了各种起起伏伏,所幸最后还是有一个比较不错的结果。下面从面试成功与面试失败的两类公司,分别总结一下成功的经验以及失败的教训,同时对面试公司的面试风格做一个总结。

Success

实习面试包括三部分的内容:计算机基础知识+个人/实验室项目+算法题。对于C++后台开发岗位而言,要熟悉的基础知识包括:C++知识(基础、面向对象、内存模型)、操作系统基本原理、TCP/IP基础知识、网络编程内容(socket编程、IO模型等)、数据结构(链表、栈、队列、堆、红黑树、哈希表)等,这些基础知识有些会从项目作为出发点加以引申,有些则会专门询问。
至于算法题部分,刷完Leetcode Top100以及牛客网剑指offer专题基本足够应对面试。

头条

头条的面试比较坎坷。一开始将简历误投到了官网上实习招聘那一拦(头条的暑期实习生在校园招聘那一栏), 后来也收到了财经服务端的面试邀请,对HR和面试官都说明了自己的情况,表示没问题,遂面试。三轮面试除了基本的基础知识和项目之外问的问题大概是:

  • 之字形打印二叉树(剑指offer原题)
  • k路归并有序链表(前面时间花太多,只说了思路)
  • 简单实现一个LRU (双向链表+哈希表)

面试完后找朋友查了状态,显示面试通过,但是HR迟迟没有来联系Offer的事情。打电话咨询HR,先问能不能转成暑期实习生答要沟通,后续自己再打电话咨询说只能提供5个月的日常实习生岗位,心中一万只草泥马奔腾而过...更蛋疼的事情是,正式批笔试也做了,但是挂了,可是实验室另外一个同学A的题比我少但是笔试通过...
  心灰意冷的时候师兄跟他头条主端的mentor聊起我的情况,他mentor说他们部门对时间上没有这么严格的要求,问问能不能再重新发起面试。于是乎,重新参加面试。这次的三面体验显然优于上一个部门,不管是基础知识部分提问的质量以及面试的氛围。三轮面试的问题如下

  • 变形版本的正则字符匹配(?和*),暴力版本的复杂度说错了,但是动态规划的版本的代码算是写出来了
  • 大佬教我做人系列,就项目中各种细节详细问了,特别是对于IO复用、epoll等等。代码部分让我说了下单次买卖股票最大利润问题的思路,轻松加愉快
  • 三面的面试官人非常nice, 应该是部门leader, 说话问问题如沐春风。没有什么特别难的问题,主要是设计一个IM(个人项目中写了一个聊天服务器),各种模块的设计。

头条主端的面试流程非常正规高效,一天面试完毕,没几天就发了offer. 最后在自己各种不是特别成熟的考虑之下忍痛拒了这个offer, 说实话是有些后悔的,首先这个部门很核心,里面做的东西自己也比较感兴趣,从面试也可以看出整个团队的氛围也非常好。有缘秋招再面啦~
  Tips: 头条面试必问算法题,因此leetcode剑指offer该刷还是要刷。然后也会问一些基础知识,但是一般而言不会很难,会比较重要的部分即可。

腾讯

腾讯的面试经历同样充满戏剧性。提前批的时候简历被SNG腾讯云捞起来,一面问问项目问问基础知识,没有什么难的,基本全部答出,不过面试时间有点短,只有二十分钟。后续一直等复试,公众号里的状态突然一天变成岗位不适合,惊得不行。然后当天中午就另有一个电话过来告知说忘记改状态了,说后续还有面试。谢天谢地,然后接着等。这回等过来等过去,公众号里的状态复试、不适合、初试各种状态来回变,总之就是没有收到复试。
  腾讯是4月2号没有收到正式offer就一定要参加正式批笔试。直到4月2号那一天,期待中的提前批复试也没有来,慌得不行。做完笔试之后有收到说第二天总监电话面试,问是否算提前批复试,答曰算。第二天的复试总监大佬亲自面,不知为何,水得一匹...这一回的面试居然各种聊人生...最后面完面试官说:“我这边已经没有什么问题要问了。我跟你说一下我面完你之后的感受吧。” 面试的感受大致就是我虽然不是科班出身,但是自己的兴趣很明确,基础知识也比较扎实,但是缺乏实际的工程经验,他们团队很适合我。(惊了...
  问HR,说面试通过了,但是我的简历现在锁在正式批中,我不用面他们那边,等到释放了告诉他他拿去审批。开开心心,准备正式批面试那一天跟现场的HR说一下不面了,释放掉我的简历就行。可是万万没想到正式批现场面试当天又被告知腾讯云那边不能100%确定offer, 正式批的面试要不要参加我自己决定....
  犹豫了半天,决定还是硬着头皮再面一次正式批。初试的面试官是个微胖的穿着冲锋衣的大叔,可以,这很TEG。上来问问C++11新特性,这些东西自然是答得明明白白,面试官也很满意。后面聊的一些问题有的答得不算好,比如分布式的基本原理、操作系统相关问题(进程怎么维护已打开的文件描述符)等,但可能前面聊C++聊得比较开心,一出门状态就改成了复试。第二天来复试先聊基础知识活络起来之后就不紧张了,开始侃侃而谈。让看了两道看代码答运行结果的题,然后一道简单编程题,都答上来了。最后再聊了聊人生,告知可以直接去上面等着HR面。下午HR面也就正常聊人生聊未来了,没什么。
  没过几天,就发了正式的offer.
  Tips: 腾讯的面试我感觉是所有面的最水的一个...但是能不能进完全随缘,而且面试官的风格相差也比较大。不过一般而言更倾向于基础知识,很少做算法题。因此只要基础知识比较扎实,然后也会主动以点带面加以引申,一般都能过。

微软

微软没有内推,老老实实投简历然后等笔试。师兄说微软的笔试会很难,战战兢兢了很久,没想到笔试的时候题目水得一匹...倒不是问题多简单,只不过写了个暴力试试水然后就过了也是一脸懵逼。最后4道A了三道半,也就成功进入面试啦。
  4月23日去苏州参加微软正式批的面试。环境相当好,算是又充值了一波信仰。微软面试一天分三批,我是中午11点那一批,首先被带到一个会议室中等候面试,然后会有面试官一个个来门口领人去面试。
  一面面我的是一个外国小哥,人非常nice, 一直叫我放松不要紧张,然后考虑到我的口语水平语速很很慢。上来是一道热身题,问如何判断两个字符串是否是Anagram(组成字符相同但是顺序不同),马上写出了一个用数组模拟哈希表的方法。第二道题是数组中盛最多水的问题,Leetcode原题。之前虽然做过,但是思路一时间想不起来,然后就一直跟面试官探讨,说自己对题目的理解,说暴力的方法,说初步的思考方向。面试官也给了我很多提示,最终想到了用双指针的解法,并在A4纸上实现了。
  中午吃了一顿盒饭,然后一点就开始了二面。自我介绍完后,面试官让我我用英语回答了一些问题,比如HTTP中GET与POST的区别。然后开始写题。第一道热身题非常简单,判断一个字符串是否有重复元素,easy. 然后第二道题说给我一个迭代器和一个数k,迭代器只有next一个接口,现在让我将后面的k个元素删除,只保留前面的。先说了一个暴力的方法,全部遍历完后返回前面的n-k个。面试官不是特别满意,想让我在空间上加以优化,没有想出来,很难受。其实后来觉得可能面试官只是想让我用一个双端队列deque. 最后再做了一道题,给我一个BST和一个数n,找到这个BST中与n最接近的结点。说了递归的思路并加以实现,逐行解释代码,并说了将递归的代码改成非递归的实现。
  刚回到会议室没多久,就被一个和蔼的大叔领去三面。看面相应该级别不低,但是人非常nice,如沐春风般的,语气非常真诚且可爱。让我用英语介绍实验室项目,非常紧张,有些磕磕巴巴,他也还是笑眯眯地听着,并一直安抚我让我别着急。热络下来慢慢也就进入状态了。他问我前面的面试官都让我写过什么题,说完他沉思了一下在黑板上哗哗写了一个二维数组,我的天,这不就是二维数组中的查找,剑指offer第一题。故作沉吟跟他说完了那个从右上角开始查找的思路,以为应该十拿九稳了。但是没想到大叔显然并不十分满意,于是一直交流引导,最后想到用二分的思想来解决这个问题。说完思路他表示很满意,留我在房间里在白板上实现这个思路,他有事出去一趟。其实这份代码只要有思路了写起来并不难,算是写得齐齐整整吧。大叔实力很强,回来后一行行对照着代码看,很快又发现一个进一步优化的地方,佩服之余也立马进行了优化。
  面试结束之后HR说我的面试通过了,问了下面试官评价,反馈都非常好。一周后,收到了offer确认信。
  Tips: 算法题是微软乃至外企的大头,同样的刷题还是必须的。但是外企的面试风格更偏向于了解候选人解决问题的思路,衡量的标准是“我与你做同事我舒不舒服”,因此特别注重交流。因此在整个面试过程中时刻提醒自己不要慌,自己有思路,就要前前后后说明白;没有思路,先说明自己对题目的理解,并给出自己的思考方向,实在不行就要提示。最后,因为是在白板上写出代码,因此平时写代码一定要保证很好的编程习惯。

摩根IT

一直有所耳闻摩根IT在浦东正装面试,逼格高的不行,想要体验一下资本主义的糖衣炮弹于是就投了简历。很快就过了简历筛选,之后不久就给了一个笔试链接,在3月18日前完成。笔试题目可以在C++和java中选一套题,题目非常的...emmm...很抠细节,而且全是不定项选择题少选不得分。我都不知道自己是怎么通过笔试的...
  笔试不久收到了电面。全程英文,感觉题目都是快问快答,从C++、操作系统、网络到数据库,基本所有的都是考得最简单的概念题,比如what's the difference between TCP & UDP? 基本都是快速作答,不过对有些问题比如smart pointer我也作了适当的引申。
  之后收到现场AC面的邀请,建议正装。我是参加完苏州的微软面试后直奔上海,头天晚上还特意跟前台借了熨斗2333.... 第二天到现场,这逼格,确实是比互联网公司高一点...
  AC面需要先做30分钟的笔试,题目纯英文,类设计+两道基于前面的设计的编程题。题目不难,很快就能写完。之后会有面试官领人到具体的房间,每轮面试两个面试官坐在一左一右Orz.... 一面的问题主要是回顾刚才笔试题中写的代码,详细说明如此设计类的原因以及两道算法题的核心。还简要问了一些基础知识。全程英文,但是不会很难,大不了就pardon.
  在面试房间等了一会,迎来了两位大佬。先聊了一下人生,然后我嘴贱说了一句陈硕,然后两位面试官哈哈地笑起来,说“He worked in my team...” 惊了...之后的面试题以你如何设计一个XX为切入点,以点带面说了很多相关的知识,然后再加以实现。自己答得很不好,感觉思路不是很清晰,面完只觉得自己要挂...可是没想到两天之后还是发了offer...
  Tips:摩根的面试都是用英语,因此提前准备准备一些专业术语的英文还是十分重要的。可以在自己做的中文基础知识总结上试着都用英语说一遍,然后把相关的专业术语对应的翻译记下来。虽说都是英语,大胆说就完事了,大家彼此都是中国人,总能听懂的。此外,笔试题中涉及到很多C++面向对象的知识,应该要重点加以复习。

Failed

总结了一下面试挂的公司,挂的原因主要有两种,一种是对于某些知识还是不够熟练,需要进行恶补或者强化;另外一种就是自己的技能栈与其岗位要求八字不合,聊不到一起去,对这些,以后敬而远之即可。

阿里

阿里的实习生招聘开始得很早。从BBS找到一个阿里云的师兄内推,是一个做数据库的团队。没两天就收到了电话面试,面试官对照着简历一条条开始问,每一条技能都有相关的问题,角度比较刁钻且切中要害;幸亏针对简历进行了专门的复习,倒也还好。一周后打来电话说二面,这一次的问题的难度明显加大,对于上次面试已经问过的基础部分完全没有提及,每一个问题都是切中要害,并且算是比较深。不过自己那个时候确实也大意了,很多本来应该能够回答上来的问题没有答上来,比如锁的实现?信号的详细实现?TCP状态的切换?Time-Wait的作用?
虽然这次面试一面完就知道自己要挂,但还是很开心,幸亏这次面试让我重新对很多的问题进行了更为系统化的梳理,后续面对其他公司的面试也就从容很多了。
后来又有一个电话打来说之前内推的流程没有动静,他那边是计算平台的,能不能重新面试。那当然是说能,可是一面试依然懵逼,还是熟悉的阿里味道,对每一个问题都要一直追问,直到不会为止。然后还写了两道题,二叉树非递归后序遍历和循环队列,我自认为都写出来了,不过可能前面基础知识所展现的深度还是不够,那么结果自然也就是没有下文了。
  教训:阿里对基础知识极为重视,因此对于后台开发而言的所有操作系统、TCP相关的内容一定要深入深入再深入。然后也需要学会自我展现,因为阿里的面试官最后问的问题到最后会很深,需要学会引申,然后以点带面自己讲出很多知识点,表现出自己的知识广度。不过所有这一切的前提是,所有引申出来的部分,自己最起码是可以说出个一二三的门道来的。加油,秋招再战!

美团&卡中心

这两个公司都是java后台开发,因此一听到我的技能栈就表示没什么兴趣了,也确实聊不下去。面着面着就有一种没话找话的感觉,大家互相尴尬。java完全不会,他们又更关注于业务,因此更侧重于HTTP、现有的后端框架及其性能、数据库等相关内容,但是抱歉,这一部分内容是我所没有掌握的。
  教训:不要投跟自己技能栈差别很大的岗位!

写在最后

无论怎样坎坷,实习算是找完啦,之后的好好学习好好总结,争取在秋招有更好的结果。另外还有一些公司面试都没捞着表示很气, 百度、网易游戏、网易啥的....

你可能感兴趣的:(2018后台开发(C++)暑期实习面试总结)