Android

android常见面试整理:

一.图片缓存方式:

为了节约用户流量,应用一般会将图片缓存起来。图片缓存一般分为内存缓存和外存缓存。内存缓存运用java的缓存机制,在程序完全退出后,缓存所在的内存空间可能被其它应用程序占用从而丢失。外存缓存一般放在程序特有的访问空间或者sd卡中,在sd卡中存放的资源为公有资源,其它程序也可以访问,且对用户来讲没有一个强制清除缓存的规范机制。
1.利用ImageLoader
2利用fresco

二.自定义控件的种类:

1)一般的,重写控件继承原控件
2)将多种控件进行组合。自定义组合控件
3)在原控件的基础上,增加功能。

三、listview升级版使用RecyclerView

RecyclerView是一个强大的滑动组件,与经典的ListView相比,同样拥有item回收复用的功能,但是直接把viewholder的实现封装起来,用户只要实现自己的viewholder就可以了,该组件会自动帮你回收复用每一个item。</font>

android新组件RecyclerView使用介绍和进阶使用,替用Gallery

四、数据存储方式, SharedPreferences存储数据的方式:xml方式

存储数据用xml方式,json方式。

五、android框架:

Android_第1张图片
1.应用程序
2.应用程序框架
3.系统运行库
4.Linux 内核

六、网络连接udp和tcp的区别:

udp和tcp是属于什么层?“网络层”
UDP:User Datagram Protocol,用户数据包协议,是一种不可靠的,无连接的,简单的,基于数据报的通信协议。

无连接:传送数据前,不需要建立连接。

不可靠:无法保证数据是否完全的送达,可靠性依靠上层协议支持。

在传送数据较少、较小的情况下,UDP比TCP更加高效。

七、动画的种类;

八、handler机制以及必要性:

由于主线程不能进行耗时操作。所以子线程进行耗时操作后,利用handler接受子线程发送的数据, 并用此数据配合主线程更新UI.

九、hashmap和hashset的区别:

(1)结构:
集合
Android_第2张图片
(2)区别:
HashSet实现了Set接口,它不允许集合中有重复的值;无序,不重复,不是键值对应,非线程安全;

HashMap实现了Map接口,Map接口对键值对进行映射。Map中不允许重复的键。HashMap是非synchronized的,但collection框架提供方法能保证HashMap synchronized,这样多个线程同时访问HashMap时,能保证只有一个线程更改Map
有序,不重复,键值对应,非线程安全;

list的优势:线程安全

十、framework框架:

Android Framework 记录之一

十一、继承和实现的区别:

类之间的关系

十二、重写的必要性和意义:

1)定义自己功能
2)但破坏了一定的封装性。

十三、android回收顺序:

1.空进程(广播)接收到广播后生命周期完成,在这里面建线程会回收
2.后台进程(不可见的Activity)
3.服务(线程一般在这里面建)
4.前台可交互最后回收

十四、

Context不能乱用,如果用Activity的,不会回收内存有可能会oom
全局用app的()
dialog必须是app的
一般是图片多,出现内存溢出 imageloader

十五、多线程的机制:

应用开发中,经常会遇到需要多线程技术的时候,比如UI显示和数据处理分开。

在实际应用中经常会遇到这种场景,我们需要新开一个线程来监听数据状态(数据状态的改变,接收数据,发送数据等等),当发现数据状态改变时通知主线程(通过消息机制发送消息到主线程),主线程接收到通知之后进行处理(自定义消息处理接口)

十六、layout_gravity和gravity的区别?

android:gravity 属性是对该view中内容的限定.比如一个button 上面的text. 你可以设置该text 相对于view的靠左,靠右等位置.

android:layout_gravity是用来设置该view相对与父view 的位置.比如一个button 在linearlayout里,你想把该button放在linearlayout里靠左、靠右等位置就可以通过该属性设置.

原理跟android:paddingLeft、android:layout_marginLeft有点类似。如果在按钮上同时设置这两个属性。

android:paddingLeft=”30px” 按钮上设置的内容离按钮左边边界30个像素
android:layout_marginLeft=”30px” 整个按钮离左边设置的内容30个像素

十七、网络连接和数据库怎么使用的?

十八、MVC模式,以及这样分层的好处?

好处:Android开发中的MVC设计模式浅析
1. Android系统中分层的理解:
(1).在Android的软件开发工作中,应用程序的开发人员主要是应用Android Application Framework层封装好的Api进行快速开发。
(2).在Android框架的四个层次中,下层为上层服务,上层需要下层的支持,上层需要调用下层的服务。
(3).这种分层的方式带来极大的稳定性、灵活性和可扩展性,使得不同层的开发人员可以按照规范专心特定层的开发。
(4). Android的官方建议应用程序的开发采用MVC设计模式。

你可能感兴趣的:(android)