牛骨文教育服务平台(让学习变的简单)
博文笔记

2016年阿里巴巴集团蚂蚁金服面经

创建时间:2016-04-28 投稿人: 浏览次数:13404

今年三月参加了阿里巴巴集团蚂蚁金服的实习生校园招聘,有幸通过了三轮技术面试,不幸的因为毕业时间和实习时间的原因在HR面的时候给卡死了。

下面放上我的面试经验,个人觉得还算精彩,一面42分钟,二面54分钟,三面52分钟,感觉也相当充实。希望对想去阿里巴巴集团的同学能有所帮助

一面

1 自我介绍

2 介绍一下学习之路,学习编程多久了

3 说说我自己写的MVC框架,分析优缺点(这个占了面试大部分篇幅)

4 servlet单例还是多例(肯定是单例,这么简单的问题我当初居然犹豫了一下,真是该打啊)

5 servlet当中的变量的线程安全(这问题我没听明白啊,所以当时算作没答上)

6 了解并发编程的future框架么(当时回答的比较浅所以感觉不太好,我说的是future是一个异步的携带线程运行结果的一个机制,还顺便提了一下callable,可惜的是我读错了读成callaback。。。)

7 说说我写的JDBC插件

8 说说我的MVC框架和springMVC有什么不同以及优缺点(这个答的比较好,springMVC与spring天然集成,springMVC的IOC容器直接是将springIOC作为父容器继承的,springMVC的高性能以及基于方法级别的控制器会比struts2更好等等等。
但是也有缺陷,就是框架本身还是很笨重,需要维护的配置文件太多,不适合开发中小型项目)

9 为什么要写这样的框架,是为了锻炼自己还是为了开发使用(both)

10 评价一下自己

11 问他问题(我怎么样,我技术怎么样,面试什么时候能有回复)

二面

1 自我介绍

2 说一下自学之路,看了什么书,通过怎样的方式学习,看过哪些博客(毕玄,君山,华黎的书,还有计文柯不知道是不是阿里的人。博客有很多了,像什么csdn,博客园,iTeye,红黑联盟,开源中国社区,IBM developworkers,推酷,360doc等等好多列举不全)

3 hashmap和concurrenthashmap区别(线程安全,允许null的键,我顺便把hashtable的区别也说了一下)

4 concurrenthashmap的缺陷(尼玛,这个我真不知道,我没实际操作过啊。。。我当时自己分析的是因为一加锁就会掉性能,而且锁多了容易出现死锁)

5 问我的MVC框架,说了一大堆,基本是我在说。(谈到Java反射性能问题的时候他告诉了我性能不单单是指单线程情况下系统自身的性能还要考虑并发的情况。嗯,这个我还真没考虑到,不愧是扛亿级高并发数据的部门)

6 问我的JDBC插件,中间交谈商讨了一下这个插件的设计初衷

7 聊了一下数据库的东西,怎样设计数据库比较好,数据库索引,hash索引和B-tree两种,他们的异同和优劣,顺便说了一下聚簇和非聚簇

8 GC机制,说了一下GC算法,还有CMS收集器

9 TCP三次握手和四次挥手

10 以后想从事什么样的工作,是底层原理还是业务这些(能学到东西怎么都行)

11 问他问题(我技术如何,支付宝主要做啥,后面有几轮面试,还有我过了没)他回答我的是,除了并发那部分的理解要加强以外其他都还不错的(其实当时我只是没解释好。。。我那样说是有原因的,如果当时结合操作系统中死锁的形成原因一起说面试官可能就明白我的意思了,不过后来我知道concurrenthashmap的缺陷了,三面中也有提到)支付宝的情况说了一大堆,后面还有一轮技术面一轮交叉面一轮HR面(坑爹呢不是我之前那一面算啥)然后在他那里是过了

就记得这些了,毕竟五十分钟。。。不可能都记得的。。很多情况下都是我在说

三面

1 如何学习,学习途径是什么,学习了多久

2 对你影响最深的两本书是哪本(《spring技术内幕》这本书可没让我少吃苦头,剩下的都差不多)

3 给你一个map,如何实现它的并发,你会怎么做。考验Java集合包和并发库的内容(说了一下在数据方面hashtable的强一致性和concurrenthashmap的弱一致性,但是如果主要以读为主的话用后者的并发性能非常好,前者是整体上锁)

4 说一下对设计模式的理解,设计模式的用处.以及你对哪些设计模式比较熟悉(为了开发程序的效率,安全性以及可维护才会存在设计模式,然后扯了一下面向对象程序设计六大原则,毕竟Java中设计模式很多是要符合这些原则的。熟悉的设计模式有观察者、责任链、单例、代理、工厂等等等,常用的大部分我都熟)

5 数据库方面懂哪些知识(我说了MySQL,然后MySQL的一些存储引擎,索引类型等等之类的相关知识,没有深挖只是提了一下看我知道哪些方面而已)

6 又开始聊我的MVC框架了。。烦不烦,三轮面都聊这个。。还基本都是篇幅最多的。
你的框架和其他主流MVC框架有什么不同(一大堆,在这个问题上感觉没有前面两面说的好也可能确实是水平问题,以至于后面面试官说其实除了这些形式以外没有更深层次的区别)
你的框架页面渲染如何实现的,会用velocity吗(视图解析器这里说了一下怎么实现,策略模式支持多种前端模板的扩展,并用工厂模式进行维护;velocity我不会)
你的框架如何实现防止HTTP攻击和SQL注入的(说实话我当时没考虑到安全的问题)
你对哪些框架的源码熟悉(spring,springMVC)
你的框架是基于配置文件还是基于注解的(这里当时我犹豫了一下,因为真的有些地方我给忘了,后来才想起来其实都有)
哪些代码是需要配置的,以什么方式配置(扫描包含controller类的包文件以及拦截器链用的是XML配置,控制器是用注解方式配置的)
这个框架运行过吗(没有 (逃 )

7 这个框架是你的一个完备的MVC架构体系还是一个你锻炼用的demo(当时心虚了,好吧我哪有那么牛逼啊。。那么死抓不放,感觉这个面试官牛逼,终面既然没有交叉面试,那应该是总监面了吧)

8 当初为什么要设计这样一个框架来(为了竞争啊,不然我拿什么跟那些写了一大堆牛逼项目的科班出身的人干仗啊)

9 然后开始跟我聊他自己了,他也不是科班出身,本科是学建筑的,快毕业那会儿也跟一些创业公司的工程师一起写过一个MVC框架等等一堆(艾玛感觉我们怎么那么像)还说没关系的,没必要拿自己的作品跟springMVC那么强大团队完成的作品比较。
只要想办法跟一些志同道合的人一起干就好了要有一颗对技术的热心就行(反正感觉他在开始介绍他自己私人的情况拉家常了,说好的技术面呢,怎么变成谈人生了)

10 想做底层的技术还是干业务相关的,因为他们集团自己也不用开源的技术都是自己研发自己用然后开源给别人用(我说能学得到东西干啥都行啊)

11 问他问题(基本就是前面面试那些问题,我水平如何?给我点建议。面试官说我水平挺好的,跟我聊的感觉不错。还有关于后面的面试啊之类的等等等)

基本就是这样,这轮面试又是五十多分钟。。。要死要活的。。。大概就这么些问题吧,再有也记不太清楚了。很高兴最后面试官跟我拉家常聊人生,感觉三轮面试的面试官都很nice啊

总结就是,基础很重要!!

当然能有做过项目经验更好!!能做到质量高的项目更好!!

还有,

不管是做项目还是看书还是像我这样自己鼓捣作品的时候一定要有自己的思考!

一定要有自己的思考!

一定要有自己的思考!

这一点比前面两点更重要

面试到最后的时候,一定要让面试官给你反馈,让他给予你点评,不管过没过,一定要对自己有清晰的认知,这点非常重要!!

HR面我就不放了,太坑,因为我休学了一年,所以要延迟一年毕业,到2018年才能毕业,然后HR跟我说不行他们只能收2017年毕业的,问我能不能跟学校那边交涉一下让我恢复学籍明年毕业,然后跟我说两周内会继续打电话过来问我处理的状况的。结果就是,根本就没有什么电话来,第三周直接给我一条短信把我给拒了,我不爽,找到二面的面试官询问情况,他原先答应帮我跟HR那边说说的,后来跟我说实在是因为毕业时间的原因有死规定,让我明年阿里同期招人的时候直接去打电话找他就好了,说实话真的狠感谢二面面试官,但是最终还是无缘阿里。没办法

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。