Android面试题总结

1、Android的四大组件:

(1)、Activity:一个Activity展示成为一个可视化的用户界面,是应用程序与用户交互的窗口;Activity是最基本也是最复杂的一个组件;从视觉角度来看,Activity占据当前窗口,相应所有的窗口事件,具有菜单,按钮等界面元素;从内部逻辑角度来看,Activity为了实现各个界面的跳转,需要做很多持久化的事情,妥善管理生命周期和一些逻辑跳转;

(2)、Service:服务,是运行在后台的一个组件;尽管它没有可视化的用户界面,但它也封装了一个完整的逻辑功能实现,用于为其他组件提供服务,或者是起到一个监控的作用;

(3)、BroadcastReceiver,广播接受者,它会对发送出来的广播(广播是应用程序间传递消息的机制)进行过滤,接收它所感兴趣的部分。它本身不执行任何的任务,但会启动一个Activity相应或者是通过notificationManager通知给用户;BroadcastReceiver的子类需要重写其onReceive()方法,当BroadcastReceiver遇到感兴趣的消息时,就会相应这个方法;

(4)、ContentProvider,内容提供者,是应用程序间唯一的共享数据的途径;一般它的主要功能就是存储并检索数据,以及向其他的应用程序提供数据;一般,我们可以将底层数据封装成ContentProvider,这样可以隐藏很多底层数据操作的细节,是的应用程序有很好的的扩展性和开放性;


2、如果理解面向对象思想:

(1)、面向对象主要有四大特征:抽象性、封装性、继承性、多态性;

(2)、在实际的处理问题过程中,我们可以把一个大的功能模块划分成一个个小得不能再细分的功能来分析;然后我们将这些小功能的共同特征(实例变量或者操作方法)抽象出来形成一个基类,这就是面向对象的抽象性;例如:我要实现画不同图形的功能,不同图形的共同特征有:起始坐标点,画笔等实例变量,onTouchDown(),onTouchMove(),onTouchMove()等方法,那么我在这个抽象类中定义起始坐标点,画笔等实例变量,声明onTouchDown(),onTouchMove(),onTouchMove()等方法

(3)、我们在这个基类的基础上,具体功能具体分析,派生出能具体实现这个功能的类,这就是继承性;那么,我在具体实现画圆这个功能的时候,我们定义一个类继承基类,并在基类的基础上添加半径等实例变量,重写方法来具体的实现画圆;

(4)、对于类中的实例变量和方法,我们可以采用private等修饰符,将他们对其他的类隐藏起来,这样就可以隐藏很多操作的细节,使得程序具有可扩展性和开放性,这个就是面向对象的封装性;例如我们具体实现在View中画图时,画图的类就像是一个画图的工具,我们不需要知道这个工具的内部细节信息,我们只是需要能够使用这个工具去画图就可以了;

(5)、通过对方法的重载或者重写实现每个对象能够结合自身的方式去相应共同的消息;例如,在View中画图时,我们可以先定义一个抽象类的对象,在具体实现画什么图时,我们再将这个抽象类对象初始化成具体的画图类对象;


3、进程与线程的区别:

(1)、进程是一个正在运行的应用程序的实体,是系统资源分配和拥有以及独立调度的基本单位;

(2)、线程是最小的执行单位,不能分配系统资源,只能多个线程共享一个进程的资源;

(3)、线程之间可以直接的读写数据,但是进程间通信需要使用IPC机制;

(4)、多个线程间的并发运行是为了节省CPU的运行时间,提高CPU的运行效率,而多个进程间的并发操作是为了实现多个应用程序的运行;

(5)、线程间的上下文切换要比进程间的上下文切换快的多;



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值