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. Asp.net 性能监控之压测接口“卡住” 分析

    问题描述:web api项目接口压测.前期并发100,500没出现问题,平均耗时也在几百毫秒.当并发1000时候,停留等待许久,看现象是jemeter卡住,没返回,时间过了许久,才正常. 解决过程: ...

  2. Anaconda下载地址

    Anaconda installer archive:地址1: https://repo.continuum.io/archive/地址2:https://mirrors.tuna.tsinghua. ...

  3. wsgiref源码解析

    wsgiref是PEP 333定义的wsgi规范的范例实现,里面的功能包括了: wsgi的环境变量 应答头部的处理 实现简单的HTTP服务器 简单的对程序端和服务器端校验函数 我们先看一个简单的代码实 ...

  4. strace命令用法

    -tt 在每行输出的前面,显示毫秒级别的时间 -T 显示每次系统调用所花费的时间 -v 对于某些相关调用,把完整的环境变量,文件stat结构等打出来. -f 跟踪目标进程,以及目标进程创建的所有子进程 ...

  5. 利用max-height适应多尺寸屏幕的下拉动画

    移动设备的特点之一便是屏幕尺寸多种多样,所以我们在制作针对移动设备的动画时必须不同尺寸屏幕的兼容性.比如我们要制作以下动画:红框2为详细内容,默认收起:红框1处为事件响应热区,点击后展开或收起红框2的 ...

  6. 使用.NET Hardware Intrinsics API加速机器学习场景

    ML.NET 0.6版本刚刚发布不久,我们知道ML.NET代码已经依赖于使用本机代码库的性能矢量化.这是一个重新实现托管代码中现有代码库的机会,使用.NET Hardware Intrinsics进行 ...

  7. Java虚拟机监控命令

    熟悉java的人都知道jdk的bin目录中有很多小工具,其中就包括用于监视虚拟机和故障处理的工具,今天就来仔细了解下各个工具的用法 jps JVM Process Status Tool,用于显示指定 ...

  8. Mysql 调优和水平扩展思路

    系统调优参数 一些比较重要的参数: back_log:back_log值指出在MySQL暂时停止回答新请求之前的短时间内多少个请求可以被存在堆栈中.如果MySql的连接数据达到max_connecti ...

  9. vue_drf之视频接口

    一.vue-video 1,安装依赖 npm install vue-video-player --save 2,main.js文件中加载组件 require('video.js/dist/video ...

  10. Python 的名称空间和作用域

    最开始对名称空间的了解是在学习函数的时候,那时候知道了作用域的查找顺序,以及全局名称空间和局部名称空间,产生疑惑的时候为学递归的时候,那时候还没有名称空间这个概念,只知道递归有个最大深度,那时候以后递 ...