个人情况 本人是武汉大学计算机学院 2014 级的本科生一枚,在写这篇总结的时候我是大三。本来我们班是规定了有固定的实习的,但是自己还是想向国内顶尖的互联网公司冲击一下,所以抱着试一试的想法参加了几个公司(腾讯、阿里、华为)的暑期实习生招聘。在腾讯应聘的职位是后台开发实习生,阿里和华为应聘的是 Java 开发实习生。
本文目的 这里想记录一下几个公司的暑期实习生招聘的流程以及一些常问的问题,一来是自己总结一下经验为以后可能的面试做准备,二来是想给以后的学弟学妹们一个参考,在准备面试的和笔试的时候能够做到有的放矢。
结果 在 2017.4.16 是面完了腾讯的 HR 面,目前还在等结果(不知道是不是进了备胎池,一周没有消息了 OTZ),微信显示的是 "你已完成所有的面试环节、请保持手机畅通"。 在 4.14 面完了华为的面试,今天刚刚接到华为的短信通知说进入了签约池,叫我填一个什么调查问卷。 阿里的内推比较早(大概三月份开始的),后面接过一个面试电话然后显示已回绝,但是貌似 4.26 有自主投递的笔试,过了笔试之后还可以有面试机会。 ———华丽的更新线———— 今天(4.24)收到腾讯发过来的邮件啦,开始准备暑期的实习咯
(如果只想看腾讯的就直接跳过这一节吧)
- 华为在武汉的是实习生招聘面试是在华为武汉研究院(一个三环外老远老远的地方),前期需要自己在华为校招的官网上填写自己的简历,然后一段时间后(大概两周)会收到笔试的通知。
- 华为的笔试是三道编程题 ,总分600分,分值貌似分别是100、200、300,时间是总共两个小时。个人觉得题目难度不算是很大,但是想全部做对好像也不是那么容易。笔试完成大概一周内就收到了叫我去面试的通知。(不过有的同学没有做笔试也收到了面试通知,估计是部门内推就可以免除笔试)个人感觉华为的笔试貌似没有刷人,因为我的同学只要填了简历都获得了面试资格。
- 笔试过后就是面试环节了,地点前面说了是在很远的一个地方,从我们学校搭公交过去大概要两个多小时。华为的面试总共只有两轮,第一轮是技术面,第二轮好像就是HR面试了,然后时间是在同一天里(可能考虑到那地方真的太偏远)我大概花了30多分钟就完成了两轮面试。
- 技术面试的时候问的主要是项目中的一些问题,主要问题有:
- -你印象最深的一个项目是哪一个,介绍给我听一下
- -hashmap的结构能不能画出来给我看看
- -平时有没有使用过Linux,一般用Linux干啥,常用命令有哪些
- -平时用过哪些数据库
- -有没有使用过云服务器(我说我用的腾讯云....)
- -有没有什么想要问他的
- 反正个人感觉技术面还是比较简单的,如果自己做过项目而且真的比较熟悉自己的项目的话问题应该不大。而且感觉技术面好像没怎么问技术细节问题(相比于腾讯和阿里)。
- 接下来的是HR面试,刚面完技术面还没坐下来就通知我去HR面试。HR面试的个人感觉主要是做些背景调查。主要问题如下:
- -你最新的一个项目介绍给我听一下
- -你的成绩怎么样,在年级排名,你们这个班是特色班吗
- -你是哪里人,高中在哪个学校,高中成绩怎么样(不知道为啥要问高中....)
- -家里有没有人在华为工作
- -你认为你个人的最大优点是什么
- 其他的问题记得就不是很清楚了,反正总体感觉华为的面试还是比较简单的,涉及到技术层面的问题不多,更多的是叫我谈项目相关的东西。而腾讯和阿里的技术面就会涉及到很多技术问题了,下面会一一介绍。
- 阿里的内推和面试时最早的,大概3月份就开始了。然后阿里的内推也是最多的,然而我还是跪了(无奈.jpg)
- 阿里也需要在阿里的校招网站上进行注册和简历填写以及岗位的申报。然后过了一段时间后会收到一个邮件叫我完成综合素质评测和编程测试。这个综合素质评测考的东西真的是啥都有:阅读理解、逻辑推理、管理协调什么乱七八糟的都有,总的来说就是一个IQ和EQ以及领导沟通能力的综合测试,时间大概是一个小时。然后还有一个编程测试,30分钟一道题(我花了25分钟才大概看懂题意,最后就随便写了几行代码就提交了......)。不过官方说编程测试仅供参考,不影响结果。
- 然后大概过了一周左右的时间突然有个杭州的电话打过来,我还以为是我在淘宝买了啥东西,接了电话才知道是面试(猝不及防)。由于没有怎么准备,所以回答的很不理想,上午接的电话下午官网状态就显示为已回绝了。主要问的问题有:
- -介绍一下你项目里用的这个Dubbo框架。(这个是我实习的时候的一个项目,事前没咋准备,也不是很了解,所以只能说我不知道。。。)
- -解释一下Hashmap如何实现的
- -你之前做过的项目里有什么缺陷,如何解决
- -如果给你足够的资源和技术如何优化你之前的项目
- -快速排序如何实现
终于说到腾讯了,腾讯的招聘给我的感觉就是豪。貌似腾讯包下了一整个酒店(光谷凯越酒店)来面试,而且好像每年都是那个酒店,据说那个酒店还是五星级的。
还是先从简历投递说起吧。腾讯的实习生招聘是从我们年级的群里得知的。时间大概是三月中旬,当时有一个学长内推,我给学长的邮箱发了简历,然后也在腾讯的官网填写了自己个人的简历和各种情况,但是一直等到四月 4 号都没有人打电话给我面试。(这通常是简历在内推阶段被刷了,我们班有两个大神在 3 月份就接到电话面试然后顺利拿到了 offer)
内推阶段被刷的我只有老老实实的做笔试题,腾讯的笔试题好像是两个小时。在正式的笔试题之前还有一个模拟考,供大家熟悉考试题型和环境的。腾讯的考试题分为选择题、简答和编程题两个大类。选择题的范围比较广,数量好像是 30 个,而且好像有时间限制要在一小时内做完。内容包括有 c++、Java、数据结构、网络、Linux、计算题还有一些记得不是很清了。反正感觉是有很多不会做的,但是个人感觉做这种笔试题有时候不能真的去硬算,有时候可以使用推理和排出的方法来做,否则感觉基本不可能在有限的时间内算完。然后是四个大题,两个是简答题,两个编程题。一个是有关磁盘空间计算的问题,我好像没有做出来,瞎写的。然后第二题是一个简单的算法题,我直接写出代码放在上面了。第三题是一个排序平衡二叉树的问题,但是当时好像把题看错了,然后没有写出来。最后一个题好像是一个格式化输出字符串的问题。比较有把握的就是 2、4 两个题,1、3 题就随便写了几句话然后就交卷了。
不过虽然感觉笔试做的不是很好,但是在一周后还是拿到了面试的通知。(好像笔试不会怎么刷人,我认识的大部分的同学好像做了笔试就都拿到了面试机会)。面试分为三轮,一二轮是技术面,最后一轮是 HR 面试。腾讯的面试是在华科旁边的一个酒店里,比较人性化的是每个地方都会有工作人员指引,还有工作人员帮忙按好电梯的楼层,给人感觉很贴心。到了酒店之后是在大厅用微信扫描二维码签到,然后是在休息区等待。到自己的时候会有短信和微信消息提醒。上去面试的时候才发现原来是每一个面试官有一个房间,就是他们住的那房间,然后不同的人在不同的房间里进行面试,给人感觉就是腾讯好有钱。
一面的面试官是一个男士,个人感觉像个领导,因为穿的挺正式,不过一般应该是技术人员。首先是叫我做了一下自我介绍,然后就问我一个 C++ 的多态如何实现。因为平时用的都是 Java,对 C++ 不是很了解,所以就随便说了什么多继承什么的,然后告诉面试官我对 C++ 不是很了解,平时主要用的是 Java。然后面试官就开始问我 Linux 有关的问题:Linux 进程和线程的区别、Linux 进程间通信的方式、Linux 的文件系统、Linux 进程的创建以及创建后父进程和子进程之间分别会发生什么。问完了 Linux 他又问了我 Java 相关的问题:让我介绍了一下 Java 的垃圾回收机制;在纸上写一个 Server 通信的示例程序,我写的时候还专门写了一个处理线程类,然后还加了一个终止程序运行的条件标志(我感觉面试官可能会比较看重你考虑问题是不是全面);然后还问了我 Java 中 hashmap 的实现(好像这个问题出现的频率很高)。接着问的是网络方面的问题:TCP 的三次握手和四次挥手画出图示并讲解,说出 Http 的包头里的四个属性,说出 http 有哪些方法,post 和 get 有什么区别(反正这个问题我回答跪了,看到面试官画了个 ×)。上面那些问题问完差不多就过了 20 多分钟了,然后面试官叫我 10 分钟内在纸上写一个算阶乘的程序。我第一反应就是肯定普通的数据类型会溢出,然后我就问面试官输入的数据有没有范围限制,他说没有。我当时就想肯定不能直接用 int 或 long,肯定是 string 来输出结果,然后愣了大概一分钟如何去计算。后来我突然想到以前自己写的一个大数相加的程序,然后我就想把所有的阶乘转换成加法的循环具体可参考以下代码。(已经过测试应该是没有问题的)
- #include<iostream>
- #include<vector>
- #include<string>
- #include<algorithm>
- using namespace std;stringaddString(stringsa,stringsb)//实现大数相加{vector<int>a;vector<int>b;intsmall=min(sa.length(),sb.length());//获取最短长度
- //将字符串里的每一位都保存到vector数组中
- for(inti=0;i'0');
- }for(inti=0;i'0');
- }//将a,b两个数组逆序,也就是让个位都在0,最高位都在最后reverse(a.begin(),a.end());
- reverse(b.begin(), b.end());vector<int>result;//保存结果的集合每一个数表示一位
- intjinwei=0;//进位初始为0
- inti =0;for( i=0;i//从个位开始依次处理,直到一个数组处理完成,注意进位的问题{inttem=jinwei+a[i]+b[i];if(tem>=10)
- {
- result.push_back(tem%10);
- jinwei=1;
- }else{
- result.push_back(tem);
- jinwei=0;
- }
- }if(i//判断还有没有剩下高位没有处理,同样要注意进位问题{while(i10);
- jinwei=(a[i]+jinwei)/10;
- i++;
- }
- }else if(iwhile(i10);
- jinwei=(b[i]+jinwei)/10;
- i++;
- }
- }if(jinwei==1)//最后判断还有没有进位result.push_back(1);
- reverse(result.begin(),result.end());//将result数组逆序,将高位放到前面低位放到后面
- stringrt="";//将数组中的数据变成字符串返回
- for(inti=0;istringtem=to_string(result[i]);
- rt+=tem;
- }returnrt;
- }stringfunction1(stringin)
- {if(in =="")return "";if(in =="0"|| in =="1")return "1";long longend = atoi(in.c_str());stringsum ="1";for(long longi =2; i <= end; i++)//控制乘法的循环次数 例如3!=1*2*3,因为sum初始为1,所以需要计算两次乘法{//3!=1*2*3=(1+1)*3=(1+1)+(1+1)+(1+1)=6
- stringtem=sum;for(long longj =1; j < i; j++)//加法循环实现乘法 例如2*3=2+2+2{
- sum = addString(sum, tem);
- }
- }returnsum;
- }intmain()
- {stringin;cin>> in;cout<"pause");
- }
然后十分钟过去了,我大概把 addString 那个函数写了一大半,然后把纸给面试官看,然后还大致解释了一下我的思路。后来发现这个题其实有更加高效的做法,使用 vector 来存储数据,然后模拟手工计算的方式来做大数相乘。具体的代码可以借鉴大数相乘算法实例。然后到此一面就结束了,个人感觉回答出了大概 70% 的问题吧,但是不怎么抱太大的希望。
让我没想到的是两天后我居然接到了二面的通知。二面是一个比较胖的面试官,网上说一般都是部门的 leader,不过我觉得他反而更加的随和像一线程序员哈哈哈。上来他就给我一张纸叫我写一个双向链表删除一个节点的代码。讲道理在纸上写代码体验真的差,而且我总觉得这么简单的题可能会有什么坑….. 想了一分钟貌似也想不出什么坑然后就吧唧吧唧的写完了给面试官看,面试官叫我解释一下我的代码,然后问我还有没有什么补充,通常这就是说代码里有 bug 或者没有考虑到的情况。果然我只注意了删除的节点是头结点的情况而没有考虑到删除的节点是尾结点的情况。加了一个判断条件后又向面试官解释了一下。然后他就给我看一道 C 语言的变量的空间分配的问题是有关 union 里有好几个 int、double、char 类型的数据,然后问 sizeof(union)是多少。讲真这个问题我大一学过然后早就忘了,然后我又重复了一遍我对 c 和 c++ 不是很熟悉,平常写的都是 Java。面试官居然说腾讯的后台都是 c++ 写的,没有 Java 岗。我想这下应该是 GG 了。不够好在他说没有关系,然后又叫我画了一下 TCP 三次握手的图示以及可能出现的 Timewait 的位置和设置这个的原因,当时我还卡了一下,好在仔细分析了一下正确的回答上来了。接着他问了一个最简单的动态规划问题:"每次只能上一级或者两级台阶,上到 n 级有多少种方法?" 解答看这里。 然后就叫我介绍一下自己印象最深刻的一个项目。我如实介绍了一下,然后他问了一些和项目相关的问题,最后他还给我的项目中没解决的问题提供了一些意见。然后最后他说我可能需要未来一段时间学习一下 C++,然后还要考虑一下自己未来的技术方向的问题。这下我又感觉好像还有点戏。然后到此二面就结束了。总体感觉二面的面试官非常的和蔼可亲,叫我的名字的时候还没有带姓,就给人一种很亲切的感觉。
很快当天晚上我就接到了短信通知我第二面去 HR 面,真的是感觉很幸运。HR 面试就基本没有涉及到什么技术问题了。主要问了我一些其他方面的情况:你觉得你有哪些优点、哪些缺点、你从你的项目中学到了什么、有没有什么例子能够证明你刚刚说的那些个人特性。巴拉巴拉说了一大堆,然后还和我介绍了腾讯的文化和价值观,然后还给我提出了一些建议和面试方面应该注意的问题。总体的感觉也是比较轻松愉快的,最后他还起身送我离开了面试的房间,让我比较感动。哦他还问了我有没有拿到其他公司的实习 offer,我不知道这个问题怎样回答算比较好,但是我还是如实的回答了我参加了华为的面试。
到此腾讯的面试就完成了,总体给我的感觉是比较人性化和比较轻松的。面试官感觉也都是比较和蔼亲切的,一些小的细节真的能够感动人。
好久没有手打那么多字了,这片面经就到此为止吧,可能还有一些不完善的,等我想起来再补充。希望能够给后面的同学带来一些帮助~
来源: http://blog.csdn.net/qq_24369113/article/details/70432185