<p><img class="__bg_gif" data-ratio="0.190625" data-src="http://mmbiz.qpic.cn/mmbiz/ianq03UUWGmKBiaFRAtInJGYgEuY433yBF8xboN1kicVvAHRCTTNicKibh3O1MGeRkhstlSODTrKSuSDyn492CuNQgg/0?wx_fmt=gif" data-type="gif" data-w="640" style="margin-right: auto; margin-left: auto; white-space: normal; font-size: 14px; text-align: justify; text-indent: 28px; color: rgb(62, 62, 62); line-height: 22.4px; display: block; clear: both; box-sizing: border-box !important; word-wrap: break-word !important; width: auto !important; visibility: visible !important;" src="/imgpool/1492732224189647215.jpg"/></p><p style="text-align: justify;"><span style="color: rgb(33, 33, 33); line-height: 19.2px; font-size: 16px; background-color: rgb(255, 255, 255);">先做个自我介绍,本人大三狗一枚,就读的是广州一个普通的一本大学(非985、211),专业是比较尴尬的电子商务(非计算机学院,连C的课程都没有就只有Java),但是一切的尴尬并没有阻挡我对Android开发的热爱,自学一年多差不多两年了,基础以及开发的技术也掌握的相对成熟了。在即将要变身大四狗的关键节点看到了腾讯爸爸暑期实习生的招聘,便刻不容缓地参加笔试,很开心顺利收到面试通知,可惜最终止步二面,以下是我此次面试的整个过程,希望对大家有所帮助。</span></p><section class="" data-source="bj.96weixin.com" style="max-width: 100%; color: rgb(62, 62, 62); font-size: 16px; line-height: 25.6px; white-space: normal; box-sizing: border-box !important; word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><section style="margin: 10px auto; max-width: 100%; text-align: center; box-sizing: border-box !important; word-wrap: break-word !important;"><section class="" style="max-width: 100%; display: inline-block; border-radius: 50px; border: 1px solid rgb(0, 176, 240); box-sizing: border-box !important; word-wrap: break-word !important;"><section class="" style="margin: -1px 4px; padding: 5px 15px; max-width: 100%; display: inline-block; border-radius: 50px; border: 1px solid rgb(0, 176, 240); box-sizing: border-box !important; word-wrap: break-word !important;"><p style="max-width: 100%; min-height: 1em; box-sizing: border-box !important; word-wrap: break-word !important;"><span style="max-width: 100%; color: rgb(117, 117, 118); font-size: 16px; box-sizing: border-box !important; word-wrap: break-word !important;">一面</span></p></section></section></section></section><figure class="" style="margin: 20px -35px; max-width: 100%; box-sizing: border-box; font-size: 16px; line-height: 25.6px; white-space: normal; text-align: center; color: rgb(33, 33, 33); word-wrap: break-word !important; background-color: rgb(255, 255, 255);"><p style="text-align: center;"><img data-ratio="0.75" data-s="300,640" data-src="http://mmbiz.qpic.cn/mmbiz_jpg/CP9AlgoibiagWCwjicPwMk1e7qssnQUKNgQt5fwqRhdJiampDrFUl3XCEprfZzR8R1MhMicXCKic8cA9uiahaPfLQdwyQ/640?wx_fmt=jpeg" data-type="jpeg" data-w="640" style="box-sizing: border-box !important; word-wrap: break-word !important; visibility: visible !important; width: auto !important;" width="auto" src="/imgpool/1492732224198962202.jpg"/></p></figure><p style="margin-top: 12px; margin-bottom: 20px; max-width: 100%; box-sizing: border-box; word-wrap: break-word; min-height: 1em; font-size: 16px; line-height: 25.6px; white-space: normal; color: rgb(33, 33, 33); text-align: justify; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; font-size: 16px; box-sizing: border-box !important; word-wrap: break-word !important;">来一面的人很多,等候的会议厅里显得有点嘈杂,不过很意外的是来面试的学生中男女比例相当,更可以说女生稍稍比男生多一丢丢,看来程序媛也很努力啊!<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><br/></span></p><p style="margin-top: 12px; margin-bottom: 20px; max-width: 100%; box-sizing: border-box; word-wrap: break-word; min-height: 1em; font-size: 16px; line-height: 25.6px; white-space: normal; color: rgb(33, 33, 33); text-align: justify; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; font-size: 16px; box-sizing: border-box !important; word-wrap: break-word !important;">2点过几分钟,系统发短信提醒我可以面试了,腾讯的高效可见一斑,以下是正文。</span></p><p style="margin-top: 12px; margin-bottom: 20px; max-width: 100%; box-sizing: border-box; word-wrap: break-word; min-height: 1em; font-size: 16px; line-height: 25.6px; white-space: normal; color: rgb(33, 33, 33); text-align: justify; background-color: rgb(255, 255, 255);"><span style="max-width: 100%; font-size: 16px; box-sizing: border-box !important; word-wrap: break-word !important;"><br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>敲门,问好,深深鞠躬并双手递上简历。一面的面试官有些许腼腆,偏瘦偏黑,坐得很直,第一感觉很Nice。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>你好,先做个自我介绍吧。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>将自己准备了许久的自我介绍顺利地讲了一遍,面试官很认真的听并逐点看我的简历。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>听完自我介绍之后,问道:你是自学Android还是学校里有相关的课程。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>苦逼的我当然是自学的啦,大一的时候学校教的是Java,老师很好,也是我在大学期间觉得唯一的一个好老师了。讲自己从一开始通过看郭霖的《第一行代码》入门,到中间走了许多弯路去看了一些补习机构的教程视频,再到后来自己总结出了一个学习路线图,并开始专注于看优秀的图书和勤打代码,并且做了一些比较拿得出手的项目和维护着一个<span style="font-size: 16px; max-width: 100%; color: rgb(0, 122, 170);">个人博客http://wensibo.top/</span> 。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>频频点头,似乎很同意我的学习历程并且对我目前的状态表示满意。接着问,知道Android中的ANR吗?解释一下。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>知道,ANR就是Application Not Responding ,即应用程序未响应,之所以会造成这种异常是因为Android是在主线程即UI线程中更新界面的,但是如果在UI线程中进行过多的耗时操作就会堵塞主线程从而造成ANR,具体造成ANR的原因有三个:Activity耗时操作超过5s,Broadcast Receiver 超过10s,Service超过15s。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>似乎很满意,接着问道,那Android中是如何避免ANR的?<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>这些问题因为都是很基础的,并且面试前复习过了,所以对答如流。我说我举一种方法吧,例如AsyncTask,具体介绍了他的doInBackground和updateProgress以及postExecute三个方法的使用以及参数的类型转换,还分析了AsyncTask的缺点,就是它所维护的线程池大小为128,同一时刻只能有5个工作线程和一个缓存线程,如果耗时操作工作量巨大就会导致线程池大小不够用,这就是它的缺点,另外我还介绍了它的解决方式,就是由一个控制线程来处理AsyncTask的调用,判断线程池是否已经满了,如果满的话就停止处理。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>一番回答下来面试官从看着简历到一直看着我并且频频点头,似乎对我的回答十分满意,我也暗自窃喜。接着他就问除了AsyncTask之外,有用过Handler吗?具体解释一下它的实现过程。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>这种问题可以说是每次面试必问的,并且自己也研究过源码,对Looper的实现机理十分熟悉,所以又是讲了一大堆。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>对我的回答十分满意,并问我是不是经常看源码?<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>还好,毕竟也不是什么源码都看,如果被问到没看过的就尴尬了,还是谦虚点。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>Android应用程序之间是通过哪些方式共享数据的?<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>File,Sqlite,Content Provider,Service,BroadCast Receiver,Intent,同个Application内部的话还可以通过静态变量共享数据。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>点点头,这个面试官很喜欢点头。那能不能说说Content Provider的生命周期?<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>感觉有点懵逼,四大组件中似乎很少接触到Content Provider的生命周期,自己也不是很确定,就说生命周期不是很懂,但是我可以说一下它的实现机理,就说了Content Provider,Content Resolver之间的使用规则,具体到程序间的URI。后来回学校之后查了一下,发现Content Provider并没有生命周期这一说法,不知道面试官是问错了还是故意挖坑给我跳的,好在没往里面跳。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>开始问到简历上面的项目,先问了Volley的实现机理。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>因为之前写过四篇文章来介绍Volley,所以Volley的实现机理很清楚,便给他详细的介绍了起来。<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>你刚才对Volley的实现机理讲的十分详细,调理也很清晰,很不错,那你知道为什么线程池里面是有5个线程在循环呢?为什么不是6个7个或者8个呢?<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">我:</span>哎呀,这个问题倒是没有细细去想,但是当初也很奇怪为什么会定5作为全局常量呢?会不会因为5是开发者的幸运数字呢(黑人问号 :joy:),后来想了一下对面试官说,可能是因为Volley面向的网络请求是请求量比较小但是请求比较频繁的操作,所以5应该是刚好能够处理得来的,又或许5是一个经过大量的数据实验之后得到的一个相对符合的数量吧!<br style="max-width: 100%; box-sizing: border-box; word-wrap: break-word !important;"/><span style="font-size: 16px; max-width: 100%; font-weight: 600; color: rgb(63, 81, 181);">面试官:</span>笑了笑,其实我也不是很清楚。(尴尬 





相关问题推荐