阿里巴巴校招四面经验分享


 总结

  06.20我从北京xxxx有限公司离职,结束了一年的见习生涯。07.05-08.04在帮我姐夫做翻译;毕竟这段时间比较空闲,在空闲的时候我都是在准备面试,不管是Java基础、JVM、数据库、数据结构、分布式、集群还是项目都准备的差不多,期间我看过《数据结构与算法分析》和《Java编程思想》等书籍。08.03我回到深圳,08.04开始的阿里一面到08.22的四面,今天得知四面挂了感觉很可惜,毕竟差Offer仅一步之遥,但又在意料之中;你选择公司,公司同样也选择你,如果你没有足够优秀,那么对不起-你只是一个过客,而我就是那么一个过客而已。我也留了退路,毕竟阿里没有十足的把握;在这段时间我也去面过三家公司都是自身产品研发,很巧很幸运也都拿到了Offer;公司没有好坏之分,你选择公司的原因无非看在该公司是否能够给予我们期望的salary、行业的前景和对自身的成长空间,这些之中阿里无非是首选。从阿里的这趟面试经历中,给我最大的领悟就是:只有自己足够优秀,才有选择的余地。

 


 一面(30分钟)

 

  你最近在干吗?(********)、你能说下服装外贸的流程吗?、集合底层原理、介绍项目、介绍下buddo、如果我发了两笔相同的转账你是怎么处理的?(项目上,采用redis:单线程)、redis挂了怎么办?(采取集群模式,能够持久化:命令行log和持久化到本地或者是远程服务器存储)、你能讲下对账吗?、你有什么要问我的吗?

 


 二面(45分钟)

  介绍一下自己、介绍一下项目、问了个交易场景是怎么处理的、你做过jvm的优化吗(答:没有,因为在项目上有专门的架构团队,他们负责这些工作,但我有简单了解过)?那你在项目上优化过什么没有?(答:将数据库数据放入缓存、因为这些数据是不常改的)你除了学习java还有学习其他语言吗?(答:有了解过python偶尔会去看一些视频,毕竟现在我还处在学习阶段,我觉得我现在应该先把java基础先打牢,然后再去把其他语言作为第二或者第三语言)、你看过redis、dubbo的源码吗?(答:没有,但我简单了解过;看源码就是看别人写的好的代码思想,因为看源码需要有足够的能力才有看得懂,我觉得java的基础得先掌握牢固,比如:设计模式啊、jdk源码啊等)你除了在项目上学的东西还有哪些途径获取知识(公众号、书)、你关注的公众号有哪些?(Hollis、Java后端技术、Java思维导图、Java技术栈、Java面试笔试)、在最近的一篇文章你学到了什么(JVM,开始巴拉巴拉)、你参加过世界知名的大赛吗?(如:ACM,答:我参加过蓝桥杯、创新大赛,ACM没能力去啊)、你的成绩怎样?(开始巴拉巴拉)

 


 三面(49分钟,交叉面)

  • 前戏

A:你面的是ICBU(国际技术事业部)是吗?

B:是的,之前填的是这个部门

A:来我们部门(业务平台事业部)吧?现在阿里的重心在我们部门,ICBU的话不是公司的业务核心(面试官在憨笑)

B:可以啊,可以转部门吗?可以的话我就转过来(在憨笑)

A:可以转,不过一般是要在正式两年之后才可以

A:你之前面试过吗?你是第轮面试了啊?

B:这是第三面了

A:你现在人在哪里呢?

B:我现在在深圳这边

A:来杭州吧,深圳那边的话是一个研发基地,杭州是总部基本核心业务部门都在这里

B:可以的,听从安排,毕竟阿里牛人多,哪里需要去哪里(在笑着)

A:好吧,现在开始我们的面试吧

 

  • 面试

A:自我介绍下......

B:巴拉巴拉

A:你做过哪些项目

B:开始叙述......(先讲做过的项目,然后挑一个熟悉的项目精讲:包括项目背景、项目系统架构、用到的技术、模块的各个功能)

A:为什么要用分布式?我集成模式也可以啊?

B:分布式系统的话有这些优点:qps、运行可靠性、可扩展性、可维护性、解耦等(还好多,多巴拉巴拉)

A:那分布式的数据一致性问题怎么解决?

B:在我们项目的话,内部通讯主要采用的是MQ,MQ在一定程度上市可以保证书屋的一致性的

A:MQ如何保证一致性的?

B:比如A模块发了一个消息到Topic1,B模块监听Topic1;如果B获取了消息就会往下执行,如果没有获取则消息还在

A:如果此时我B系统奔溃了怎么办?这个怎么处理?(这个问题主要问的是分布式、集群的特点了)

B:因为分布式系统在集群模式下,每一个服务实例都有运行数据的拷贝;比如B奔溃了导致线程中断,因为分布式有容灾的特性在每个B系统的集群实例都有相关数据的备份,即使B挂了也没事,还有B1、B2、B3......

A:xxxxx模块是干什么的?

B:巴拉巴拉

A:为什么网关要用restful接口方式?

B:为了兼容之前的系统,客户化的时候去掉了网关模块;现在统一采用的是dubbo接口,因为dubbo也有错误重试、软负载、服务自动发现等优点(建议在回答的时候尽量要回答为什么,自己主动说而不是别人问)

A:缓存你们一般用来干嘛?

B:在我们项目的话,主要用于两个方面;一是:基础配置数据,二是:异步缓存

A:基础配置数据的话是你们服务起来的时候一个一个启动吗?

B:是的,我们用的@PostConstruct注解,当服务一启动的时候就将数据库的配置加载到本地缓存;如果在应用程序中,某个请求拿不到缓存的话就去数据库查询(适当改编,因为之前是没有去数据库拿数据这一步,毕竟有可能缓存你拿不到消息)

A:项目问完了,现在问下java基础

A:StringBuffer、StringBuilder的区别

B:巴拉巴拉

A:ArrayList、LinkedList的区别以及使用场景

B:巴拉巴拉

A:泛型用过吗?

B:用过,比如List、Set、Map这些都有用到过泛型

A:泛型的优点是什么?

B:避免了CastClassException的异常;在没有泛型之前是用Object,但这有一个问题是会有类转换异常;泛型有类型擦除,在编译期间这行类型是不会保留的

A:再来讲讲集合吧,HashMap是线程安全的吗?

B:非线程安全,线程安全的有HashTable、ConCurrentHashMap

A:设计模式用过吗?

B:具体没用过,但了解过;比如IO的适配器模式和装饰器模式

A:使用单例模式的时候需要注意什么?

B:侧重双重校验锁(再巴拉巴拉其他的)

A:web开发了解吗?

B:了解过一些

A:问个简单的,post与get的区别?

B:巴拉巴拉

A:cookie与session的区别?

B:巴拉巴拉

A:好的差不了了解了,你还有什么想问的吗?

B:我问下的,阿里校招难吗?容不容易进啊?

A:挺难的,现在我们部门一个都还没过,一个Offer都还没发。你这边我觉得没什么问题

B:阿里对待校招生有怎样的培养计划?

A:进去之后都是有师兄带着的,也有全部的新人做一个项目............

B:转正难不难啊?

A:也不算难,转正的时候会参考以往的工作外加考核

B:好的,我差不多了解了

A:好的,谢谢,再见

B:谢谢啊,拜拜

 


 四面(57分钟,交叉面)

A:清算与结算有什么区别?

A:你觉得Java跟其他高级语言有什么区别?

A:Java的最新版本是什么?有什么特性?

A:StringBuffer、StringBuilder的区别

A:线程安全的概念

A:代理模式

A:异常分为哪些,运行时异常与非运行时异常的区别,自定义异常属于什么异常

A:final与finally的区别

A:B_IO、N_IO、A_IO的区别

A:JVM

A:JMM

A:如果一个应用隔三天就会发生OutOfMemory,这个问题你会怎么排查?(jmap工具)

A:MySQL怎么备份(mysqldump -h127.0.0.1 -uroot -ppass myweb > d:/backupfile.sql)

A:复合索引的问题

A:MySQL的存储引擎有哪些,他们有哪些不一样

A:MySQL事务的四个特性

A:xxxxx项目分为哪几个模块?

A:适配器用来干嘛的?

A:你们项目的幂等校验

A:我大概了解了;结果的话这个星期会出,你注意下手机或者邮件。先这样了,再见

A:谢谢,拜拜

......(还有其他的,记不起来了)

 


 

 

posted @ 2018-09-11 19:41  WindsJune  阅读(2388)  评论(2编辑  收藏  举报