人工智慧

【面小易-面经01】阿里巴巴Java开发工程师面试总结

转眼间,又到了 “金九银十” 的招聘季,各位需要找工作的小伙伴们是不是已经摩拳擦掌,跃跃欲试了呢?想必对于大家而言,能够进入像阿里巴巴这样的互联网巨头是一件十分令人羡慕的事情,单纯是想想或许都能够从梦中笑醒。但是想要进入阿里巴巴,光是“仰望星空”还远远不够,必须要脚踏实地地完善自己。当然了,必然也少不了要学习一些面试技巧。

此时,就是我面小易登场的时候咯!先来一段定场词:“我是面小易,机智又聪明。面试不眨眼,Offer不手软。”

接下来的一段日子里,就让我面小易和各位一起学习各位前辈总结的真实面试经验,为大家的“金九银十”求职之路保驾护航。

今天和大家分享的这篇面试经验来自一个自动化控制专业的同学,他学习Java完全是因为兴趣,他所投递的岗位是阿里巴巴的Java开发工程师,而且这是他人生中的第一次面试,就让我们一起来看看他的面试经历吧。

以下为正文

第一面

第一天下午三点左右,当时刚好在教研室自习时,我接到一个杭州打来的电话,阿里的面试官简单说明来由,就问我是否方便面试,我说可以,然后让我先自我介绍。说实话,阿里是我正式接到的第一个面试,所以根本没有准备。我就简单地介绍了自己,然后把项目提了一下,果然面试官会针对他感兴趣的东西问,面试官问了我算法大赛的情况和项目情况,但都只是简单的说明了一下整个思路,并未深入,然后问了几个Java基础问题。第一面大约用了30分钟左右,面试官就说,那今天就到这里了,于是结束了第一面。

对于第一面而言,感觉更多的是宽泛地了解Java知识面。我还是比较幸运的,所问的几个问题我都大概的都知道一些,虽然回答的并不是很好,但是每一次面试的问题都记录下来,后续再学习。

面小易说:对于第一面而言,不慌不忙很重要,阿里的面试官总喜欢“搞突击”,所以一旦准备投阿里,就需要准备好面试的开场白,这样才能不慌张。

第二面

第二面来的很快,第二天晚上八点多就接到了面试电话。面试官人很好,没有再自我介绍,直接切入主题,针对我的项目开始具体问,我说做的一个模仿QQ聊天的软件,他问我你有没有考虑过性能的问题,如果出现卡顿,你会怎么解决。说实话,做这个项目纯练手的,未考虑到上线测试。于是我说,我自己做着自己练习的,模仿着功能,自己纯手写的,未考虑到这些。我问面试官性能方面的问题,可以具体一点么?面试官问我,如果你在传送文件时卡住,还想发送聊天信息,你怎么解决,我说那就重新开启一条线程处理,将聊天与发送文件线程隔离开,互不影响。面试官说好,我知道了,就没再深入下去。

后面,针对这个问题,我私下找了解决方案,NIO非阻塞编程以及Reactor单线程模型,这个可以去网上搜集资料看看,这些都是解决多线程通信的问题。私下了解到,其实阿里也在用Netty技术,这门技术也是基于Reactor实现的通信技术,它是用来处理大并发,大容量的通信技术,所以阿里其实面的每一个问题,都是有针对性的,在这一点上,我没有答到点子上,不够完善,应该是没有给出面试官想要的答案,但是面试官没有在这上面为难我,放我进去了三面,还有针对算法大赛的提问,因为是自身的项目,所以说的很啰嗦吧,面试官听完没有深入追问,可能只是想听我的表述能力吧,看看我的思路。还有项目就不重复叙述了,与各位项目实在是小巫见大巫了,大家好好准备自己的项目就可以了,肯定是会提问的。

面小易说:对于项目问题,一定要有一说一,不需要夸大,因为在学校做的项目和在企业做的项目而言,根本算不上什么。即使自己做的很简单,但只要你有更多的想法和思路,都可以探讨。但是要切记不要夸大自己的项目,一定要实事求是。

第三面

第三面隔得就比较久了,大约过了一个星期才来电话。上来面试官就跟我说,时间比较紧,我们就长话短说,你随时可以打断我,我说好的,然后就开始了,这次面试官问了一些基础问题。然后开始针对实际问题提问,第一个比较简单,如果有一组重复数字,我要你找出来,你怎么解决,这个我当时就说HashSet集合,可以去重复,然后我又问,是要找出重复数字?面试官说是的,然后我就说用HashMap,将数字作为Key,出现次数作为value,然后再遍历,找出value大于1的Key,就是所要答案了,面试官说好的,然后又问我,有一个比赛,你去商场购物,给你一个购物车,你如何在商场中,在装满购物车的情况下实现价值最大,装不下的就不可以装,当时我就迷糊了,但是仔细一想,利用动态规划可以做,贪心算法限制条件下结果不准确,具体的,各位私下看看,网上有很多资料,然后面试官好像挺急的,最后面下来17分钟,结束了第三面。

面小易说:这位同学在第三面就遇到了算法面试咯,大家在面试之前一定要准备好高频问题的分析。比如面试官问题的购物车问题,其实就是一个背包问题嘛。

第四面

第四面也是隔了一个星期,当时跟学弟在教研室。说真的,苦等真的是劳神,有好几晚我都没睡好,不晓得电话什么时候打来。每天早九点待在教研室,晚十点多回宿舍,一刻不敢掉以轻心。面试完就开始总结、学习、准备,每天下午就最难熬了,电话一刻不离手,生怕错过。

废话说多了,第四个电话北京打来的,开始还不想接,担心是骚扰电话,但还是接了。没想到对方上来就问是某某某吧,我说是,然后他说是阿里巴巴的,可以面试吗,我说可以,然后就开始面试了。又一次自我介绍,然后问我研究生的专业课程,为什么没有做本专业而是转Java,然后我简单说了下,然后面试官针对性的开始提问。从面试官的讲话就能听出他不简单,说话流利而简练,毫不含糊,应该是个大牛。面试官问我对于分布式了解么,我说不了解。

后面你就知道,分布式对于阿里完全就是灵魂的存在。阿里构架就是基于分布式构架搭建的框,可惜我知道的太晚,一个菜鸟,对于阿里内部知之甚少,准备的全是基础,对于新技术的了解真的太局限了,计算机的可能会接触分布式,搭建局域网,刚我还在看阿里的技术演化呢,可惜太年轻,本以为接近,却又深知自身的不足。

问我,你知道消息队列么,我又一脸懵,我说我只知道阻塞队列,在多线程里用到的,消息队列没有用过。而消息队列也是解决高并发消息传递的技术,类似缓存一样,将消息存入队列,然后供消费者异步调用,解决阻塞,以及秒杀采用的也是消息队列技术。所以说,很多新技术你不知道,这才是遗憾的地方。

面试官问我,你说一下Java 8新特性吧,我支支吾吾只知道lambda表达式,简单复述了一下,其他的知之甚少,用的不多,我又没能回答出来。

面小易说:这位同学在第四面发挥的不是很好,对于一些超出Java语言本身的技术并不是很了解,但是因为他本专业不是计算机和软件,因此也情有可原。各位将要面试Java开发的小伙伴们一定要吸取教训哦!

第五面

没有等来HR面,已回绝。隔了16天收到的消息,确认了。这一个多月总算过去了,有点小伤心,可是又庆幸自己历经四面。说实话,对于我已经算是成功了,一方面,感慨自己的幸运,一方面,也深知自己的不足。同时,更是激发了我对于技术的热爱,也希望大家继续完成我未完成的梦。

面小易说:这位同学虽然最终面试失败了,但是对于自己而言,他已然是一个胜利者。只要你有对于技术的热爱,不断查漏补缺,一定能够拿到心仪的Offer!也希望大家要越挫越勇,永不言弃。

Leave a Reply

Your email address will not be published. Required fields are marked *