阿里面试经历总结

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u013187139/article/details/48788291
阿里的笔试很神奇,不知道为什么我周围的大神笔试都没有过,我幸运的8月31号收到了面试的通知,然后阿里9月1号发的公告大家都知道了,预约的9月8号下午3点面试,阿里面试的效率很高,基本你出来10分钟内就会偷偷给你发一条短信告诉你结果,挺人道的,如果通过会告诉你下一个面试官的位置,拿着短信就会有人引导你去面试官那,也没想过一下会面到3面,这些问题都是我面试完立马在手机上记下来的,今天发出来给大家看看,也是对自己的一个总结。
一面
1、自我介绍,项目介绍
这里专门有准备自我介绍,通过自我介绍很自然的过渡到项目介绍,说清楚项目中遇到的技术难点,解决方案等
2、Spring ioc 概念,创建,初始化,回收 ,底层实现,aop使用,ioc和aop的关系
ioc这边举了很简单的婚介公司的例子,同时给面试官介绍了初始化的3种方法,构造器,静态工厂,实力工厂,然后介绍了注入的几种方法,set,构造器,静态工厂,实例工厂,其次说了下在使用这么东西中注意的问题,然后提了下自己使用的时候碰到的问题,我提的构造器注入和找不到默认构造器,最后重点给面试官介绍了自己了解到的ioc底层实现,两条线,Beanfactory和appcontext这两条线。
aop主要介绍了自己用过的日志系统,通过aop对日志系统做面向切面的实现,简单的介绍了aop的使用
3、collection框架介绍,set,map,list对比(性能,特性,具体实现)
从List,Map,Set接口分别来说,从用法比较到性能比较,分析底层原理为什么会造成这样的效果,然后再到自己使用过程中的感受全部来一遍。
4、Current包,线程池类型,使用,fix,single
和上面类似,面试官重点问了single线程池的原理,使用阻塞队列实现。
5、jvm内存模型,在每个区怎么发生的内存溢出
对java的5个内存都进行了分析,重点分析了堆和栈的内存溢出情况。
6、垃圾回收机制,算法,servive 区是怎么工作的
对堆中垃圾回收更具体的实现,servive to 和 servive from两个区的切换工作。
7、full gc怎么发生的
这个就不多说了,触发full gc的情况很多。
8、永久带是是什么,永久带的特性
向面试官讲述方法区,在sun hotspot中叫永久带,当数组大于初堆设置时会直接进入永久带。
9、java多线程的实现原理
分工作内存,cache,内存,3部分来说明java并发时jvm是怎么工作的,然后程序计数器这里是怎么运行的。
10、对反射的理解,反射中的重要类
这个因为用的却是不多,但是看ioc的源码里面很多反射的代码,所以也就简单的了解了下,仅限于自己看过,实际并没有写过,所以也就说了几个简单的方法和类,比如method,class等。

一面总结:都是很基础的一些问题,面试过程中都是根据你的回答和简历来进行提问,因为有准备所以很从容,也有被问死过一些东西,比如aop这里更具体的实现,因为只看了部分源码,当面试官问到aop动态代理,cglib时回答的不是很好,还有反射这里的具体方法,比如获得所有方法的那个方法叫什么,当时想了想还是没想起来,最后面试官让我提问时我问了自己的表现,没想到面试官的评价很高,说我基础很好,看了很多书,可能有些地方因为在学校的原因没有机会实践,当时那个泪奔啊,碰到一个这么nice的面试官,当然最后成功进入二面了。


二面
1、自我介绍,项目介绍
这里就不多说了,和一面基本一致,不过在项目介绍这里的篇幅比一面稍微长一些
2、从文件上传管理项目开始问问题,文件处理服务器负载怎么办
自己太嘴贱了,说了可以做负载均衡,一下感觉回答的不好,因为在学校根本没有机会去做分布式,集群这些,都是些理论的了解,所以当时只能靠经验去猜了,后面的问题果然就此展开。
3、怎么在两台服务器之间传递信息
被问到这个问题的时候脑子有点白,想了下服务器之间的传递无非是用协议,我做过手机端和后台的通信,用的是http,所以想了下就给面试官说两台服务器之间的信息传递还是用的http协议,有get和post两种方式,可以使用转发将请求信息转发过去。
4、传递信息的时候安全怎么保证
我已经想到了面试官肯定会问这个问题,虽然没有做过分布式,但是对http协议的传递还是了解的,说了2种解决方案,如果get的话可以进行加密,用des或者rsa都可以,用post的时候同理可以加密,服务端必要是可以解密,有时也可以用md5不需要进行解密,在申请服务层的时候要对外提供虚拟ip,不能直接获取到服务器的真实ip,这里的技术我不懂,是我们宿舍的运维给我讲的。
5、放数据的服务器挂了怎么办,正在给备份服务器写数据的时候挂了怎么办
当时被问到这个问题的时候我第一反应就是mysql怎么做的AB,怎么做的备份,用缓存向硬盘刷数据,把脏页的数据用多线程刷到硬盘上,执行操作前必须写日志,写完日志才能在内存中进行数据的处理,一旦失败要进行回滚,保证一旦开始持久化的数据是可靠的。
6、登陆时怎么设计分发请求
不知道是不是我没听清楚面试官的问题,我只是简单的理解为怎么把请求分开,我就说了不同身份的人登陆会记录不同的id,通过身份判断就可以分发给不同的服务器,有分发服务器做,这里如果分发服务器负载还可以用niginx做负载均衡。
7、如何做到直接访问地址不能访问
问到这里已经回到了我熟悉的web领域,当然是用强大的session啦,当时我回答的时候好像笑了,给面试官讲了自己的一个项目时怎么做的,所有的页面经过拦截器的时候首先要判断session是否有值,有值的session才可以进行下一步的操作,无值的session被踢出重新登录经过合法认证才能继续操作。
8、身份令牌怎么设计,在什么地方执行
这应该是回到了上上一个问题上,我设计身份令牌的思路就是首先对每个院系进行编码,所以同一院系老师的前几位编码是固定的,主要通过前几位编码来识别院系信心,后面的几位编码是根据老师的名字和uuid共同生成的,保证唯一性,同时有随机性,不能让其他人猜到该老师的编码,在执行重要操作的时候必须验证身份令牌是否合法,比如审核员审核操作,下载文件操作等。
9、分布式怎么向服务器请求数据
这应该又是对我上上一个回答的提问,具体实现应该是由分发服务器通过身份令牌的识别分发给不同的院系服务器做处理。
10、分布式文件下载怎么做
这里知道是hadoop的HDFS和MapReduce来做的,但是没研究过这里,就和面试官老老实实交代了。
11、如何防止恶意网站攻击,这段代码应该放在什么地方
我说了用一个hashmap记录恶意网站的ip,每次请求会记录一个时间,每次记录时间后会统计出近10次访问的统计时间,符合要求的访问才可以被允许执行后面所有的操作,不然直接踢出。面试官笑了笑,服务器会被累死的,当时有点尴尬,想了想确实不太好。
12、你觉得这个系统在设计上还有什么问题
恕我无知,当时想了好几遍,都没想出来自己还处理过什么问题,然后就随便说了一个表单重复提交。
13,、ajax不能上传文件,你觉得他为什么这么设计
第一次被这么问,还真没想过ajax为什么不能直接上传文件,就胡乱扯了一会,最后面试官引导着问我ajax传递的是什么,才反应过来ajax设计出来是实现页面局部刷新的,他传递的是字符串,而文件都是流形式的,所以他设计上就不支持实现上传,但是仍然有办法实现文件的异步上传,就给面试官顺便讲了我们当时用的隐藏的iframe方式实现伪异步,上传后刷新隐藏的iframe。
14、orm框架介绍,mybatis如何映射数据库
因为简历上写了项目有用到Mybatis所以面试官就顺着问下来了,主要说了Mybatis对jdbc的封装,然后反射机制获取到sql语句,返回值类型,去映射XML文件里配置的类,中间说看过SqlSessionFactory的源码,结果被问死了。
15、订单量大,店家要为用户预留商品,这个问题你们怎么解决,淘宝怎么解决
这个问题也和我简历上的项目有关,我没有从技术角度去回答这个问题,因为从流程上就可以解决的问题不需要动用技术,所以就说了自己的思路,商家订单量大都是预定的,那么应该优先给那些付款的用户发货,如果付款的用户已经超过了自己的存货,那么应该进货才对,不需要从技术角度去解决。
16、Mysql底层,为什么加索引会变快,除了你说的还有什么原因。
一开始问Mysql底层,我开心的从二叉树,二叉搜索树,平衡树,b树,b+树全部讲了一遍,重点讲了mysql为什么要使用b+树,然后提到了索引,没想到他问了我一句索引为什么会快,我说索引肯定快啊,没有索引就跟你不知道路瞎走一样,有了索引就跟有了地图一样,当然快,然后他就问我除了这个还有别的吗,我想了半天真没想出来,然后就被问还有什么问题了。

二面总结:如果说阿里的一面注重基础知识,那么二面基础就完全是项目,如果在做项目的时候没有考虑过这些问题,面试官的一些问题还是很难回答的,都是一些技术点,如何处理的问题,当然我并没有做过分布式,所以有些回答可能也不准确,能和面试官愉快的聊下去并讨论一个问题的解决方案才是成功的,最后成功的进了三面。

三面我的回答就不给大家发了,仁者见仁智者见智,大家就看看问题吧。
三面
1、公司的项目流程很复杂,让你自己写很简单,你怎么选择
2、怎么处理和同事领导的关系
3、领导给你提了一个意见,你会怎么对待
4、你觉得自己的学习方式是什么样的,举例
5、在学校的成绩如何
6、你认为基础知识,比如高数,离散等有没有作用
7、有没有碰到过层次要高于你学的东西,就是你学的时候,你的层次已经比他高了,举例
8、喜欢什么样的工作环境
9、你觉得一个优秀的程序员应该是什么样的
10、工作3年后如果有一笔钱,你选择继续在公司还是去创业
三面:第一次经历三面还是很紧张的,传说中的hr姐姐居然是hr哥哥,好吧,问的问题还好,有一些在平时的生活中就思考过的问题回答起来比较容易,有些问题真的很难回答,比如那个关于层次的问题,hr还是需要准备下的,第一次也是经验不足,最后一个问题我居然说了创业,回来后我同学都骂我笨,好吧,当时确实有点脑残,不过阿里的终面也就这样结束了。

总结:暑假一直照着阿里面试的方向进行总结学习,thinking in java 也翻了一遍,感觉阿里的面试官非常nice,几个面试官评价都很高,但很可惜,听说阿里今年校招不招人了,为我接下来的面试攒攒人品,只求收留下我。

展开阅读全文

没有更多推荐了,返回首页