阿里面试经历与感受谈

这些天一直奔波于一些大大小小的公司笔试和面试,今天终于空下来可以喝大家分享一下阿里的面试经历了。


首先来谈一谈阿里的整个面试过程给我的感受吧。之前也去参加了腾讯的面试,但是一面就被刷了,说实话有点不爽,不过也让我这次在阿里的表现比上次好了很多。我的面试时间是下午1点,提前了半个小时来到面试的酒店,感觉人比腾讯少了很多,但是阿里的服务工作做得确实挺温馨的,提供了专门的会议厅共大家休息,桌面上还摆放了好多面包等充饥的食品,还有播放阿里的宣传视频,坐在里面休息感觉不到今天是来面试的,面试也是由专门工作人员来通知,而不必自己去门口等。好了废话不多说,还是来聊聊大家最关心的面试官问的哪些问题吧。


其实这次我很幸运遇到的面试官比较和蔼,问的问题也不是很刁钻,因为我回来后发现跟我面同一个方向的同学问的问题比我刁钻很多,都是一些底层原理性的问题,对了我报的方向是客户端开发方向,要知道做开发的很少有几个知道底层原理性的东西。


先来说一说一面的经历吧。面我的面试官应该是一个类似经理职位的人(他后来透露他是从世界500强企业转过去的),看上去挺和蔼的哈。上来就开始让我用一个自己觉得最优秀的项目来介绍,哈哈,还好有准备,我挑了一个自己独立开发的项目来介绍,因为核心代码都是由自己独立完成的,所以对于项目的技术,框架,难点都比较清楚。面试官问项目一般也都是问这三个点,如果这三个点都回答好了,在项目上问题就不大了。面试官会在你讲述项目的时候抽取其中的几个关键词来提问,这时候如果你对这方面比较熟悉,那就可以展开来介绍,呵呵这点我不必多说了很多人都知道吧。讲完项目,面试官说来问几个基础问题吧。


因为我在介绍项目的时候提到我比较熟悉JAVA,因此面试官问的问题也基本都是JAVA方面的。首先问了一个JAVA中接口与抽象类的区别,可不可以把接口去掉。这个问题一般人都可以说上几句,但是想要回答得比较全面就比较难。我谈了几点,面试官看上去还算满意,这里提供大家一个链接可以了解一下接口和抽象类的区别。接着又问了一个设计模式,让我写一个JAVA中的单例模式,这个模式一般写过程序的都写过或者听过吧。然后我写了一个普通的单例和线程安全的单例,面试官检查了一下我的代码,点了点头,然后让我解释线程安全下的单例。还问了我一些诸如JAVA中final关键字作用这类问题,最后问了一道算法题(呵呵,这应该算不上算法题吧),让我写一个函数实现查找单链表中倒数m个元素的值,这个题目看上去简单,但是考察的是细节处理能力,异常处理,考察写得程序健壮不健壮。当时写了一个遍历两次的算法,然后对异常进行了一些处理,面试官看了之后还算满意。后来出来之后想到了另一个只遍历一次的算法,如果当时能想到这个算法应该会让给面试官更好一点的印象分吧。当然不是每个问题我都回答出来了,比如他在问我项目时,问了什么是AIDL,虽然我知道它是什么,但是我没有用过,当然不知道它怎么用了,所以我之后交代我没用过它,面试官也放过我了。还问了一个操作系统的问题,CPU中断处理,这个我早已经忘记了。在结束时,按惯例面试官会问你还有没有问题想要了解的,我提了两个:公司的培训计划和对我个人今天面试表现的评价。至于为什么要问这两个问题大家可以回去看看面经。


一面结束后面试官让我到外面等结果,还是有一点忐忑能不能过。不过很偶然那天我有一个同学在里面做临时工作人员,帮我看到了结果,偷偷发来微信说我通过一面了。接下来等了大概20分钟就去二面了,二面是技术和HR的混合面,也是中面了。先是技术面试官提问(HR还没来),让我做了自我介绍,接着让我谈项目。问了Android中的框架让我做介绍,这个问题我真的不知道怎么回答才能让面试官满意,当时灵机一动就把Android中的四大组件的作用和关系,怎么通信的做了一下介绍,勉强过关吧。接着问了我简历上的一点——Android中的通信机制,还好在面试前一天我把简历上提到的各个技术点都复习了一遍,所以对这个问题还算有把握。面试官问我这个问题其实也在考察我的简历是不是诚实吧。这里推介大家看一下这位大牛的博客吧  http://blog.csdn.net/liuhe688/article/details/6407225 


接着开始问我平时有没有看一些Android的Google API,我说Android的API看的不是很多,但是JAVA中的一些常用类看过一些,接着他又考查我有没有说谎,问ArrayList的默认初始化大小是多少。我想了一下犹豫的说是10,然后他继续问,为什么要设置这个值,我就感觉我应该回答对了,但是我怎么知道为什么要设置这个值,只能说不知道了,免得接下来出洋相。他接着还问当它容量不够时怎么扩容的,我就回答是原来大小加一之后乘以2,面试官没有给肯定也没有否定,接着就问其他问题了。回来之后我发现我回答错了,哎,平时还是没有好好看源码啊!吸取教训了!然后问我对Android的新特性了解得怎么样,哎,再次受打击,我平时虽然Android写得程序不算少,但是真的没注意新特性。只好回到不是很清楚,然后补充到对JAVA中的一些新特性了解一些,比如并发库。然后他就问我并发库中有哪些机制实现同步,这个应该不算难,回答出来了。接着面试官又抛了两个问题,synchronized和lock有什么区别,lock底层的实现原理是怎么样的,对于两个问题我感觉回答得并不让面试官满意。最后问了一下数据库中索引是怎么实现的,还好之前了解了一些,我回答MySQL中是用B+树或者B树来实现的,然后还有一些数据库是采用红黑树来实现的,还好面试官没有继续问下去。技术官的面试基本就这样。


最后是HR面,我简要地谈一下吧。HR了解一些我大学以来一些成长过程,比如大一写程序和现在写程序有什么不同。另外问我写一个软件最重要需要考虑哪些因素。最后让我用三个词来概括我的特点。最后让我在两周内等通知。


如果你不想看上面的长篇大论,我提取了这次面试面试官问的一些问题,供大家参考:

1.AIDL

2.CPU中断处理

3.接口和继承的区别

4.编写JAVA单例

5.进程通信有哪些方式

6.ArrayList的默认初始化大小,为什么设置这个值?怎么扩容的?

7.编程查找一个单链表中倒数第m个元素

8.Android中的通信机制(这个问题是根据简历中提的)

9.介绍Android框架

10.Final关键字的作用

11.Java并发库中synchronized和lock 的区别,读写锁里面实现的原理

12.数据库中索引是怎么实现的


最后提供大家一个关于不是技术牛人,如何拿到国内IT巨头的Offer》的文章,希望对于找实习还是工作的朋友有用。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值