您的位置:首页 > 职场人生

2017腾讯实习生Android客户端开发面试总结

2017-06-14 22:26 633 查看

来一面的人很多,等候的会议厅里显得有点嘈杂,不过很意外的是来面试的学生中男女比例相当,更可以说女生稍稍比男生多一丢丢,看来程序媛也很努力啊!

2点过几分钟,系统发短信提醒我可以面试了,腾讯的高效可见一斑,以下是正文。
我:敲门,问好,深深鞠躬并双手递上简历。一面的面试官有些许腼腆,偏瘦偏黑,坐得很直,第一感觉很Nice。
面试官:你好,先做个自我介绍吧。
我:将自己准备了许久的自我介绍顺利地讲了一遍,面试官很认真的听并逐点看我的简历。
面试官:听完自我介绍之后,问道:你是自学Android还是学校里有相关的课程。
我:苦逼的我当然是自学的啦,大一的时候学校教的是Java,老师很好,也是我在大学期间觉得唯一的一个好老师了。讲自己从一开始通过看郭霖的《第一行代码》入门,到中间走了许多弯路去看了一些补习机构的教程视频,再到后来自己总结出了一个学习路线图,并开始专注于看优秀的图书和勤打代码,并且做了一些比较拿得出手的项目和维护着一个个人博客http://wensibo.top/ 。
面试官:频频点头,似乎很同意我的学习历程并且对我目前的状态表示满意。接着问,知道Android中的ANR吗?解释一下。
我:知道,ANR就是Application Not Responding ,即应用程序未响应,之所以会造成这种异常是因为Android是在主线程即UI线程中更新界面的,但是如果在UI线程中进行过多的耗时操作就会堵塞主线程从而造成ANR,具体造成ANR的原因有三个:Activity耗时操作超过5s,Broadcast Receiver 超过10s,Service超过15s。
面试官:似乎很满意,接着问道,那Android中是如何避免ANR的?
我:这些问题因为都是很基础的,并且面试前复习过了,所以对答如流。我说我举一种方法吧,例如AsyncTask,具体介绍了他的doInBackground和updateProgress以及postExecute三个方法的使用以及参数的类型转换,还分析了AsyncTask的缺点,就是它所维护的线程池大小为128,同一时刻只能有5个工作线程和一个缓存线程,如果耗时操作工作量巨大就会导致线程池大小不够用,这就是它的缺点,另外我还介绍了它的解决方式,就是由一个控制线程来处理AsyncTask的调用,判断线程池是否已经满了,如果满的话就停止处理。
面试官:一番回答下来面试官从看着简历到一直看着我并且频频点头,似乎对我的回答十分满意,我也暗自窃喜。接着他就问除了AsyncTask之外,有用过Handler吗?具体解释一下它的实现过程。
我:这种问题可以说是每次面试必问的,并且自己也研究过源码,对Looper的实现机理十分熟悉,所以又是讲了一大堆。
面试官:对我的回答十分满意,并问我是不是经常看源码?
我:还好,毕竟也不是什么源码都看,如果被问到没看过的就尴尬了,还是谦虚点。
面试官:Android应用程序之间是通过哪些方式共享数据的?
我:File,Sqlite,Content Provider,Service,BroadCast Receiver,Intent,同个Application内部的话还可以通过静态变量共享数据。
面试官:点点头,这个面试官很喜欢点头。那能不能说说Content Provider的生命周期?
我:感觉有点懵逼,四大组件中似乎很少接触到Content Provider的生命周期,自己也不是很确定,就说生命周期不是很懂,但是我可以说一下它的实现机理,就说了Content Provider,Content Resolver之间的使用规则,具体到程序间的URI。后来回学校之后查了一下,发现Content Provider并没有生命周期这一说法,不知道面试官是问错了还是故意挖坑给我跳的,好在没往里面跳。
面试官:开始问到简历上面的项目,先问了Volley的实现机理。
我:因为之前写过四篇文章来介绍Volley,所以Volley的实现机理很清楚,便给他详细的介绍了起来,具体的可以看我的这篇Volley源码分析http://wensibo.top/2017/02/17/%E4%B8%80%E5%8F%A3%E4%B8%80%E5%8F%A3%E5%90%83%E6%8E%89Volley%EF%BC%88%E5%9B%9B%EF%BC%89/ 。
面试官:你刚才对Volley的实现机理讲的十分详细,调理也很清晰,很不错,那你知道为什么线程池里面是有5个线程在循环呢?为什么不是6个7个或者8个呢?
我:哎呀,这个问题倒是没有细细去想,但是当初也很奇怪为什么会定5作为全局常量呢?会不会因为5是开发者的幸运数字呢(黑人问号 :joy:),后来想了一下对面试官说,可能是因为Volley面向的网络请求是请求量比较小但是请求比较频繁的操作,所以5应该是刚好能够处理得来的,又或许5是一个经过大量的数据实验之后得到的一个相对符合的数量吧!
面试官:笑了笑,其实我也不是很清楚。(尴尬
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: