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遍历访问的对象需要实现 ____________接口或声明__________ ...
随机推荐
- Lock wait timeout exceeded
MySQL事务锁问题-Lock wait timeout exceeded问题: 一次ios在请求接口响应时间超长,耗时几十秒才返回错误提示,后台日志中出现Lock wait timeout exce ...
- 使用TPC-DS工具生成数据
1.下载工具 两种渠道 a.官网(建议直接跳过-) 地址:http://www.tpc.org/tpc_documents_current_versions/current_specification ...
- [CXF REST标准实战系列] 二、Spring4.0 整合 CXF3.0,实现测试接口
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Reprint it anywhere u want. 文章Points: 1.介绍RESTful架构 ...
- two's complement,2的补码
本文为作者原创,允许转载,但必须注明原文地址:https://www.cnblogs.com/byronxie/p/10117265.html Let's start with one questio ...
- 图片预览(适用于IE6,9,10,Firefox)
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...
- 【bioinfo】生物信息学——代码遇见生物学的地方
注:从进入生信领域到现在,已经过去快8年了.生物信息学包含了我最喜欢的三门学科:生物学.计算机科学和数学.但是如果突然问起,什么是生物信息学,我还是无法给出一个让自己满意的答案.于是便有了这篇博客. ...
- ARM 汇编指令 ADR 与 LDR 使用
简介 这两个都是伪指令:ADR 是小范围的地址读取伪指令,LDR 是大范围的读取地址伪指令.可实际使用的区别是: ADR 是将基于 PC 相对偏移的地址值或基于寄存器相对地址值读取的伪指令,而 LDR ...
- JS_object添加变量属性_动态属性
总结,给对象动态添加变量属性的方法如下: obj[变量]=变量值; 备注: obj.属性=属性值 ; obj={属性:属性值}; 这两种方式添加的属性都不能使用变量作为属性. 犯过的错误: var t ...
- 【转载】在Centos系统上采用二进制文件部署Node.js环境
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,用来方便地搭建快速的易于扩展的网络应用.Node.js 使用了一个事件驱动.非阻塞式 I/O 的模型,使其轻量又 ...
- Intellij idea 项目目录设置 与包的显示创建
1.把目录设置成为层级结构显示.和eclipse类似 去掉flatten Packages前面的勾 在项目中创建多级包的时候要注意,必须在Java下建,并且要全输入才能识别