android笔试题二
1、android系统架构:
Linux内核——标准库——Framework层——应用层
Linux层包括:Android系统的核心服务,硬件驱动,进程管理,系统安全等等
(现在又加了一层变成了:Linux内核——硬件抽象层——标准库——Framework层——应用层)
2、UI界面框架图:
3、View的测量模式:EXACTLY,AT_MOST,UNSPECIFIED。
4、自定义View与ViewGroup的时候应该注意什么?
自定义ViewGroup的时候应该注意重写onLayout来控制子类显示的位置。
如果需要支持wrap_content还要重写onMeasure()。
自定义View的时候,如果需要支持wrap_content,需要重写onMeasure().
5、自定义view的种类:
(1)、对已有的组件进行拓展
(2)、通过组合来实现新的控件
(3)、重写View来实现全新的控件
6、实现滑动的方法:
(1)、通过layout方法。
(2)、通过LayoutParam来改变一个view的位置(必须有一个父布局才能够获取到组件的LayoutParam)。
(3)、scrollTo,scrollBy方法。(移动的是组件里面的内容,dx和dy如果是负数的话,那么内容往正方向移动,正数则往负方向移动)。
(4)、Scroller。
(5)、属性动画。
(6)、ViewDragHelper
(7)、offsetLeftAndRight()同时对左和右进行偏移。
offsetTopAndBottom()同时对上和下进行偏移。
7、独立像素dp与px的换算:
android系统使用mdpi即密度值为160的屏幕作为标准,在这个屏幕上,1px=1pd,各个分辨率直接的换算比例为:
ldpi:mdpi:hdpi:xhdip:xxhdpi=3:4:6:8:12
8、SurfaceView与View的区别:
(1)、View主要用于主动更新的情况,而SurfaceView主要用于被动更新的情况,例如频繁地刷新。
(2)、View是在主线程中进行刷新的,而SurfaceView是通过一个子线程来刷新页面的。
(3)、View在绘图的时候没有采用双缓冲机制,而SurfaceView在底层实现机制中就已经实现了双缓冲机制。
9、android的安全机制:
(1)、第一道防线:代码安全机制——代码混淆proguard。
(2)、第二道防线:应用接入权限控制——AndroidMainifest文件权限声明、权限检查机制。
(3)、第三道防线:应用签名机制——数字证书(Android系统不会安装没有签名的APP)。
(4)、第四道防线:Linux内核层安全机制——Uid访问权限控制
(5)、第五道防线:Android虚拟机沙箱机制——沙箱隔离
10、性能优化相关的工具:
(1)、Android Link:有助于发现代码中隐藏的一些问题,比如布局嵌套太多等等。
(2)、Memory monitor:这个是android studio自带的内存监视工具,它可以很好地帮助我们进行内存实时分析。
(3)、TraceView:优化APP性能。
(4)、MAT工具分析APP内存状态。
11、Serializable与Parcelable的区别:
Serializable是java中的序列化接口,使用简单,但是开销大,序列化与反序列化过程需要大量的I/O操作。
Parcelable是android中的序列化方式,更加适用于Android平台上,不过使用起来稍微麻烦一点,但是效率高,这是android推荐的序列化方式,因此我们要首选Parcelable。
Parcelable主要用于内存序列化上,通过将对象序列化到存储设备中,或者讲对象序列化后通过网络传输也是可以的,不过过程比较复杂,因此这两种情况下将已使用Serializable。
12、多进程会造成什么问题:
(1)、静态成员与单例模式完全失效。
(2)、同步机制完全失效。
(3)、SharedPrefrences可靠性降低
(4)、Application多次创建
13、IPC的方式有哪些,区别是什么:
名称 | 优点 | 缺点 | 适用场景 |
Bundle | 简单易用 | 只能够传输Bundle支持的数据 | 四大组件之间的进程间通讯 |
文件共享 | 简单易用 | 不适合高并发场景,并且无法做到进程间的即时通信 | 无并发访问情形,简单交换的数据实时性不高的场景 |
AIDL | 功能强大,支持一对多并发通信 | 使用稍微复杂,需要处理好线程同步 | 一对多通信且有RPC需求 |
Messenger |
功能一般,支持一对多串行通信 支持实时通信 |
不能很高的处理高并发情形,不支持RPC,数据通过 Messenger进行传输,因此只能够传输Bundle支持 的数据类型 |
低并发的一对多即时通信,无RPC需求,或者无需返 回结果的RPC需求 |
ContentProvider |
在数据源访问方面功能强大,支持一对多 并发数据共享,可通过Call方法拓展其他 操作 |
可以理解为受约束的AIDL,主要是提供数据源的 CRUD操作 |
一对多的进程间数据共享 |
Socket |
功能强大,可以通过网络传输字节流,支 持一对多并发实时通信 |
实现细节稍微有点繁琐,不支持直接的RPC | 网络数据交换 |
14、线程的几种状态:
(1)、新建:新创建了一个线程对象。
(2)、就绪:线程对象创建后,其他线程(比如 main 线程)调用了该对象 的 start ()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获 取 cpu 的使用权 。
(3)、运行:可运行状态( runnable )的线程获得了 cpu 时间片( timeslice ) ,执行程序代码。
(4)、阻塞:
(5)、死亡:线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。
android笔试题二的更多相关文章
- android笔试题一
1.Android DVM(Dalvik VM)的进程和Linux的进程, 应用程序的进程是同一个概念吗? DVM(Dalvik VM)指dalvik的虚拟机.每一个Android应用程序都在它自己的 ...
- android笔试题集2
1.请谈一下Android系统的架构.答:Android系统采用了分层架构,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 2.谈谈android大众常用的五种布局.答 ...
- android笔试题
1.请谈一下Android系统的架构. 答:Android系统采用了分层架构,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 2.谈谈android大众常用的五种布 ...
- Mysql笔试题(二)
(1)表名:购物信息购物人 商品名称 数量A 甲 2B 乙 4C 丙 ...
- 笔试题二(java面向对象、多线程、集合)
1.final关键字的特点 final修饰变量时,在堆内存中的地址是不变的,但对象的内容是可变的.//思考,找例子 2.静态变量的特点 实例变量是用对象引用,要先实例化对象,而静态变量属于类,只要类加 ...
- Java笔试题二:读程序
public class SopResult { public static void main(String[] args) { int i = 4; System.out.println(&quo ...
- Android笔试题三
1.java堆得Young区由哪些组成: Java堆由Perm区和Heap区组成,Heap区由Old区和New区(也叫Young区)组成,New区由Eden区.From区和To区(Survivor)组 ...
- java基础笔试题二(集合关系)
知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...
- .net笔试题二(填空题、选择题)
1.面向对象的语言具有_______性.________性._______性答:封装.继承.多态. 2.能用foreach遍历访问的对象需要实现 ____________接口或声明__________ ...
随机推荐
- JSP中的作用域
application用于全局变量,可以获取全局的数据.作用范围比session大. JSP常用内置对象总结:out对象:用于客户端输出数据.request对象:用于处理客户端发送的请求的数据信息.r ...
- shell编程其实真的很简单(一)
如今,不会Linux的程序员都不意思说自己是程序员,而不会shell编程就不能说自己会Linux.说起来似乎shell编程很屌啊,然而不用担心,其实shell编程真的很简单. 背景 什么是shell编 ...
- 一文让你彻底理解 Java NIO 核心组件
背景知识 同步.异步.阻塞.非阻塞 首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下. 同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节). 异步:相对于同 ...
- com.javax.servlet 慢慢看完慢慢学完
1.接口 RequestDispatcher 类说明 定义一个对象,从客户端接收请求,然后将它发给服务器的可用资源 (例如Servlet.CGI.HTML文件.JSP文件).Servlet引擎创 建r ...
- 使用 Synchronized 关键字
使用 Synchronized 关键字来解决并发问题是最简单的一种方式,我们只需要使用它修饰需要被并发处理的代码块.方法或字段属性,虚拟机自动为它加锁和释放锁,并将不能获得锁的线程阻塞在相应的阻塞队列 ...
- python对象属性管理(2):property管理属性
使用Property管理属性 python提供了一种友好的getter.setter.deleter类方法的属性管理工具:property. property()是一个内置函数,它返回一个Proper ...
- 翻译:DECLARE HANDLER语句(已提交到MariaDB官方手册)
本文为mariadb官方手册:DECLARE HANDLER的译文. 原文:https://mariadb.com/kb/en/library/declare-handler/我提交到MariaDB官 ...
- [转]C#串口通信 SerialPort类
本文转自:https://blog.csdn.net/weixin_41415541/article/details/80921956 因为公司项目需要将USB扫码枪改为串口扫码枪,串口扫码的好处在于 ...
- Webservice开发、引用
一.Webservice开发 1.在解决方案右键添加新建项目,新建空的web应用程序 2.在新建的项目右键添加新建项选择web服务 3.这里就是webservice 里的方法,可以添加自己需要的方法( ...
- C# winform自动更新 (附 demo下载)
随着需求的变化,如果Server每次更新出新的内容,Client都要重新安装的话. 太过于复杂化. 所以自动更新是很有必要的. 一..NET自带的更新方式 以服务器端为主 (自动更新,微软爸 ...