先说句题外话,很多公司16年秋招的内推已经开始啦,我目前知道的在北京有网易、百度和微软,同学们可以开始关注了。之前在《Android面试一天一题——概述篇》中提到过,面试过程中围绕应聘者简历中的项目会展开一系列的问题,那么,今天就让我们看看怎么去准备吧。



首先,我们需要确立简历中项目经历的总体评价原则——1.聊胜于无,这个就不多说了,没动过手的同学抓紧时间。2.独立开发优于模块开发,因为在独立开发中往往会涉及到模块设计、层次划分以及各种开源框架的取舍等问题 3.已发布的应用要远优于Demo,在做Demo的时候一般我们只关心如何实现某种期望的效果,使用的数据基本都是死的;但是如果应用是要发布到市场上的,我们要考虑的细节就多得多了,比如对用户可能出现的各种误操作的处理、对listview,bitmap,界面布局以及内存的各种优化还要照顾到不同尺寸的屏幕以及不同版本的系统。所以说,如果你的时间还比较充裕,最好去试着完成一个可以上线的项目。



那么在项目已经无法改变的情况下,怎么在跟面试官的沟通过程中获得更高的评价呢?



1.如果你使用了开源项目,请顺便了解一下同类型的开源项目



什么意思呢?如果你在项目中使用Picasso进行网络图片加载,在面试前最好可以了解一下Picasso与Glide、Fresco等开源项目的不同特点和使用场景。因为当你介绍到“我这里使用的是Picasso”的时候,面试官很有可能问道“为什么选择Picasso?”,“还知道别的图片加载框架么?”,"他们之间有什么区别?",“各自的特点是什么?”。把这些问题回答好了,至少可以把你和拿来主义的竞争者区分开。



2.介绍项目时,埋下一些钩子



所谓钩子,指的是引诱面试官问出我们事先准备好的问题。为什么这么做?每场面试的具体时间一般都是稳定在一个小范围内的,面试官所问的问题如果是我们准备过的,那么我们就可以轻松地回答,不但回答的质量高而且时间久,这样一来,暴露缺陷的机会就会大大减少。那么怎么埋钩子呢?以我的一次面试为例,当我介绍主界面侧边栏的实现时,我提到“开始的时候由于接触的开源项目少,想用知道的组件来实现,就选择了HorizontalScrollView,后来虽然实现了侧拉效果,但是由于主界面有个ListView,出现了滑动冲突的问题,当时解决不了,就去找了个SlidingMenu的项目直接用了,最新的版本里用的是Google自己的NavigationDrawer......”要知道,面试官是相当在乎应聘者的知识漏洞的,当他听到我们说完上面的话,你猜他会问什么?没错,他问的是“那你现在知道怎么解决滑动冲突了么?”我听到这个问题,就乐了,来来来,让我给你讲十分钟不重复的事件分发机制和滑动冲突解决方案,顺带在白纸上写一段代码来证明这个问题我已经很熟了。同理,当你给面试官介绍你的项目时,可以用同样的方法引到你所准备的问题上。切记!当你成功时,别笑得太明显......



3.准备一下这些问题



还有一些其他的问题可能会出现在你介绍项目时,这些问题可能包括了:你看过XX项目的源代码么?你是怎么做项目测试的?性能调优的工具用过么,介绍下?描述一个你在开发过程中遇到的最奇怪的问题以及解决办法。提前准备一下,肯定不吃亏。



关于项目介绍的问题,总体而言还是比较简单的,只要是你本人认真完成的,一般都不会有问题,放宽心吧。希望大家都拿到理想offer!