2015年阿里巴巴实习面试经验

        java研发工程师,通过实习校招顺利拿到实习offer,这次通过笔试的有1000多人,录取了130人左右。
自我介绍
       我是某985院校计算机学院的一名硕士,本科也是毕业于该校。读书期间,没有编程大赛获奖经历,也没有很好的项目经历,也没有获得国奖。本科期间成绩平平,基础很一般,考研第一次也没上,二战高分过线。研究生读的是专硕,没有研究方向,实验室也很一般,项目没有感觉学到了什么东西。我是搞java研发的,都是自学,没有参加开源项目,也不了解SSH,也不熟悉Linux。
找实习     
       对于一名专硕,时间有限,所以找实习、找工作,我准备得比较早,开学前6月份进实验室就开始准备找实习、找工作,上学期一直在看thinking in java,看的很细,做了很多笔记,把所有的例子都写了一遍,同时还做了一些oj,看了《编程之美》。下学期开学就准备找实习,由于是二战,对操作系统、数据结构、网络等知识(书本上)记得很清楚,所以我只看了《java面试宝典》,另外百度了很多java面试题,数据库面试题,并且自己做了很详细的笔记,平时都在复习。
       3月份是内推,阿里巴巴我一共内推了4次,4各部门,结果都是一样的,全部一面挂掉。后面实习校招还找了腾讯,趋势科技,蘑菇街,笔试全国,但是一面全挂。再后来就参加了阿里巴巴的在线笔试,通过后预约了面试时间,然后就开始准备那次面试。之前虽然面试都挂了,但是我都认真的总结了挂的原因,对于里面涉及的知识点,我也全部都查了并且做笔记整理了。在面试开始之前,我把我能想到的,能找到的面试资料都认真的复习了,下面是实习校招面试的情况。
        声明:有些问题的回答是我个人的答案,我也不知道对错,希望不要给你带来误导
一面
       由阿里的人员把我带到面试官桌子前面,坐下之后,我把简历交给面试官,然后面试官说了一下面试的流程,说有三面,第一面由他面试,通过之后就马上二面,二面通过了还有HR面(后来发现不是这样的,我只有2面,二面是2个面试官,一个问技术一个是HR,就是二三面一起进行),然后叫我做自我介绍。
       自我介绍:按照简历上面信息的顺序来介绍自己,我的先是个人信息,然后是本科以及研究生的入学时间专业,接着说自己掌握的技能,然后就是项目,说项目的时候,说着说着,面试官就叫我停,然后问项目的东西,刚开始有点紧张,说话好快,自己思路也乱了,可能就没说清楚,然后面试官给我一张纸,叫我画一下流程,画好给他解释清楚后,他问了几个项目的问题,问项目中你主要做什么,做了多久,整个项目的代码量有多大,你写了多少代码,我说一万多行。面试官说我代码量太少,然后我说除了做项目,我平时自学java很多,写了好多程序。然后他就开始问java的问题,第一个问题是写出java.lang.Object中所有的方法,然后我马上写了hashcode()、equal(),toString()、3个wait()、notify()、notifyAll()、finalize()、getClass()(当时还在想是getClass还是getName,自言自语的说出来了,然后面试官笑着说还有个clone()),这个问题就算结束了。然后他又问了看过了哪些java的源码,我说看了Map,List之类的,还看过String的一些源码,他就马上叫我跟他讲讲hashMap的底层是实现,我就画出来了那个拉链法(貌似java的hashMap是这个方法)解决冲突的的散列表,说散列表是一个Node类型的table数组,每个数组元素也是一个链表的首节点,对于一个键值对,通过计算key的hashcode映射到table数组中,对于不同的值一般是不同的下标,对于同样的hashcode,就形成一个链表查找的时候先是计算hashcode,然后查找在table中的下标,找到后在链表中查找。这个说完,他又问了hashMap扩容,我说hashMap默认容量是16,每次扩容容量乘2,先开辟新的空间,然后复制过去。然后他又问了,如果hash的冲突碰撞太多会怎样,我说会影响查找性能,然后给他画了怎样影响,接着他又问是不是线程安全的。这个问完他又问了反射的东西,我详细地说了两种反射创建新对象的方法。接着他叫我说说java里面的runtime exception,然后我跟他讲了一些出现runtime exception的情况,还说对于这些异常,一般不去处理。这些回答完,他都比较满意,然后看着我简历随口说了一句,java里面原生类型int多大,可能太紧张我很快的说到32字节,o(╯□╰)o,我马上改口说说错了是32位。面试官笑着说,你吓到我了,不过我问得问题你都回答的很快,还不错。java的知识基本问完了,然后问我知不知道一些开源的框架如SSH,这是我的硬伤,声音很小的说没有。他也没继续问下去。接着他又问我网络方面的东西,问在网络五层结构中,ARP协议属于哪一层,于是我在纸上写出来了5层(这时候他还是盯着简历),可能真是太紧张,我把应用层写成了用户层,然后他说你先说说哪五层,说了之后我说应该是网络层和传输层中的一层,然后他笑了,我就随便说了一个(最后知道错了),然后说ARP协议是干什么的,又叫我说说解析的过程,我先说了IP地址最长前缀匹配的,然后真是记不起来,卡住了,他就说你们平时没研究这么细是吧,我马上说是的,但是我们对TCP研究的多一些。然后他又问我http协议是不是有状态的,这个我有回答错了,囧,然后我又说了http1.0和http1.1的区别。网络知识感觉没java基础知识回答得好,这个过了之后,转向算法了。第一个算法是矩阵的就地逆置,这个好说,第二个是堆排序,给了一组数据,说说堆排序的过程,这个里面也出了一点点问题,主要是交换的时候,但是大部分都是对的,讲的也清晰,接着他又问了堆排序的那棵树是不是AVL树,我说是的,然后我说从原理上讲,堆排序是对数组的操作,双亲的下标关系是通过AVL树的结构得到的,接着他又问,那怎样判断一棵树是不是二叉平衡树,叫我写代码,我说我先想想,他说可以,那你说打算采用什么思路,然后我说递归,就是是写了,把递归程序写好(判断高度的没写,思路很简单)后,我就跟他讲了思路,然后我说还要记录一下高度,他说思路对了就可以。接着他还问我,每天花多少时间做项目,多少时间学习?我说50%以上的时间都在自学。那如果你做的项目不是自己喜欢做的怎么办呢?这个问题很好回答,因为我做的就是不感兴趣的东西(这么说他笑了),但是我还是会把它做好,作为程序员,就要尽量少的Bug。然后他问我,你了解java虚拟机吗?我说了解,然后他问平时遇到了哪些oom,我说我让每个区域都溢出过,然后简单讲了每个区域怎么溢出,然后他就问我堆溢出的时候怎样去处理的,我说运行的时候设置参数,生成堆转储快照文件,然后去分析这个文件,他说你用什么分析的,我说eclipse memory analyzer,然后我就说了怎样使用,还给他画了对象引用的大小的计算(shallow size、retained size)之类的。然后他说,如果那jar包里面的对象出现了oom该怎么办,然后就随便说自己的想法,JVM方面就问完了。然后他问数据库查询中,where条件后面A != B 与 A > B哪个效率高,有索引,然后我就说A>B,跟他说索引是B树或者B+树,A != B会放弃索引(这句话不严谨),相当于查找失败的情况,而A > B会。。。。这个回答完他就问我有没有什么问题想问他,问了几个之后,整个过程50分钟,就出来等结果,10分钟出结果,结果说准备二面,然后就等着二面叫我。
      感觉一面面试官人很好,问的问题都是按照简历上面来的,而且面试过程气氛都不错。
二面
       二面是两个面试官,一个是高技术的,一个是HR。二面感觉人少多了,就几组面试官。
       二面一进来也是自我介绍,说了好多,感觉要没话说的时候,面试官开始问了,全部都是项目的问题(我的项目不好,跟找实习没关系),问项目多少人开发?你做哪个模块?为什么你做那个模块?详细的说一些业务流程,为什么要使用XXX编译器?项目做出来多少人使用?我的项目中使用的数据库的存储过程,他问了,为什么要使用存储过程?存储过程又有哪些问题呢?当你写完一个很长(天!他说几千行的)的存储过程的时候,你想过了怎么样去优化、怎样去设计效率跟高吗?在你们做那个项目之后,你想过哪些方法可以让你们那个项目效果更好吗?做完你那个项目,你觉得你从中学到了什么吗?最大的收获是什么?我看你还有个项目用了C#,那你跟我说说C#和java的区别吧。说说字节码class文件是什么东西,java文件是怎么运行的,这点问的非常细。android跟java什么关系?可不可以不要android只要java(这个问题真奇葩)?你还了解JVM是吧,那你说说堆更加细的分区吧(这个是唯一一个具体的,我能回答的问题),你看过什么java书籍(thinking in java),你说说为什么java里面所有的类都直接或者间接继承Object类,这个那个书上讲过吧,我通过我自己的理解说了一些。还为了我了解开源框架参加过开源项目没有(泪。。。)。他问问题当中,HR时不时也问一些问题,穿插着。然后HR问我,我看你之前参加过内推,你觉得你为什么会失败,我说了几点自己的原因(技术不够、项目不好),HR说就这些吗?我说,恩(也不该只觉得自己差,还要分析下客观原因的)。然后HR又问,我看你本科成绩中等,你能解释下吗?(我本科实验班,小班排名,最后还刷了不少人,跟他说了,他理解了),那你研究生为什么也是中等呢?(这个为什么这么重要啊??填写的时候没很在意),我说我填简历的时候,成绩只出来几门,本着诚信的原则,我不敢浮夸自己,所以写中等。那现在出来了吗?我说大部分都出来了,他说那排名呢?我想了想,他说有没有前30%?我说有前20%(这个确实也都属实)。然后他问,除了内推受打击,你还收到了什么其他的打击?我说了二战的时候,因为我一战是单科不过线,二战压力很大什么的。中间我说了一句话:越努力,越幸运(这句话跟技术面试官产生了共鸣!!)。我说现在我平时就经常看书,写代码,很努力,就是有之前的经验。还问了看过英文书没有之类的。HR的问题就问完了,接着叫我问他们问题,我就问了技术的面试官做什么,为什么不问我技术方面的东西。他说,当然不问技术啊,这些都是一面问的问题,还跟我说我们对应届生要求不是很高,也不是考察你会多少东西,而是对于一个你不曾遇到过的很大的问题你的解决方式,这也是一种能力。然后还说我很想去阿里巴巴工作,问了他的建议。他说我技术不广但是还蛮深的,叫我多看点书,多学点其他的。还说就像你说的:越努力,越幸运。在他面试的人当中,90%的都说自己看过thinking in java,你要从别人当中脱颖而出,就要多看一点只有10%(甚至更少)的人看的书,而且你内推挂了也不能怪我们要求严格。。。。说完,我接着说,不管你们要求多严格,你们最终都会招到那些人,去不了也是实力不够。他马上说是的,确实这样。然后我说,我就是要努力的成为你们想要的那一批人,如果这次挂了,我也会好好准备秋天的招聘的。接着他们就说,今天的面试就到此为止吧。
       二面问的问题都很抽象,我也把我能说的能想的都说了,整个过程也没什么停顿,我感觉面的还可以,出来就等结果,整个过程接近1小时,出来10分钟后收到短信说今天面试结束,然后回去等结果。
       回去之后,心里还是有点紧张,在网上去查结果还是面试中,就只有等了(听说,浏览器内审查元素可以看到状态,一个data-reldata变量)。第二天上午,收到短信和邮件,说通过全部面试,邀请参加圆桌沙龙,就是分部门,了解文化之类的。
总结
     为了这次面试准备了好久,感觉前面的内推对我有很大帮助,让我习惯了阿里面试的过程,还学到了很多的知识。从面试中,我觉得有几点要注意的:1.基础知识,Java的基础知识,一些源码,JVM的相关知识,算法必须得了解一些,网络要好好看看,还有就是数据库知识也很重要。2.项目,我的项目对找工作基本是没有任何帮助的,但是也要对项目很熟悉,里面的原理也要很清楚的知道。
      这次面试顺利的通过了,我觉得还是很大的运气成分,问的大部分问题基本上是我会有。建议大家多看点书,多学习,多写写代码。
     最后,希望写的能给你带来帮助,希望大家都能拿到好的offer!
  • 2
    点赞
  • 1
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值