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. HBase相关的一些点

    1.在运行Hbase时,如果遇到出错之后: 可以通过{HBASE_HOME}目录,我的是在/usr/soft/hbase下的logs子目录中的日志文件查看错误原因.2.启动关闭Hadoop和HBase ...

  2. 测试工具之Fiddler

    Fiddler是一款很好的抓包分析工具,里面有很多小功能,这里介绍常用功能 Fiddler下载地址: https://www.telerik.com/download/fiddler 下载完成后,直接 ...

  3. java super和this总结

    今天群里有人问我怎么复写父类的构造函数,我当时听错了以为是一般方法,然后就对他说只要同名就可以,然后他告诉我错了,我再仔细看,才知道他问的是复写 父类的构造方法,其实自己也不知道子类能不能复写父类的构 ...

  4. 使用 DryIoc 替换 Abp 的 DI 框架

    一.背景 你说我 Castle Windsor 库用得好好的,为啥要大费周章的替换成 DryIoc 库呢?那就是性能,DryIoc 是一款优秀而且轻量级的 DI 框架,整个项目代码就两个文件,加起来代 ...

  5. 给iPhone手机安装*.ipa

    首先手机连接电脑,打开 ITunes. 左上角点击文件,再点击添加到资料库. 找到你要安装的ipa点击选择打开 好了ipa已经添加进去后,你会看你你刚才添加进去的应用在列表内,点击左上角一个手机的图标 ...

  6. 内核第三讲,进入ring0,以及编写第一个内核驱动程序.

    内核第三讲,进入ring0,以及编写第一个内核驱动程序. PS: 请下配置双机调试,下方有可能用到.如果不配置,则你可以不用调试, 博客连接: http://www.cnblogs.com/iBina ...

  7. js 日期格式 转换 yyyy-MM-dd

    之前js获取到数据库的Date,总是显示成: 后来知道是js 的Date 格式不能直接转换常用的yyyy-MM-dd 的格式 Date.prototype.yyyymmdd = function () ...

  8. Go语言学习笔记(三) [控制结构、内建函数]

    日期:2014年7月21日   一.控制结构   1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语 ...

  9. MySQL抓包工具:MySQL Sniffer【转】

    本文来自:https://github.com/Qihoo360/mysql-sniffer 简介 MySQL Sniffer 是一个基于 MySQL 协议的抓包工具,实时抓取 MySQLServer ...

  10. laravel5.5 Syntax error or access violation: 1071 Specified key was too long

    在laravel5.5执行数据迁移时 php artisan migrate 先说下系统环境: ubutun Ubuntu 16.04.3 LTS mysql:5.6.35-log 经查自Larave ...