版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[+]
一面 40 min二面 40 min三面常遇到的Android项目实例问题:
1、支付宝支付集成?
基本步骤是:首先得去支付宝平台上申请APPID,我客户端只需要下载支付宝SDK,根据开发文档,将相文件导入到项目中,并进行清单文件和代码混淆配置,然后我需要将订单信息通过接口发送给我们的服务器,服务器在后台通过密钥加密后将相关数据返回给客户端,客户端通过调用支付宝API来确定用户是否安装了支付宝APP,如果安装了就跳转支付宝APP进行相关的支付流程,如果没有安装,则跳转支付宝的H5页面进行支付流程当支付操作完成后,在客户端显示支付结果,同时支付宝会将支付结果通知给客户端服务器让其修改订单支付状态,客户端拿到自己服务器端订单支付状态展示给用户.
2、热修复?
之前开发中没做过,不过我经常逛一些论坛有看到相关的帖子.热修复技术就是在不需要通过下载更新APP情况下达到应用的更新.我个人觉得,热修复技术有它的局限性,它的应用场景是应用上线后有bug或者需要某个小功能临时添加情况下才会热修复,一般我们的应用在上线前都会进行全面的测试,不太可能有大的bug,另外,我们的应用不是需要经常增加一些小功能,如果要增加某个功能,完全可以在下个版本更新的时候添加.一般是像QQ,京东他们会根据节日增加一些应用的特效,当节日过后,又需要取消节日特效才会用到该技术,不过如果咱们的应用也想这么做,我应该能很快搞定.
3、如何创建线程?
创建线程有两种方式,第一直接new Thread然后重写Thread的run()方法,第二可以自己类实现Runable接口重写run()方法.如果需要执行的任务比较多,可以通过线程池来管理线程,减少创建和销毁线程带来时间和空间上的浪费.我们Android中可以通过AsyncTask进行异步任务的执行,其底层就是用线程池维护线程并通过Handle进行主线程和子线程的数据传输.
4、Android中跨进程通讯都有哪些方式?
Android中一个应用可以理解为一个进程,化进程通讯即跨应用通讯,常用的技术有Intent,AIDL,广播,Content Provider
5、如何避免ViewPager的预加载数据?
这个问题我在上个应用的开发中正好遇到过,最终是通过延迟加载数据实现的.不过我当时也了解到也可以将V4包下的ViewPager拷贝一份,修改预加载设置相关代码,然后在布局文件中使用自己包下的ViewPager即可实现取消预加载.
6、网络请求你用的什么框架?
最近的项目中我用的okhttputils,这个框架是对okhttp的封装,实现链式编程特别好用,不过我在项目中对它再次进行了二次封装,将所需要传入的参数通过Map封装维护,使得代码更便捷管理.
7、Socket请求?
我之前开发的应用中用的是http协议请求访问网络.Socket是套接字,我们在客户端可以创建Socket对象,传入IP和端口号,通过该对象获取输出流,并不断的写数据,然后在服务器端也需要创建一个ServerSocket对象,传入端口号,通过调用accept()方法返回一个Socket对象,从而搭建了客户端与服务器端数据传输通道, 通过该Socket对象可以获取输入流对象,即实现了客户端写数据到服务器,当然服务器用Socket对象也可以获取输出流写数据到客户端,客户端通过输入流读取传过来的数据.从而实现数据的双向传输. 说说自己实习的工作内容;网络框架用的什么,OkHttp 的功能是什么;ArrayList 和 LinkedList 的区别?造成区别的原因是什么,为什么删查的复杂度不同;Hashmap 的实现原理是什么;Java 反射了解过没有;Java GC 了解过没有,如何判断一个对象是否可以被GC;Java 线程同步了解不,同步方法在不同的实例之间是否仍然保持同步,有没有什么隐患;Java 类加载机制了解不,双亲委派原理;Android 事件分发机制了解不,简述一下;Android 绘制过程,onMeasure 的原理,解决了什么问题;你有什么问题要问的
