面试时,问哪些问题能试出一个 Android 应用开发者真正的水平
1个回答
2015-12-25
展开全部
首先,面试官们一定要知道,每个人由于经历不同,擅长的方向是千差万别的,所以一定不要抓住自己擅长的某个方面去问的很深,觉得“如果连这个都不会还算毛程序员啊”。
所以我问问题的时候,往往是“两步走”的循环:
1. 问他做过什么,如果有成品的话,我能看看更好。
2. 从他做过的东西里面,找到问题进行提问。具体的问题要看情况,可以是界面或效果的实现方式、相关bug的排除、该部分原理的分析。
举一次面试时的对话作为例子吧:
我先开始:
“这份简历和网上投过来的那份是一样的吧?”
“嗯,应该是一样的。”
“嗯好。你在之前的团队的位置是什么?”
“中高级吧。”
“具体的工作呢?”
“写框架,让新人比较容易上手,能够轻松工作。”
“你说的框架具体包括什么呢?”
“一些会共用的东西,写出来可以让新人就算是刚来也能很好的完成工作。”
“联网是你封装的吗?”
“是。”
“你们联网用的是什么?”
“就是……安卓自带的……HttpClient。”
“直接用的?”
“嗯。”
“那你们的网络请求是怎么做的异步呢?”
“嗯……用Handler嘛,还有AsyncTask。”
“能具体一点吗?”
“嗯……就是……额……”
“例如什么情况下用Handler,什么情况下用AsyncTask,你是怎么决定的呢?”
“嗯……”
“或者说,他们有什么区别呢?谷歌为什么要造他们两个出来,而不是只造一个呢?”
“区别……区别……他们肯定是有区别的,不然谷歌不可能造两个。嗯……”(到这里,这个问题就可以结束了。评级减一。)
“这样吧,你的简历上提到‘熟悉大图片的加载’,能说一下大图片加载有什么需要注意的吗?”
“缓存嘛。”
“缓存?”
“嗯,大图片的加载不就是ListView里面的大图片加载吗?要防止内存溢出。”
“ListView里面一定是大图?”
“嗯……”(不了解的东西却说自己熟悉,评级减一。继续顺着问。)
“那么ListView中图片的缓存你是怎么做的呢?”
“三级缓存嘛。”
“哪三级?”
“如果内存里面有,就用内存里面的;如果没有就用本地的;如果本地也没有就从网络上取。三级。”
“网络上的也叫缓存?”
“啊。你可以把他看作缓存,也可以不看作缓存嘛。”(这个……)
“内存缓存你是怎么实现的?”
“用的一个HashMap。”
“直接用的HashMap吗?”
“嗯……嗯。”
“直接用HashMap的话,怎么防止你刚才提到的内存溢出呢?”
“你可以用软引用嘛。”(首先答案有问题,另外当听到关键词“你可以”,多数情况下这个问题也可以结束了——八成是不会,仅仅听说过。不过出于谨慎还是继续问了)
“软引用就能防止内存溢出吗?”
“还有……还有谷歌出的一个叫LRUCache的。”(回避正面回答,确认他是不会。这个问题结束。评级减一。到此就再没必要聊下去了。)
然后简单过渡一下,就结束了面试。
所以我问问题的时候,往往是“两步走”的循环:
1. 问他做过什么,如果有成品的话,我能看看更好。
2. 从他做过的东西里面,找到问题进行提问。具体的问题要看情况,可以是界面或效果的实现方式、相关bug的排除、该部分原理的分析。
举一次面试时的对话作为例子吧:
我先开始:
“这份简历和网上投过来的那份是一样的吧?”
“嗯,应该是一样的。”
“嗯好。你在之前的团队的位置是什么?”
“中高级吧。”
“具体的工作呢?”
“写框架,让新人比较容易上手,能够轻松工作。”
“你说的框架具体包括什么呢?”
“一些会共用的东西,写出来可以让新人就算是刚来也能很好的完成工作。”
“联网是你封装的吗?”
“是。”
“你们联网用的是什么?”
“就是……安卓自带的……HttpClient。”
“直接用的?”
“嗯。”
“那你们的网络请求是怎么做的异步呢?”
“嗯……用Handler嘛,还有AsyncTask。”
“能具体一点吗?”
“嗯……就是……额……”
“例如什么情况下用Handler,什么情况下用AsyncTask,你是怎么决定的呢?”
“嗯……”
“或者说,他们有什么区别呢?谷歌为什么要造他们两个出来,而不是只造一个呢?”
“区别……区别……他们肯定是有区别的,不然谷歌不可能造两个。嗯……”(到这里,这个问题就可以结束了。评级减一。)
“这样吧,你的简历上提到‘熟悉大图片的加载’,能说一下大图片加载有什么需要注意的吗?”
“缓存嘛。”
“缓存?”
“嗯,大图片的加载不就是ListView里面的大图片加载吗?要防止内存溢出。”
“ListView里面一定是大图?”
“嗯……”(不了解的东西却说自己熟悉,评级减一。继续顺着问。)
“那么ListView中图片的缓存你是怎么做的呢?”
“三级缓存嘛。”
“哪三级?”
“如果内存里面有,就用内存里面的;如果没有就用本地的;如果本地也没有就从网络上取。三级。”
“网络上的也叫缓存?”
“啊。你可以把他看作缓存,也可以不看作缓存嘛。”(这个……)
“内存缓存你是怎么实现的?”
“用的一个HashMap。”
“直接用的HashMap吗?”
“嗯……嗯。”
“直接用HashMap的话,怎么防止你刚才提到的内存溢出呢?”
“你可以用软引用嘛。”(首先答案有问题,另外当听到关键词“你可以”,多数情况下这个问题也可以结束了——八成是不会,仅仅听说过。不过出于谨慎还是继续问了)
“软引用就能防止内存溢出吗?”
“还有……还有谷歌出的一个叫LRUCache的。”(回避正面回答,确认他是不会。这个问题结束。评级减一。到此就再没必要聊下去了。)
然后简单过渡一下,就结束了面试。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询