黑马程序员技术交流社区

标题: 2017新年首发Android面试宝典 [打印本页]

作者: 就业高冷派    时间: 2017-1-3 14:44
标题: 2017新年首发Android面试宝典
本帖最后由 就业高冷派 于 2017-1-3 14:52 编辑

2017新年首发Android面试宝典
------不就业不放弃

年底Android工作难找吗?Android开发人才需求量下滑了吗?Android就业薪资不高吗?一二线就业薪资真如大家说的差别很大吗?!!!不要着急下结论,请看以下数据,我们用事实说话:



通过以上数据,我想你心中应该有了一些答案.不过我想说的是,对于正在找工作的你,应该看到的是希望和面试不成功不罢休的决心,不然还能咋地?不要找借口,不要退缩放弃,勇往直前,主动出击才是王道!

面试受挫折,迟迟拿不到offer,不是你的问题就是公司的问题,最终都不应该把所有问题转换为自暴自弃,这是弱者的行为.我们能做的就是有面试邀请就去参加然后做详细的知识总结积累,没有面试邀请要么有针对性的归纳复习,要么就争取面试机会主动出击.下面是我面试总结的题目,这样的面试总结你做了吗?


挑战公司 : No.1:捷智数据
公司地址:西安高新技术产业开发区科技六路与沣惠南路十字西北角摩尔中心A座10层
面试时间:12 月 20 日 14:30 PM.
面试结果:顺利拿下 Android 高级开发工程师,10k offer


面试问答总结:
Q:你好,请做一下自我介绍
A:你好,我叫**,来自于**,开发Android两年时间,在两年中参与过5个项目,参与度比较高的有三个,分别是购物商城类,新闻资讯类和影音视频类,都是从项目开始做到上线,之后维护了几个版本,这三个项目也是对我能力提升最快最大的,简历中都有写到.

Q:你做过商城类,你们的应用是用支付宝支付还是微信支付?是你做的吗?
A:两种支付方式都有,我当时集成的是支付宝,基本步骤是:首先得去支付宝平台上申请APPID,我客户端只需要下载支付宝SDK,根据开发文档,将相文件导入到项目中,并进行清单文件和代码混淆配置,然后我需要将订单信息通过接口发送给我们的服务器,服务器在后台通过密钥加密后将相关数据返回给客户端,客户端通过调用支付宝API来确定用户是否安装了支付宝APP,如果安装了就跳转支付宝APP进行相关的支付流程,如果没有安装,则跳转支付宝的H5页面进行支付流程当支付操作完成后,在客户端显示支付结果,同时支付宝会将支付结果通知给客户端服务器让其修改订单支付状态,客户端拿到自己服务器端订单支付状态展示给用户.

Q:你的应用手机上装了没?让我看看
A:呵呵,不好意思,最近手机有点问题还原系统了,不过这个应用上线了,你可以在应用市场下载到.

Q:好吧.那你懂热修复不?
A:之前开发中没做过,不过我经常逛一些论坛有看到相关的帖子.热修复技术就是在不需要通过下载更新APP情况下达到应用的更新.我个人觉得,热修复技术有它的局限性,它的应用场景是应用上线后有bug或者需要某个小功能临时添加情况下才会热修复,一般我们的应用在上线前都会进行全面的测试,不太可能有大的bug,另外,我们的应用不是需要经常增加一些小功能,如果要增加某个功能,完全可以在下个版本更新的时候添加.一般是像QQ,京东他们会根据节日增加一些应用的特效,当节日过后,又需要取消节日特效才会用到该技术,不过如果咱们的应用也想这么做,我应该能很快搞定.

Q:讲一下如何创建线程?
A:创建线程有两种方式,第一直接new Thread然后重写Thread的run()方法,第二可以自己类实现Runable接口重写run()方法.如果需要执行的任务比较多,可以通过线程池来管理线程,减少创建和销毁线程带来时间和空间上的浪费.我们Android中可以通过AsyncTask进行异步任务的执行,其底层就是用线程池维护线程并通过Handle进行主线程和子线程的数据传输.

Q:Android中跨进程通讯都有哪些方式?
A:Android中一个应用可以理解为一个进程,化进程通讯即跨应用通讯,常用的技术有Intent,AIDL,广播, Content Provider

Q:如何避免ViewPager的预加载数据?
A:这个问题我在上个应用的开发中正好遇到过,最终是通过延迟加载数据实现的.不过我当时也了解到也可以将V4包下的ViewPager拷贝一份,修改预加载设置相关代码,然后在布局文件中使用自己包下的ViewPager即可实现取消预加载.

Q:网络请求你用的什么框架?
A:最近的项目中我用的okhttputils,这个框架是对okhttp的封装,实现链式编程特别好用,不过我在项目中对它再次进行了二次封装,将所需要传入的参数通过Map封装维护,使得代码更便捷管理.

Q:嗯,行吧,看你技术还不错.那你稍等,我给领导说一下.
A:好.
旁白:看着架势是要成的节奏啊,哈哈,感觉也没问啥的,咋就看出技术不错的,看来面试官很有双慧眼啊!哈哈,淡定!淡定!拍张照片先.


过了一会儿,进来一个三十多岁的中年男子,穿着很休闲,应该是技术出身的,不出意外应该是项目经理.
Q:你好,你叫**,Android开发两年了?
A:是的,开发Android两年多了,之前做过三个成熟的项目.

Q:我们最近想招一个技术好点的Android开发,刚开发组长说你还不错,你现在离职吗?
A:嗯,由于一些家里个人因素,刚离职.

Q:方便说一下具体离职原因吗?
A:呵呵,这个……嗯…...不好讲……

Q:看你那么为难,算了.你之前的应用中是用什么访问网络?你懂Socket请求吗?我们APP开发中用经常会用Socket.
旁白:我X,果然被问到Socket,幸亏我提前看过他们的招聘简章特意复习该知识点.
A:我之前开发的应用中用的是http协议请求访问网络.Socket是套接字,我们在客户端可以创建Socket对象,传入IP和端口号,通过该对象获取输出流,并不断的写数据,然后在服务器端也需要创建一个ServerSocket对象,传入端口号,通过调用accept()方法返回一个Socket对象,从而搭建了客户端与服务器端数据传输通道, 通过该Socket对象可以获取输入流对象,即实现了客户端写数据到服务器,当然服务器用Socket对象也可以获取输出流写数据到客户端,客户端通过输入流读取传过来的数据.从而实现数据的双向传输.

Q:挺好,今天公司CEO不在,不过,你面试算是通过了,看你期望薪资是11k,等他明天回来后我跟他说一声,再给你回复.
A:行.那我就先回去了.

以上面试经验总结:
1.  面试过程中要足够的自信
2.  回答问题的时候,如果是自己熟悉的,可以展开说,做到调理清晰,话语简洁.如果被问到不熟悉的知识,可以尽量往自己了解的知识点上引,以做答,千万不能直白的说”不知道”.
3.  回答问题的时候,可以有一些口头禅比如”我刚做的项目中是…...”,”我了解过他的底层是……”,”我会经常逛一些技术论坛研究一些新的技术,有了解到该技术…….”

最后,祝愿大家都能够尽快高薪就业.在2017年好运连连,心想事成,身体健康,阖家欢乐.



作者: nooon    时间: 2017-1-3 16:46


作者: ITXZ12    时间: 2017-1-7 22:05
还有更多的吗
作者: 晴11    时间: 2017-8-22 02:45
会不会被面试公司看到呢




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2