阿里巴巴实习生招聘面试经历(java研发工程师)

很不幸,二面面完就结束了今天的面试。
预约的时间是下午4点30分到5点15分的时间段,天气比较闷热,算好时间,下午2点半从学校出发,3点50到达面试酒店,本想买瓶水,想想阿里这么大个公司,面试应该会给我们发瓶水的吧,于是我就没买,事实证明我想多了,没有!签完到去一个厅里面等候,左看看右看看,真没有水!人挺少的,没过几分钟,3点55分,叫到我的号去某某位置上面试,说好的4点半呢,人和人之间这么点信任都没有了吗?于是我气还没喘匀就去到面试的大厅了,,到了一个面试官跟前,坐下来,把我的简历给了他,他边看边让我自我介绍。
一面:整整70分钟!(说好的45分钟呢?人和人之间这点信任都没有了吗?)
1、问:你把java内存模型的架构给我画一下吧?
我: 迟疑了一下,心想,JMM这玩意儿有架构图吗?这可怎么画。面试官看我迟疑,说,那你不画,先说一说吧,我就跟他说了由于什么指令重排序,处理器缓存什么的,不同的系统或者平台有不同的内存模型,使得相同的java程序在不同的处理器架构下的表现不一致啊,java内存模型就是为了在不同的处理器架构和平台下给java程序员提供一致性内存访问的保证的。本以为后面要问到volatile的内存语义,内存屏障,happens-before之类的,没想到面试官来了一句:你完全说错了,你说的这个是java的跨平台特性,不是内存模型,然后说内存模型是什么什么堆、栈之类的。 于是我就懵了,我就想到了原来面试官理解的内存模型就是我理解的java运行时数据区域(程序计数器,虚拟机栈,本地方法栈、java堆,方法区)。我也不敢跟面试官多争论,简单地表达了一下我的观点,然后他就接着问我,那你说说java是如何实现跨平台的。
2、问:说一下HashMap是如何实现的吧
我:就先画了一下结构,再说了一些什么拉链法解决冲突,什么JDK8里面冲突达到一定数量的时候就改用了红黑树的存储等等,然后问我怎么扩容。
3、问:说一下ConcurrentHashMap吧
我:JDK7里面采用的是分段锁机制什么的,读的时候不加锁,写的时候分段加锁,先定位到某个段,然后段里面的操作委托给HashMap等等。然后又说JDK8里面 ConcurrentHashMap有很大变化,从1600多行代码扩充到了6000多行代码。(还好没接着问我JDK8里面是怎么实现的,就昨天晚上瞄了一眼,6000多行代码确实没看下来)
4、问:用他的电脑给我看了一段程序,问我输出结果是什么,跟finally块相关的,考察点就是try块里面return了某个值,finally里面又对该值进行操作了,问最后的结果是什么,我知道return之前会先执行finally块里面的操作,但是操作的是引用类型还是值类型的情况是不一样的。本想把那个代码回忆起来,想想还是算了,应该有人能知道我说的是什么意思。我在回答这道题的时候面试官还“贱贱地“说这道题是有坑的,然后看我踩坑了还很鄙视的说一句:看那么多书连引用类型和值类型都搞不清楚。
5、synchronized相关的,为什么同步块太大会影响性能?不同的线程拥有不同的对象锁,它们之间会有影响吗?如果synchronized加在静态方法上面那么锁指的是什么?(在这个地方又跟面试官就几个名词纠缠了一会儿,我说锁是Class对象,他问是实例还是对象,他说实例是静态的,对象是动态的,我说Class是静态的,对象是动态的,然后他说我们不说类了,用英文,instance和对象,我说instance我理解的就是对象啊,可能他觉得instance是指类,对象就是new出来的对象,也许是我没看过英文版的书吧)于是我接着说,指的是对象,是java虚拟机将一个类的字节码加载进内存之后生成的一个java.lang.Class对象,然后他可能没听明白我说的,还是在问,到底是类还是对象,我其实已经明白他的意思了,然后说,按照您的描述,那就是类。然后他好像满意了,就下一题了。(那明明就是一个Class对象嘛,Class对象不也是对象)
6、问:基本排序和查找相关的,问我有哪些排序和哪些查找算法,(期待让我写个快排什么的,早就憋在心里了,分分钟搞定的事,
然而并没有)他让我描述一下选择排序的过程,就扯了扯,然后他问,你确定这是选择排序吗?我说,我很确定。(强调了“很”字,说的很坚决,他也没说什么,希望别又在理解上面跟我有偏差,我说的那个绝对是纯正的选择排序,如假包换)。
7、写代码,给我5分钟,让我实现一个Stack,底层数据结构用数组。我问他需要支持扩容吗,他说先不用。写完他拿过去一看,可能是我写的太丑了,他又还给我,让我解释一下代码,然后就解释了一下。
8、问我用栈怎么实现队列,我说用2个栈来实现,他问我具体怎么操作,我说我可以想一下吗?他说可以,然后我想了一下,画个图给演示了一下。
9、问我有没有登过网页版微信,问我用手机扫二维码登录是怎么实现的。不会
10、问我知道阻塞队列吗,让我自己实现阻塞队列我会怎么做?我说我会用两种方法来实现,一种是用wait和notify的方式,一种是用Condition条件变量的方式,然后他问怎么用wait和notify实现,我就把思路说了一下。
最后他还问我是什么时候接触编程的,我说大一。我不知道他最后问了我一个这个问题是什么意思
就想起来这么些了,整整70分钟,我已经说的口干舌燥了。面试完,他说,今天的面试结束了,我顿时就懵了,按照我了解的,这就代表没通过的意思,但是我觉得我答的很好,百分之九十都答出来了,而且很多都说的很详细。我一脸疑惑,还是很客气的说谢谢,准备走呢,马上又听到他说,你先到外面等一下,然后我又说好的,谢谢。然后他接着说,准备下一轮吧,我说好的,谢谢。然后就出来了。
出来之后到了等候的大厅,整个人都虚脱了,又左看看,右看看,还是没有水,没过几分钟,元气还没恢复,让我去二面
二面:45分钟。拖着疲惫的身子,走到二面面试官前,一见其人,明显能感受到这就是大神,那拖鞋,那发型,那胡子,此时我已经身心俱疲,硬着头皮坐下来,先自我介绍,问了几个问题,然后说那我们写一个简单的题目吧。他把电脑转过来,让我看其中某个题目,说你做一下这道题吧。
用java统计一个文本文件中出现的频率最高的20个单词。多经典的题目啊。我问能用shell命令来实现吗?他说用java。于是我用了HashMap,都弄到map里面去了之后,我发现我不会排序。集合类里面的排序方法确实没怎么用过,于是我就卡在这里了。然后我跟他说我数据结构选错了,我应该选能排序的map,比如说TreeMap,他说那你接着写,我又不想写了,因为我只是知道TreeMap是怎么一回事,并没有去用过这个TreeMap,而且排序的话它应该是按照key来排序的,我这里的key是单词,并没有什么用,我也不知道该怎么按照后面的value来排序,我也想到可以调用map的entrySet方法得到一个集合,然后我可以对这个集合进行操作,总之我想了很多,但是对一些操作不太熟就没有继续下去了。我觉得这道题目应该很简单啊,没想到我竟然没写出来。其实方法还是有的,map都拿到了,排个序岂能难倒我,大不了再倒腾一下,我冒泡也能给它解决了,但是我实在是不想用这么low的方式,然后我就放弃了,没接着写。然后面试官说,好的,那我们再来写一个简单的题目吧。题目大概意思就是用面向对象的思想实现题目说的那个场景,具体题目就不说了,我并没有太明白题目的意思,感觉可以用一个HashMap的数据结构来实现,然后我就自己照着HashMap的代码写了写,写了点我又停下了,因为我并没有太理解题目的意思,所以我也不知道该怎么写,于是我又放弃了,真要我实现一个HashMap我也是可以写出来的,毕竟源码我看过很多遍了,一是想到有点麻烦,二是想到我可能没正确理解题目的意思,然后我就放弃了,放弃了,弃了,了。两道题目下来,我心理已经被击溃了,然后他问我有没有研究java方面的新技术,问我想从事哪一方面的开发,问我阿里云,淘宝等等这些有没有对哪个比较有意向,这个时候的我意识已经开始模糊了,话也说不清楚了,舌头也捋不顺了,这几个开放性的问题答的我都恨不得抽死自己。
总之,一面给自己打90分,二面给自己打20分
经验就不说了,没什么好的经验
教训就说一下吧:
面试之前带好水(之前牛客上有篇面经提到过要带水的,我没有听那位兄弟的话。也可能是有水我没看到吧)
对于面经里面的题目没必要太看重,每个人遇到的问题肯定是很大不同的,除了一些太常见的题目,比如HashMap,ConcurrenthashMap之类的,就像很多面经里面提到的数据库,网络方面的问题,我这次面试就提都没提这方面的东西。对于面经我们可以从中看看哪些大的方面在面试的过程当中会问的比较多,然后可以在这些方面加强学习。大方面比如说JVM,java多线程,TCP,数据库等等。面经就好比是给我们划了重点,我们需要把相关的知识都好好看一下。感谢那些提供面经的同学,指明了我应该学习的方向,所以在这里也算是反馈一下牛客网,几个月来确实让我学到了很多,希望校招之后能有机会来分享一下成功的面试经历。
虽然失败了,但我觉得该,自己的能力还是有所欠缺的。不管怎么样,这次面试虽然停止了,但是奋斗是不会停止的。
-----------------又想起来一些问题,补充一下---------------
1、ArrayList和LinkedList相关的,问分别在什么情况下使用,以及查找一个元素的话这两个的时间复杂度分别是多少(如果是调用contains(Object  o)方法的话复杂度都是O(n),如果是根据下标进行查找的话ArrayList的时间复杂度是O(1),LinkedList是O(n))。
2、java 线程有哪些状态,这些状态之间是如何转化的。
3、linux命令相关的。将当前目录下所有以“.txt”结尾的文件打印出来,再追问,除了“.txt”再加上“.abc”结尾的也打印出来。
4、有两个线程A和B,如果一个线程要等另一个线程执行完,该怎么做。(我说在ThreadA中调用ThreadB.join()方法,二面面试官问我入参呢?我说我见过的join方法没有要传入参的啊,可能面试官记错了,他也没说什么。被这么一搞我又虚了,面试官怎么能质疑我呢,我好怕。后来我回来看了一下Thread类的源码,里面有三个join方法,分别是join();  join(long millis); join(long millis, int nanos),后面两个方法含义是一样的,只不过是精度不同,都是指等待一定时间,而不带参数的join方法里面直接调用的是join(0),即调用了带参的join方法,该方法如果参数是0的话就代表一直等待下去直到所等待的那个线程执行完,所以我推断面试官问我入参可能是想让我说入参为0,其实入参为0和没有参数含义是一样的。 )
5、List接口和Set接口的区别,(说了2个区别,一直被二面面试官说“还有还有”,那种淡定的语气,我又开始慌了,心想果然是大神,不好糊弄啊)
6、Spring相关的,问我要把一个组件注入到Spring中该怎么做?我说可以用配置文件和注解的方式,他问我有哪些注解,我说@Controller,@Service等等,他说我说的都是Spring MVC里面的。然后我就没说话,我也不知道面试官想让我说的是什么。又被质疑,又慌了。
7、Cookie和Session的区别
8、如何获取一个网站每天的访问用户数
9、自己定义的类如何实现hashCode方法
10、equals方法和hashCode方法相关的,问如果要向集合中添加自定义类的对象该怎么做?(在类中重写equals方法和hashCode方法)

#阿里巴巴##Java工程师#
全部评论
加油加油!多面几次,经验很重要
点赞 回复 分享
发布于 2016-05-13 09:36
写的好!顶!!二面那情况逮谁谁崩。。只能说还是要点运气的。别虚,你很强!!
点赞 回复 分享
发布于 2016-05-13 22:36
面试的内容可不止这些,我面的时候还考计算机网络,JAVA网络编程,数据库,也就框架问得少
点赞 回复 分享
发布于 2016-05-14 08:30
其实是有水的  还有免费的零食
点赞 回复 分享
发布于 2016-05-14 10:23
想请教楼主一个问题:第一个附加题 ArrayList查找元素的时间复杂度为啥是O(n)?
点赞 回复 分享
发布于 2016-05-18 14:09
等候室门口是有水的吧
点赞 回复 分享
发布于 2016-05-19 16:47
首先要感谢LZ辛苦总结的珍贵面经;LZ还是很棒的。 对于LZ二面中遇到的某个问题答不上来的情况,我感觉大伙都遇到过,LZ也不用太在乎。也听说过二面貌似是压力面,内容确实是会比较深入一些。个人理解是如果实现真有些困难时,可以把自己的思路述说出来,应该面试官也能接受吧。
点赞 回复 分享
发布于 2016-05-19 22:10
已经很厉害了
点赞 回复 分享
发布于 2016-05-13 01:19
不错 但是没问你项目吗
点赞 回复 分享
发布于 2016-05-13 03:45
问的比较细。不过好好准备应该可以的。今年阿里招人不多。压力很大啊 。
点赞 回复 分享
发布于 2016-05-13 10:26
LZ坐标哪儿
点赞 回复 分享
发布于 2016-05-13 10:28
觉得水的问题也有锅。 恩,求人不如求己,以后记得带水么么哒。
点赞 回复 分享
发布于 2016-05-13 10:31
楼主的面经的写的带点小幽默,读起来不枯燥。很棒!
点赞 回复 分享
发布于 2016-05-13 15:17
可以看出楼主看的书很多,基础也不错,只是有些细节没做好,可能给面试官留下眼高手低的印象,建议平时多敲敲代码,多练练算法什么的
点赞 回复 分享
发布于 2016-05-13 22:22
在哪面的,我在哈尔滨面的,有零食,有饮料。虽然我没有吃喝,哈哈。
点赞 回复 分享
发布于 2016-05-13 23:14
另外谁知道阿里面试什么时间出结果啊,hr跟我说一天出结果。都两天了,招聘官网还蹦了一天,到现在还不知道结果。睡不好啊
点赞 回复 分享
发布于 2016-05-13 23:16
我也被面的奔溃了,楼主加油
点赞 回复 分享
发布于 2016-05-14 22:40
谢谢分享
点赞 回复 分享
发布于 2016-05-15 15:01
楼主是本科吗??
点赞 回复 分享
发布于 2016-05-15 15:32
感谢楼主提供的面经
点赞 回复 分享
发布于 2016-05-15 15:34

相关推荐

球球别再泡了:坏,我单9要了14
点赞 评论 收藏
分享
offer多多的六边形战士很无语:看了你的博客,感觉挺不错的,可以把你的访问量和粉丝数在简历里提一下,闪光点(仅个人意见)
点赞 评论 收藏
分享
33 287 评论
分享
牛客网
牛客企业服务