今天上午去了淘宝北京研发中心参加暑期实习生面试,今天去面试的人很多,因为当初在北邮宣讲,在北大和中科院笔试,所以今天来了很多北邮的人,貌似还有北大的!因为我早上9点钟的面试,所以我们8点钟就出发了,大约8点40左右到的,进入泰安金融中心,映入眼帘的就是淘宝公司北京研发中心,我利用他们填表的时间四处看了看,感觉淘宝的办公环境蛮不错的....
下面就今天我个人面试时,面试官所提的问题简要的说下:
首先第一个环节就是面试官让我用2分钟简要的自我介绍一下,随后我就2两分钟简单的介绍了一下自己,什么那个学校的,什么专业,什么方向,以前做个什么项目,以及以前在公司实习主要负责什么模块等等...
接着面试官开始对照我的简历展开狂轰乱炸,因为我以前在武汉的公司实习用到了C++里面的STL,简历上也写了这点,所以面试官问的第一个问题就是:map和set的区别,map底层是用什么数据结构实现的,要对set进行操作,set必须满足什么条件(刚开始这个问题我没有听明白要问的是什么)后来听清楚了,要问的是对set进行操作,set必须重载什么运算符,第一个问题我答的还不错,就是在map底层用什么数据结构实现的时候,我只回答对了一半,我说可以用哈希表和数组,结果悲剧了,面试官说数组不行,后来出来问了一下其他的人,貌似另外一种可以用平衡二叉树实现。
第二个问题:数据结构中B树和B+树的主要区别,我听到这个问题就疯了,感觉怎么平时没学好的,没注意的知识点都问到了,结果我想了一会儿,感觉自己想不起来,所以就说我不会。接着问了下问随便说下数据结构里面的排序算法,我就说了下快速排序,堆排序,冒泡排序,结果面试官又问我这三个算法的时间复杂度分别是多少,还好,这个问题在考研复习数据结构的时候复习过,所以这个问题也就Pass掉了...
第三个问题:又问我红黑树是什么,我记得红黑树这个名词好熟悉,但是当时又没想起来,结果又悲剧了,等面试完才知道,红黑树就是平衡二叉树。
第四个问题:因为我简历上写了学过人工智能,所以面试官就让我说一下人工智能里面的A*算法属于哪个什么类型的算法,我想了想,因为A*算法是启发式搜索算法,应该属于回溯和局部贪心的结合体,而且还问A*算法求出的解是不是一定是最优解,因为我觉得是是利用了局部贪心的思想,所以我觉得求出来的不一定是最优解结果答得还算不错。还有让我简单的说下遗传算法,嘿嘿,听到这个问题,我很高兴,因为去年做并行计算的时候我专门研究过这个算法。所以回答起来也就很轻松了。
第五个问题:因为简历上写了,我上个并行计算的课程,结果面试官又问我对Hadoop分布式系统了不了解,Hadoop里面的MapReduce是用来干什么的,我听到这个问题就要疯了,因为前几天我们老师向我们介绍了一下这个系统,但是我回去没进一步的研究,结果这个问题悲剧了...
第六个问题:问我对并行计算里面的并行编程熟悉不熟悉,我说去年刚学了,只是了解一些,这个问题就这样带过去了。
第七个问题:开始问我设计模式相关类容了,首先让我说下工厂模式和抽象工厂模式的主要区别和作用,这个问题因为我去年上软件工程时讲设计模式的时候我研究过,所以这个问题答的还不错。接着又问了装饰者模式和适配器模式的主要区别,还好我去年也看过,不过回答的不是很流利...勉强过关
第八个问题:因为我说我刚上完分布式操作系统,结果那个人问我分布式操作系统讲的主要内容,一致性哈希是什么?听到这个问题,我感觉貌似没听说过,就把我们老师当初讲的相关内容在头脑里面整合了一下,答了出来,结果悲剧了,面试官说不对..
接着面试官又问我对数据库熟不熟悉,我说还可以,以前学过,实习的时候也经常用,结果面试官就问我数据库原理中的第一个范式,第二范式,BC范式,以及这些范式分别是用来解决什么问题的,嘿嘿,听到这个问题,我没有慌,因为本科学数据库的时候,这一部分还算学的可以,因此这个问题也pass掉了..
最后给了我一个算法题,让我现场把思路讲给他听,问题是:给n个数,让我用最快的搜索算法(查找算法)找出时间复杂度最小的一对数据,这两个数据相加之和为m,我把我的思路说了一下,结果面试官说我这个方法可以做出来,但是时间复杂度太高了,为O(nlogn),不是最快的,结果给我提示,说用Key-Value,结果我又说了一个,还是不对,时间复杂度还是高了。
最后,面试官让我自为评价一下自己,问我这个人是主动类型的还是被动类型的,我说我是主动类型的,结果他问,如果我在实习期间遇到了问题,我会怎么办,我就说,首先我会查资料,自己尽最大努力解决,当时没想到问公司的同事,结果面试官反问了一句,你不会尝试问下其他的人吗?还好,我刷了一个小聪明,我说我遇到问题首先会自己解决,因为其他的同事也都有自己的事情要忙,时间很宝贵,所以不能轻易的去打扰他们,只有当我在遇到自己实在解决不了的情况下,我会去问下同事,和他们沟通..听了这里,面试官还算满意,刚刚差一点让他误以为我是一个不喜欢沟通的人,后来面试官就简单的问了下我愿意做前端开发还是后端开发,我说都可以,不过我更倾向与前端开发,接着又问我是愿意用java语言还是C++,两个都可以,不过我说我更倾向与C++。后来又简单的问了在实验室最近都干些什么,导师那边有没有什么吗项目,有的话,我参与项目的多少等等,最后就问我什么时候可以过去实习...
今天面试过程中问的问题基本上就是这些了,虽然以前我参加过不少公司的面试,不过那些都是中小型企业,像淘宝这种知名的公司今天还是第一次面试,其实就我自己总结而言,我感觉简历上的项目经验不在于多,但是一定要把自己熟悉的项目,或者是自己的确做过的模块写在上面,那样自己才能对答如流。还有就是要把自己会的东西,很熟的东西写在简历上,千万不要把自己不会的,或者模棱两可的写在上面,这样很容易中标,往往面试官问的就是自己不会的问题...通过今天的面试我也发现了我自己好多薄弱的地方,通过面试来检测自己的学习知识牢固程度,我觉得这样蛮不错,而且还可以积累经验。
今天的面试我本来就是抱着去玩玩的态度和积累经验的态度去的,所以对于能否通过面试,我不是很在乎,不过貌似有一点点希望...嘿嘿,但是我反而不希望我通过,因为我通过了也暑假也去不了,那样反而让我更纠结。以上是我今天面试所遇到问题的简单记录和自己的一点感想...欢迎大家来拍砖!!