[干货]2017已来,最全面试总结——这些Android面试题你一定需要

吊炸天!74款APP完整源码!

[干货精品,值得收藏]超全的一线互联网公司内部面试题库,有了它,妈妈再也不用担心我进不了大公司了!

[干货,阅后进BAT不是梦]面试心得与总结---BAT、网易、蘑菇街

[精品干货]面试题库第二波:java面试一定会遇到的56个面试题

[面经福利]如何进入百度、阿里,一个6年Android老司机的面经

2016年百度校招小结:我做技术面试官的一些思考(想进百度的快看)

面试问答总结:
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.  回答问题的时候,可以有一些口头禅比如”我刚做的项目中是…...”,”我了解过他的底层是……”,”我会经常逛一些技术论坛研究一些新的技术,有了解到该技术…….”



记录百度校招现场面试经历,废话不多说,直接上问题(内推+校招,6面,内心是崩溃的!)

一面 40 min

  1. 自我介绍;
  2. 布局优化的过程;
  3. 性能优化有哪些方面;
  4. 项目经历;
  5. Git 操作;
  6. 单链表,O(1)复杂度内删除一个结点,写算法;
  7. 数据解析过程、代码设计过程中的容错机制有没有;
  8. 手写单例模式;
  9. 说说常见的设计模式;
  10. 讲讲 MVP,项目中如何迁移的。

二面 40 min

  1. 自我介绍;
  2. 布局优化的经验;
  3. 性能优化的经验;
  4. 网络库 Volley 的过程;
  5. 常见的设计模式,手写适配器的类图;
  6. 手写堆排序;
  7. 最短路径的算法思想;
  8. 连续子序列问题,保证 i < j, Ai < Aj 的算法思想;

三面

  1. 自我介绍;
  2. 举一两个例子说明自己的自我学习程度较高;
  3. 评价自己的算法水平,手写冒泡算法和单例模式;
  4. 饿汉式单例和懒汉式单例的区别;
  5. 饿汉式和双重检索的单例哪个是线程安全的;
  6. 讲讲 Android 中的四大组件;
  7. 讲讲 Servie 的生命周期;
  8. 一个 Activity 的使用 startService 启动一个 Service, 然后在绑定 Service, 此时 stopService 后,还需要解绑 Activity 吗;
  9. 一个 Activity 绑定 Service 后,在 startService ,然后在 stopService,此时 Service 是否还需要解绑;
  10. 内容提供者使用过没有;
  11. 什么时候开始学 Android,本科做的东西讲讲;
  12. 你有什么要问的没有。

你可能感兴趣的:(exam)