安卓面试易备题(五)
这是我整理的安卓面试资料的最后一部分,相信前面的大家都学习的差不多了,希望我们都能找到一份自己想要的工作,一起加油!
?
面试题一:android中的动画有哪几类,它们的特点和区别是什么?
??? 又两种,分别为Tween动画、和Frame动画:
tween动画可以理解为补间动画,我们可以在资源文件中定义动画的类型,也可以通过代码配置,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化。
???????? 另外一种是帧动画,就和放电影一样一帧一帧的,如果使用过Adobe Flash对这两种动画应该相当熟悉。
?
面试题二:说说mvc模式的原理,它在android中的运用。
??? MVC英文即Model-View-Controller,即把一个应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用被分成三个层——模型层、视图层、控制层。
??? 我们Android应用我觉得Activity和listView都可以算是应用了mvc,事实上安卓应用层严格来讲没有那个是用的真正的mvc。
??? 在Android中M就是应用程序中二进制的数据,V就是用户的界面。在Android中C也是很简单的,一个Activity可以有多个界面,只需要将视图的ID传递到setContentView(),就指定了以哪个视图模型显示数据。这个就能说是c。
???????? ListView的数据绑定也可以说是,因为我们要设置adapter,显示就是v,m就是adapter接收的数据,c就是控制显示的东西。
?
面试题三:Service和Activity在同一个线程吗?
??? 是,默认都是主线程。
?
面试题四:java中的soft reference是个什么东西?
??? StrongReference (强引用)是 Java 的默认引用实现, 它会尽可能长时间的存活于 JVM 内, 当没有任何对象指向它时 GC 执行后将会被回收。
?? 而SoftReference(软引用) 会尽可能长的保留引用直到 JVM 内存不足时才会被回收(虚拟机保证), 这一特性使得 SoftReference 非常适合内存缓存(比如做图片缓存)。
?
面试题五:udp连接和TCP的不同之处?
???????? tcp是面向连接的可靠传输,而udp是面向无连接的不可靠的传输,像我们打电话那种独占线路的一般都要用tcp,而对于媒体播放,只要数据传送过去了,有点错误打点马赛克没关系的就可以用udp,QQ是用udp发消息的,但是为啥会收到消息发送失败的提示呢?这是qq在应用层做了处理保证了数据的可靠传输,但是要明白UDP传输本身是不可靠的。
?
面试题六:android开发中怎么去调试bug?
??? 程序中有两种错误:一种是逻辑错误,逻辑错误的处理我一般是在logcat里面打印一些log信息跟踪运行情况,还可以打一个端点,一路watch过去,看看在哪里出错了。
?
面试题六:JNI调用常用的两个参数:
JNIEnv *env, jobject javaThis
?
面试题七:书写出android工程的目录结构
src
?android. jar
? asset
? res
? gen
? manifest
?
面试题八:ddms 和traceview的区别?
??? ddms我们一定不陌生,像我们模拟给虚拟机之间发短信啊,打电话啊都用的ddms,全称是daivilk debug manager system。
??? traceview是什么呢?我们可能不太了解,我们现在来写一段代码就知道了 。
1.在应用的主activity的onCreate方法中加入Debug.startMethodTracing("要生成的traceview文件的名字");
2.同样在主activity的onStop方法中加入Debug.stopMethodTracing();
3.同时要在AndroidManifest.xml文件中配置权限
?? <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
3.重新编译,安装,启动服务,测试完成取对应的traceview文件(adb pull /sdcard/xxxx.trace)。
4.直接在命令行输入traceview xxxxtrace,弹出traceview窗口,分析对应的应用即可。
然后我们就会发现,traceview 分析程序执行时间和效率。在企业做开发我们可能经常听到这么一个专业术语:KPI : key performance information : 关键性能指标:
在项目交付的时候要参照文档,文档里面可能就定义了你哪个部分不能超过多长时间,这就可以和traceview对比,我们通过看traceview就知道哪些地方应该做优化。
?
?