大牛孵化器——阿里Android实习生开发面经
我走的是阿里的内推流程,内推后十二天接到面试电话,技术面三次,接着四月清明假期过后Hr面,面完后当天晚上收到实习生Offer。下面我把面试过程中遇到的问题分享给大家!算是对自己找实习的一个总结吧。
阿里一面(22分钟)
自我介绍都没有做,上来就问印象最深的一个项目,根据项目中的知识点提问:
* 项目中使用了哪些材料设计中的东西?
* ListView和RecyclerView的区别?为什么使用RecyclerView,好在哪里?
* ListView的优化
* 为什么使用CardView,好在哪里?
* 项目中如何做到后台监听的?(项目中BroadcastReceive和Service相关问题)
* 使用的是什么数据库?(答:Realm)为什么使用,为什么不用Sqlite?
* 项目中使用那么多开源框架,如何获取这些信息的?如何筛选决定要使用这些东西?
* 有没有看过开源的代码?(大概说了一下Rxjava)
* 你有什么问题要问?
基本上就是这些,一面整体感觉不错,当天晚上七点半接到二面电话,由于在做360笔试,拖到第二天早上。
阿里二面(24分钟)
自我介绍,同时问了项目中的细小的问题:
* 项目中如何让service常驻后台?(告诉他这是我项目中的Bug被杀掉后就没办法了,但是在说了网上提到的QQ的两种常驻方法)
* Activity的生命周期,每个周期伴随着什么?
* Activity的启动模式,四种方法?
* 广播注册的两种方式,区别,优先级?
* 问了Layout的优化的方法?(这个不清楚,答的是ListView和Activity的优化)
* 一个singleton如何实现线程的同步问题?
* Java的垃圾回收机制,垃圾回收算法?
* 平时如何代码是如何练习的?
* 使用过那么多开源框架,有没有看过源代码?(答:结合解析看过Retrofit、Rxjava、Okhttp等)
* 你有什么问题要问?
二面问的比较基础,基本上也都答上来了。二面结束第二天的下午接到三面电话。
阿里三面(45分钟)
* 自我介绍,同时问了三个项目的大概情况,(对混合开发那个比较感兴趣,问了一下,其他的没有细问)
* 由于其中一个项目是负责人,所以问了一下项目的整个设计流程
* 又问了项目中service常驻的方法,(回答和二面一样,但是这次说的比较清晰)
* 有没有了解过Realm的底层数据库是什么?(没有了解过)
* 他问有没有读过开源的源码?(说了一下Retrofit和RxJava的内部主要实现,这一次也答的比上一次清楚多了)
* 又问了ListView的优化
* 网络中Http get和post的区别
* 使用哪种数据传输格式?答Json,问还有哪些?答Xml。还有哪些?答:不知道
* 怎么解析Json?(答的在线解析生成Java类,他表示很感兴趣)
* 怎么在非UI线程更改UI?(答handle、AsyncTask、RxJava,表示现在我基本不用handle,直接用RxJava。)
* Handle的工作原理和工作过程?(同时还说了Handle会造成内存泄漏的问题)
* 有没有了解过跨进程通信;(瞬间心虚,只是简单说了一下远程service的创建和AIDL实现远程通信,这里需要感谢CSDN的郭大神)
* 问了多线程的并发(说了两种重入锁的实现)
* 又问使用synchronized关键字的时候底层调用的是哪种锁?(没有了解过不清楚)
* 问了一个JavaEE的新特性,这个不知道也没听清楚;
* interface中定义的变量默认的类型是什么(不加任何修饰)?(说是default,他反问default,我说这是方法中变量中的类型,interface中应该也一样吧;后来查了一下才知道,这里是个坑,interface只能是public static final的常量)
* 父类的方法是public,子类重写后,改为protect,会不会报错?反过来呢?
* 算法:国际象棋8*8的格子,马走“日”字,设计算法计算马如果走完全部格子?(答的回溯法说了一下思路,后来查了基本差不多)
* 你有什么问题要问?
Hr面(30分钟)
之前三面的面试官说第二天会有Hr联系我,结果等了一个清明假期才等来。。。这个电话是在4月5号的中午打来的,Hr面基本上是聊天,比较轻松,聊聊以前的实习经历,聊聊项目经历之类的。感觉还不错。
Hr面当天晚上收到Offer,至此为期一个月紧张的找实习经历结束。
我是怎样准备面试的?
1、牛客网上面刷题:在面试期间我做完了牛客网上《剑指Offer系列》的题目并写了相关的[博客](http://www.jianshu.com/p/fa9dcbc88a8e)。(虽然本次面试中遇到的算法问题比较少,但是三面最后的一道算法题对我加分不少。)在做往年笔试题的同时也写了一些[博客](http://www.jianshu.com/p/78d9fa2636ee)。
2、多做笔记,建议使用印象笔记。在网上找一些面经,多纪录,一定要自主思考答案,多看大牛博客,并尝试举一反三。(面经大家都可以看见,但是如何把问题答出彩,让面试官记住你的与众不同?这个是在准备面经的时候需要思考的。)
3、熟悉自己的项目,对项目中的每个点都需要熟悉,如果面试官问到你不会的问题就往项目上面说,然后。。。自己发挥;
4、准备一个一篇能吸引人的简历,建议去花钱买简历模板,免费的都不好看。很多公司都是在网上填简历,在线简历一定要认真,尤其是开放性试题,比如本次阿里校招在线简历最后有三道开放性题目。试想,当一千人的项目经历和学历都和你不相上下的时候,Hr怎么从这一千份的简历中筛选出合适的那一百份呢?
如何找简历模板?
在[花瓣网](http://huaban.com/)上面搜**一页纸简历**,看到各个网站的简历模板,根据个人需求在不同的网站买模板!
(切记不要因为省几块钱而去用免费的模板,只能让Hr感觉千篇一律,毫无新意!)