27、如何签名** **
应用要想升级必须满足两个条件
包名一致
签名一致
微信 com.weixin
流氓程序 com.weixin
所以:签名文件不能丢,签名密码也不能忘,
真的丢了:让原应用下架,重新打包签名生成新的 apk ,上架
28、大用户量、大数据量** **
对于大用户量,大数据量,需要解决的是并发的问题,这个是服务器需要考虑的事情。Android 客户端重点是信息的展示和与用户的交互。客户端只能通过其他的方式适当的限制客户端的访问服务器,来减轻服务器的负担。比如一秒的时间内不允许用户点击两次按钮提交服务器数据,这个对用户体验是每啥影响的,但是却可以大大减少服务器的访问量。
29、抽象** **
这个可以结合谷歌电子市场项目说一说LoadingPage的抽取。由于每一个界面都需要去加载网络数据,所以每一个界面都有几种共同的状态:加载中、加载失败、空数据、加载成功。而加载中、加载失败、空数据对于每一个界面来说他们的显示内容都是一样的,所以把这些通用的View在父类进行创建。而加载成功之后的布局每一个界面都不太一样,所以在LoadingPage中,把创建成功View的这个方法进行抽象,有具体的子类进行实现。
抽取的一般思想为:1、父类不知道如何实现的方法:抽象,让子类实现方法2、父类不知道什么数据类型:泛型,T代表的就是一种数据类型,在定义子类的时候确定下来的
30、你是如何使用**SVN的 **
svn的使用方式一般分为两种,一种是直接在eclipse上安装插件,另外一种就是不使用插件,让提交代码和编辑代码分离开。
32、如何测试代码?如何保证程序的健壮性?** **
可以使用Monkey测试工具帮助我们完成程序的健壮性。
命令如下:adb shell monkey -p 包名 --ignore-crashes --ignore-timeouts 10000
具体工作的使用场景将会和logcat命令结合起来。
adb logcat -v time > D:\log.txt
33、为什么回答的这么流畅** **
在工作的时候一般我们都是以结果为主的,能解决问题就可以。但是我有一个习惯,就是我经常总结。而且来面试的时候我也适当的准备了一下。
34、说说** MVC 模式的原理,在Android 中的运用。 MVC 是 Model、View、Controller 三部分组成的。其中View 主要由 xml 布局文件,或者用代码编写动态布局来体现。Model 是数据模型,其实类似 javabean,不过这些 JavaBean 封装了对数据库、网络等的操作。Controller 一般由 Activity 负责,它根据用户的输入,控制用户界面数据的显示及更新model 对象的状态,它通过控制 View 和 Model 跟用户进行交互。
MVC在Android当中体现的并不是很明显,在web当中体现的明显些。
35、你做过支付吗?支付的流程是怎样的?** **
主要做过支付宝的支付,在继承支付宝支付功能的时候,需要先到支付宝平台上进行在线签约,得到PID,然后再生成一下公钥和密钥。整个支付流程涉及四个对象以及四个重要信息。
四个重要对象:应用客户端(电商apk)、公司自己的电商服务器、支付宝客户端、支付宝服务器。
四个重要的信息:订单的数据,用户的支付宝账户和密码,电商公司的支付宝账户,电商服务器的通知链接
具体的支付流程如下:
36、使用到的一些工具** **
比如:adb、ddms、traceview、beyond compare、monkey、mat、hierarchyviewer、draw9patch、heap
traceview:分析程序执行的方法效率,可以图形化的表现出方法的执行时长。从而帮助开发者优化性能。
logcat如何过滤:添加tag、过滤框
heap:看应用程序内存的
beyond compare:文本比较
monkey:压力测试
mat:内存分析工具
hierarchyviewer:分析布局视图的
draw9patch:绘制.9图片的
37、java与js互调** **
目前越来越多的Android App 都采用了混合编程的架构,也就是Android 原生控件+html5,当然html 页面也必须运行在webview 控件中,我们可以简单吧webview 看成内置到app 中的小型浏览器,这里面最核心的问题就是html 中的js 代码如何调用java 代码,比如js 调用java 代码,然后打开一个新的Activity 界面。比如淘宝已经大量采用了h5 来实现其客户端功能,商品列表是Android 端控件,点击商品列表进入某个商品详情可能就是h5 界面,这里就存在java 给js 传递数据的问题,点击h5 的商品详情界面的立即购买,可能就又从h5 跳转到了Activity 界面,这里又牵扯到js 给java 传递数值的问题。
** **
38、**5.0是怎样对系统性能进行优化的? **
jvm :java虚拟机
dalvik:在jvm的基础上进行了对移动设备的优化
art:新的虚拟机,效率高。
apk创建运行的一般流程:代码--字节码class--机器码
dalvik是实时编译的,
而art是预先编译,在安装的时候就把机器码编译出来存起来。