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)、阻塞:

阻塞状态是指线程因为某种原因放弃了 cpu 使用权,也即让出了 cpu timeslice ,暂时停止运行。直到线程进入可运行( runnable )状态,才有 机会再次获得 cpu timeslice 转到运行( running )状态。阻塞的情况分三种:
(一). 等待阻塞:运行( running )的线程执行 o . wait ()方法, JVM 会把该线程放 入等待队列( waitting queue )中。
(二). 同步阻塞:运行( running )的线程在获取对象的同步锁时,若该同步锁 被别的线程占用,则 JVM 会把该线程放入锁池( lock pool )中。
(三). 其他阻塞: 运行( running )的线程执行 Thread . sleep ( long ms )或 t . join ()方法,或者发出了 I / O 请求时, JVM 会把该线程置为阻塞状态。            当 sleep ()状态超时、 join ()等待线程终止或者超时、或者 I / O 处理完毕时,线程重新转入可运行( runnable )状态。

(5)、死亡:线程 run ()、 main () 方法执行结束,或者因异常退出了 run ()方法,则该线程结束生命周期。死亡的线程不可再次复生。

android笔试题二的更多相关文章

  1. android笔试题一

    1.Android DVM(Dalvik VM)的进程和Linux的进程, 应用程序的进程是同一个概念吗? DVM(Dalvik VM)指dalvik的虚拟机.每一个Android应用程序都在它自己的 ...

  2. android笔试题集2

    1.请谈一下Android系统的架构.答:Android系统采用了分层架构,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层. 2.谈谈android大众常用的五种布局.答 ...

  3. android笔试题

    1.请谈一下Android系统的架构. 答:Android系统采用了分层架构,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核心层.   2.谈谈android大众常用的五种布 ...

  4. Mysql笔试题(二)

    (1)表名:购物信息购物人      商品名称     数量A            甲          2B            乙          4C            丙       ...

  5. 笔试题二(java面向对象、多线程、集合)

    1.final关键字的特点 final修饰变量时,在堆内存中的地址是不变的,但对象的内容是可变的.//思考,找例子 2.静态变量的特点 实例变量是用对象引用,要先实例化对象,而静态变量属于类,只要类加 ...

  6. Java笔试题二:读程序

    public class SopResult { public static void main(String[] args) { int i = 4; System.out.println(&quo ...

  7. Android笔试题三

    1.java堆得Young区由哪些组成: Java堆由Perm区和Heap区组成,Heap区由Old区和New区(也叫Young区)组成,New区由Eden区.From区和To区(Survivor)组 ...

  8. java基础笔试题二(集合关系)

    知识点:java集合继承关系(Collection,Map) 1.集合框架体系图 2.java的集合层次 来自博客(http://blog.csdn.net/stubbornaccepted/arti ...

  9. .net笔试题二(填空题、选择题)

    1.面向对象的语言具有_______性.________性._______性答:封装.继承.多态. 2.能用foreach遍历访问的对象需要实现 ____________接口或声明__________ ...

随机推荐

  1. 【log4j2】log4j的升级版log4j2的简单入门使用

    1.jar包 log4j-api.jar    +    log4j-core.jar maven仓库配置: <dependency> <groupId>org.apache. ...

  2. 开发中常用js记录(三)

    (1)Jquery 判断一个元素下是否有指定的class$('div').is('.classname')$('div').hasClass('redColor') (2)获得窗口长宽等$(windo ...

  3. 动车上的书摘-java对象流与序列化

    摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 钢笔不限贵便宜,书法是来自心对手的交流.-泥沙砖瓦浆木匠 一.对 ...

  4. Linux 权限位详解

    1. Linux 权限位 对于权限,有点绕,因为文件的权限和目录的权限是有一些区别的. 在Linux中,有5种权限,分别是,r.w.x.s.t. 可读权限:r 可写权限:w 可执行权限:x Setui ...

  5. Hadoop学习笔记(二):简单操作

    1. 启动namenode和datanode,在master上输入命令hdsf dfsadmin -report查看整个集群的运行情况(记得关闭防火墙) 2. 输入命令查看hadoop监听的端口,ne ...

  6. 数据库 数据去重并取id最大的数据sql

    SELECT    * FROM(SELECT        MAX(id) AS id    FROM        icbc_erp_kj_icbc_result    WHERE STATUS ...

  7. zabbix-proxy使用配置

    简介 zabbix proxy可以代替zabbix server检索客户端的数据,然后把数据汇报给zabbix server,并且在一定程度上分担了zabbix server的压力.zabbix pr ...

  8. MySQL:测试题

    一,表关系的练习测试 请创建如下表关系,并建立相关约束 一,创建表结构数据: 创建的话肯定先创建没有关联的表,老师,课程(关联老师),年级,班级(关联年级),学生(关联班级), 班级任职表 (关联老师 ...

  9. 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  10. 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page1-6

    前言 大家好.这是开通本号的第一篇文章.从事IT行业已经20年了,从使用PowerBuilder做企业信息系统开始,做了七八年开发,然后转型Java不是很成功,从07年之后,我转做产品经理,机缘巧合, ...