又一年实习招聘陆续开始了,这里分享一下我在2013年实习招聘和秋季招聘中的一些面试经历,希望能对找工作的同学有所帮助。2013年面试过的公司有蘑菇街、网易游戏、阿里巴巴、腾讯、百度、大众点评、人人网、雅虎(北研)、WAP。
一、蘑菇街
一面(实习)
现场面试。先问了一下实习经历以及研究生期间做的项目,面试前一定要好好回顾一下这些。因为我申请的是搜索引擎和存储方向,就问了我对大数据的理解。还问了一下为什么读研,千万别说人家都读我就跟着读,要从深层次上分析读研的优势,让面试官觉得你是经过深思熟虑选择读研的。然后出了个小算法题,汉诺塔递归,算法虽然简单,但是实现的漂亮很难,代码风格、可读性、可扩展性、测试用例等等都要好好考虑。然后又问了些平时关注什么技术,虽然不是直接技术问题,但是这类问题也不能忽视,这些问题可以反映出你的知识面、对技术的热情等等,这也是公司很看重的。后来又回过头来问了一点项目,问如果你现在再架构一次,你会怎么做等等,所以,做过的项目不仅要知道项目的难点在哪,也要知道当时做项目时的不足等等。整个过程差不多也就半小时,总体表现很差。
二面(实习)
现场面试。面试内容印象不深了,不是纯技术面试,问一些性格了、团队合作、实习时间、以后是否留在蘑菇街等等。
二面后就没消息了,可能总体面试结果不好,也可能面试官觉得我以后不是很想在蘑菇街工作,所以,想要拿到offer一定要表现出自己的诚意,比如为什么选择该公司,能够分析出公司的优势、竞争力等等。
二、网易游戏
一面(实习)
电话面试,HR面,这个有点没想到。
二面(实习)
现场面试,技术面。
三面(实习)
现场面试,技术面。
现场技术面试都是40分钟左右。这里我就不方便透漏具体的面试题了。考察知识涉及到c++、操作系统、算法、图形学、数学等等,考察得很全面。
最后拿到实习offer,在线游戏部门,并通过实习拿到秋招offer。
三、阿里巴巴
一面(实习)
电话面试。首先问了一下之前在淘宝实习的情况。实习有什么感想,实习接触的东西和学校接触的有什么区别,等等。项目中你遇到的最难的事情是什么。选择开源实现时,如何评估。后面就是基础技术。c++中虚函数是怎样实现的。为什么要有虚函数机制。什么情况会使用多态机制。string的内存怎么实现的,长度的动态变化怎么处理,为什么两倍扩展。string a; string b = a;这时会不会有内存拷贝相关的东西。如果你自己设计一个类,管理可变长度的字符串,你怎样考虑优化。引用计数的实现,效率。STL库了解的多吗。map是怎么实现的。iterator++和++iterator区别,哪种效率高。喜欢研究还是工程。实习时间问题。程序的编译时间和什么相关。怎么样减少编译文件依赖。.h和.cpp有什么区别。inline问题。
二面(实习)
现场面试。技术总监面的。聊了些项目,问了些c++底层实现,垃圾收集,搜索引擎等,写了个简单的代码。然后另一个技术总监,问了下GFS,外部排序问题,内存管理等。
三面(实习)
现场面试。前两面是所应聘部门的面试,这一面是阿里巴巴集团统一的面试。应该也是个总监。记得也不多了,问的比较抽象比较底层的东西,数据库各种索引优缺点,红黑树,STL的设计是面向函数还是面向对象以及为什么这样设计,函数式编程等等。
拿到实习offer,阿里云部门。
终面(秋招)
虽然没有去阿里实习,但是当时拿到实习offer的同学秋招可以直接进入终面,还是可以省很多精力的。
终面基本都是一个技术术总监,同时旁边还有一名HR。先是技术面试,同时HR也会在旁边观察你的表现吧,最后HR也会问几个问题。先是介绍一下自己的优势,以及今后的职业规划,这样的问题也应该好好准备,要让面试官觉得你是个有目标有追求的人;介绍一下简历上提到的浙大的PAT考试认证;谈一下在网易实习的项目中的难点,项目一定要好好回顾,自己负责的东西,项目难点什么的;介绍一下常用的垃圾收集算法;
一个算法题,一个农夫,一只狼,一只羊,一棵白菜过河的问题。。。大家一般都见过这个,如何用写程序解这个问题;讲一下堆排序的思想;讲一下动态规划的思想,并举例子解释;阐述一下c++内存对象模型中涉及到的一些关键问题;介绍一下MapReduce的思想;介绍一下搜索引擎的实现;给你两三个月的时间,如何去学习一门技术。HR问题:说一下自己的优点,以及你与周围的人相比的优点、不足。选择一个公司你会考虑哪些因素。
拿到秋招offer,阿里云部门。
四、腾讯
一面(实习)
现场面试。时间比较紧张,每人只有半个小时,连自我介绍都没有。第一个问题解释一下大小端模式,并写出判断系统是大端还是小端的代码。接下来是一段代码判断有没有问题,一个函数返回了局部变量的地址,并在外面访问了。然后是virtual函数底层实现机制。然后是sizeof问题,有虚函数的类的大小,64位情况下的大小等等。然后问了一点点网络的,使用UDP传输文件,这个主要是要保证可靠性,在软件层使用类似TCP的机制,如在UDP包中添加唯一编号,需要接收端确认等,接收端要对数据包排序等。解释一下页式内存管理。然后问取一个变量的地址是虚拟地址还是物理地址,显然是虚拟地址,不多解释。最后是一个代码实现,用一个数组来实现一个链表插入删除查找等功能。最后问了一下笔试卷子中的题目。总之,时间太紧。
二面(实习)
现场面试。笔试和一面表现还可以,二面面试官就没怎么问,随便聊了一下,腾讯招聘基本上是哪个部门要人,就由哪个部门的人面试。我的面试官是腾讯游戏的。
三面(实习)
现场面试,HR面试。印象不深了。为什么选择腾讯,有没有其他offer,期望薪水多少等等。
拿到实习offer,腾讯游戏部门。
一面(秋招)
现场面试。记不清了。好像主要谈了些项目。
二面(秋招)
现场面试。记不清了。面的时间不是很长,聊了些项目。
三面(秋招)
现场面试。HR面。记不清了。讨论期望薪水什么的。
拿到秋招offer,腾讯游戏部门。
五、百度
一面(提前批)
电话面试。
先是自我介绍。如何返回链表的第四分之一个结点。网络协议模型几层?链路层是做什么的?如何判断两个机器属于同一个子网络?什么场景下需要判断两个机器是否属于同一个子网络?一个数组,给出一个数,找出数组中哪两个元素的和等于该数。给出一个词典,找出词典里所有的变位词(anagram),分析时间复杂度。堆和栈的区别。大量的new会导致什么问题?堆内存如何管理内存?给出两个文件,每个文件50亿URL,每个URL64个字节。找出两个文件中共同的URL。磁盘上的文件不小心删除了,如何找回来?能恢复文件名吗?最后就是问还有什么问题需要问面试官。
二面(提前批)
电话面试。自我介绍。看了哪些书?
class A
{
public:
int a;
staticint b;
voidf1();
staticvoid f2();
virtualvoid f3();
};
这个类的大小是多大?static成员变量如何存储的?static成员函数和普通函数有什么区别?百度搜索提示功能如何实现?一个整数数组,长度为n,每个数的范围都是1~n+2,每个数字不重复,乱序的,求缺失的两个数组。TCP的拥塞窗口功能。TCP的三次握手过程,为什么需要三次握手,TCP如何实现可靠通信。数据库的索引,各种索引的特点。B+树的插入过程。一个包含很多单词的文件,每行一个单词,查找一个单词是否在这个文件中。有什么问题需要问面试官。
三面(提前批)
电话面试。自我介绍。看哪些书。auto_ptr功能,为什么要使用它。介绍c++的类型转换,为什么要使用。
讲一下垃圾收集,Java的垃圾收集是怎样的。介绍一下Map-Reduce,中间会有哪些问题,一般怎样解决MFC的CButton如何根据自己的需要的样式重绘。数据库索引,为什么需要索引,常用的索引有哪些,聚簇索引是怎样的。如何判断一个链表是否有环。介绍一下实习经历。为什么选择百度。你的职业规划是怎样的,对哪些技术感兴趣。你用过的百度产品有哪些,哪个产品感兴趣。你觉得自己有什么优势能够进入到百度。你觉得你哪些地方需要去提升。
到9月初收到秋招正式offer,第一个秋招offer。
六、雅虎(北研)
一面(秋招)
先问了一下笔试题中的一个算法题,题目是这样的,两个长度相等的字符串,每个字符串中删掉一个字符,剩下的字符顺序不变,如果这样操作后得到的两个结果相同,就说是原来的两个字符串是相似的,实现函数bool isSimilar(char A[], char B[], int length);笔试时直接用的LCS,复杂度是O(n^2)。后来跟同学讨论得知了一个O(n)的算法,给面试官说了一下。笔试题回去之后一定要好好讨论总结一下,如果是算法题,基本上面试都会再问到的。看我简历上写的c++很好,下面就问了一些c++的问题。static有哪些作用、虚函数相关的一些东西、构造函数是否可以为虚函数、析构函数是否可以为虚函数、静态成员函数是否可以为虚函数等等,以及虚函数带来的sizeof问题等等。问了一下进程与线程的比较、以及多进程与多线程的比较、多进程与多线程比较。然后问了一个算法题,已知一个randM函数,可以随机返回1~M中的一个数实现函数int randN(int n)。写代码一定要注意各种细节。
二面(秋招)
也是先问了一下笔试的算法题,最后两个都问了。最后一题是给出一个字符串求所有与该字符串similar的个数,面试官觉得我的代码有点问题,我就解释了一下。又问了一下那个isSimilar,我说有O(n)的算法,然后让我写代码实现O(N)的isSimilar函数,这个没什么问题。面试官又看了我之前LCS的代码,里面有小错误,居然还有两处,惭愧。然后问了一下c++,画图说明c++虚函数的实现机制、虚表的编译器实现、虚函数的开销等等。问了一下垃圾收集、搜索引擎、B+树。简单问了一下MapReduce。问了一点点项目,以及与GPU绘制相关的一些东西,如CPU与GPU功能的区别等等。
三面(秋招)
印象不是很深刻了,一开始好像也问c++了,具体记不太清了,记得问了一个字符串哈希函数有哪几种方式,然后举例说明一下MapReduce工作原理。后面主要是一个负载均衡的系统设计问题。比如有服务器S1,S2,S3,S4有客户端c1,c2,c3。每个客户端和服务器的通信只有一个接口,int send(event),向服务器发送一个请求,服务器处理请求返回处理结果。问题:1)当有服务器down掉的时候,要保证客户端的请求仍能够被处理2)当有服务器由down恢复正常工作的时候,客户端要能知道3)服务器的负载要满足一定的比例,比如1:2:3:4。这个题讨论了比较多的时间。
四面(秋招)
先是英文自我介绍,我英语烂的让面试官很无语。后面就是中文聊天了。问了一下项目,项目如何改进等等。问了一下MapReduce原理。问了一个海量数据处理问题,假设雅虎网站上一天中有1000万个不同的广告共投放了100亿次,找出投放次数最多的100个广告,这个应该大家都见过的。问了一下与周围同学相比你的优点和缺点是什么,以后的职业规划。然后就是聊一些雅虎的东西了,面试官说了很多,我就一直在听。结束了,让回来等通知。
开始收到电话通知面试通过,等待美国总部审核。后来一直没消息了。应该是面试表现很普通,当备胎了。
七、大众点评
一面(秋招)
现场面试。先让写了一个c++引用计数的类。然后问了些c++问题,项目。具体的记得不多了。
二面(秋招)
现场面试。大部分时间面试官就是跟我闲谈,聊一些我已经收到的offer的情况。
结果被刷,不知道是不是因为自己说的期望薪水太高。
八、人人网
印象不深了,主要是考察算法,感觉面试官都是搞过acm似的。拿到offer。
九、WAP
英语面试,我英语很烂,好像日本面试官英语也不是很好,面试过程中很少有交谈,就是现场写代码,面试官旁边有很多打印好的算法题目,写得正确、越多越好。只拿到实习offer。