安卓面试题整理

1、安卓系统架构
内核层:linux kernel,包含一些硬件驱动(如camera driver,display driver,WiFi driver等)
硬件抽象层(HAL):通过定义硬件“驱动”的接口来进一步降低Android系统与硬件的耦合
系统运行层库:Libraies和runtime,C/C++层
应用程序框架层:framework包含系统级服务进程的实现,为上层应用提供API接口
应用程序层:系统应用和三方应用

2、Android设计模式
①单例模式:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例;
②Build模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示;
③观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖他的对象都能得到通知并被自动更新;
④适配器模式:GridView、ListView的Adapter;
⑤工厂模式:一个抽象的接口,多个抽象接口的实现类,一个工厂类,用来实例化抽象的接口;
⑥装饰者模式:创建了一个装饰类,用来包装原有的类,并在保持类方法完整性的前提下,提供了额外的功能。

3、handler
用于线程间通讯,因为Android主线程不能进行耗时操作,子线程是不能更新UI
handler整个流程中,主要有四个对象,handler,Message,MessageQueue,Looper。在主线程中创建handler对象, 通过要传送的消息保存到Message中,handler.post,handler通过调用sendMessage方法将Message发送到MessageQueue中,Looper对象就会不断的调用loop()方法 不断的从MessageQueue中取出Message交给handler进行处理。从而实现线程之间的通信。

4、binder机制
binder驱动:运行在内核空间的内核模块,用户进程之间通过这个模块作为桥梁进行通信。
Binder并不是Linux内核的一部分,它是怎么做到访问内核空间的呢? Linux的动态可加载内核模块(Loadable Kernel Module,LKM)机制解决了这个问题;模块是具有独立功能的程序,它可以被单独编译,但不能独立运行。它在运行时被链接到内核作为内核的一部分在内核空间运行。
binder机制的优点:①性能上更高效,比较socket,只需拷贝一次数据;②安全性:Binder支持通信双方进行身份校验。
Binder通信机制分三步:①ServerManager在其内部维护一张表,ServerManager的进程负责管理所有需要通信的进程信息;
②服务端进程向ServerManager注册信息;
③客户端进程向ServerManager取得信息,通过Binder驱动与服务端进程通信;

5、Android App优化
①卡顿优化:布局优化:减少层级,用标签复用;绘制优化:(过度绘制是指在屏幕上的某个像素在同一帧的时间内被绘制了多次。)移除XML中非必须的背景,使用 canvas.clipRect()识别可见区域;启动优化:闪屏页SplashActivity通过 Profile GPU Rendering 检测丢帧情况。
②内存优化:内存检测工具:Memory Monitor、LeakCanary
③耗电优化:Battery Historian,通过输入电量分析文件,显示消耗情况
④APK瘦身:减少安装包大小,减少不必要的资源文件

6、事件分发机制
事件分发机制主要涉及:activtiy,viewgroup,view
三个函数,OnInterceptTouchEvent(),DispatchTouchEvent(),OnTouchEvent()

7、自定义View
三种方式:组合现有控件,继承现有控件,继承View
重写方法:onMeasure、 onLayout、onDraw

8、进程间通信IPC
①Bundle:Activity、Service、BroadcastReceiver都支持在Intent中传递Bundle数据,因为Bundle实现了Parcelable接口,所以它可以在不同的进程间传输数据。
②文件共享:两个进程通过读写同一个文件来交换数据。
③Messager:可以在不同进程中传递Message对象,它的底层实现是AIDL。一次只能处理一个请求。
④AIDL:可以处理大量的并发请求,使用方法:创建一个Service和一个AIDL接口,接着创建一个类继承自AIDL接口中的Stub类并实现Stub中的抽象方法,在Service的onBind方法中返回这个类的对象,然后客户端绑定服务端Service,建立连接后就可以访问远程服务了。
⑤ContentProvider
⑥Socket:网络数据交换

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值