Android面试总结
前一阵子在校期间,面试了几家公司的Android开发的岗位,对几位面试官提问率比较高一些问题做了个总结,在电脑里沉睡好多天了,今天刚把博客搬家到博客园,是时候发出来了。
1.android系统的架构
应用程序层-应用程序框架层-系统运行库层-linux核心层
解释:
Linux核心层:负责硬件的驱动程序,网络、电源、系统安全以及内存管理等功能。
运行库层:即c/c++函数库部分,大多数都是开放源代码的函数库
应用程序框架层:存放一些api
2.android常用的五种布局
FrameLayout(框架):元素置于左上区域,元素会重叠覆盖
LinearLayout(线性):以水平或垂直方式定位内部空间,默认垂直
AbsoluteLayout(绝对):坐标轴布局,layout_x, layout_y
RelativeLayout(相对):相对布局,根据另外一个组件或者顶层父组件确定下一个组件位置。
TableLayout(表格):TableRow代表一行。
3.五种存储方式:
(1)SharedPreferences存储数据,用来存储简单的配置信息,采用XML格式将数据存储到设备中。缺点:只能在同一个包内使用
(2)文件存储数据;常用,I/O,openFielInput(), openFileOutput()方法读取设备上的文件
(3)SQLite,android自带的标准数据库,支持sql语句,轻量级嵌入式数据库。
(4)ContentProvider存储数据;用于程序之间进行数据交换。
(5)网络存储数据
4.Activity, Intent, ContentProvider, Service各有什么区别
a) Activity活动,是最基本的android应用程序组件,每一个屏幕都是一个Activity。
b) Intent 意图:描述应用想干什么。最重要的部分是动作和动作对应的数据。
c) ContentProvider:内容提供器:当你想将你的应用数据和其他应用共享时,它起作用。
d) Service:服务,具有一段较长生命周期,且没有用户界面的程序。
5.Adapter类型:
ArrayAdapter
BaseAdapter
CursorAdapter
HeaderViewListAdapter
ListAdapter
ResourceCursorAdapter
SimpleAdapter
SimpleCursorAdapter
SpinnerAdapter
WrapperListAdapter
6.如何启动Service,如何停用Service。bindService和startService的区别
第一步:集成Service
Public class SMSService extends Service{}
第二步:在AndroidManifest.xml文件中的节点里对服务进行配置
服务不能自己运行,两种启动方式:bindService 和startService。
startService()启用服务,调用者与服务直接没有联系。即时调用者退出了,服务仍然运行。
用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate方法,接着调用onStart()。如果调用startService()方法前服务已经被创建,多次调用startService()不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()启动的服务,只能用Context.stopService()结束,服务结束时会调用onDestroy()。
bindService():调用者与服务绑定在了一起,调用者退出,服务终止。
采用bindService()启动服务,在服务未被创建时,系统会先调用服务的onCreate()
结合调用onBind().这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind(),接着onDestroy()。如果用bindService()前服务以及被绑定,多次调用bindService()不会多次创建服务或绑定。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService(),调用该方法也会导致系统调用服务的onUnbind()-->onDestroy();
7.Android工程目录结构
一般来说包含以下:
1:src
Java源代码在此
2:gen
编译器自动生成的一些java代码
3:Android 4.2
Android平台文件夹
4:Android Dependencies
该目录在ADT1.6后出现,是ADT第三方库新的引用形式,当我们引用第三方库时,将文件拷贝到libs文件夹下,ADT就会自动完成对该库的引用
5:bin
该目录时编译之后的文件以及一些中间文件的存放目录,ADT先将工程编译成Android JAVA虚拟机(Dalvik Virtual Machine)文件classes.dex.最后将该classes.dex封装成apk包。
6:libs
存放第三方类库
7:res
存放项目中的资源文件
-drawable-hdpi; drawable-mdpi, drawable-xhdpi
-layout:界面布局文件
-menu:存放定义了应用程序菜单资源的xml文件
-values:存放定义了多种类型的资源文件。
8.AndroidManifest.xml
用来描述App性质和它的每一个组件的一种控制型文件。例如:权限,版本信息等。
8.Sqlite
创建数据库对象
SQLiteDatabase db = openOrCreateDatabase(“test.db”, Context.MODE_PRIVATE, null);
db.execSQL(sql语句);
Cursor c = db.rawQuery();查询语句
while(c.moveToNext()){
int id = c.getInt(c.getColumnIdex(“_id”));
...
}
c.close();
db.delete()
db.close();
数据库文件存放路径:/data/data/[PACKAGE_NAME]/databases
作者:CodingBlock
出处:http://www.cnblogs.com/codingblock/
本文版权归作者和共博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
如果文中有什么错误,欢迎指出。以免更多的人被误导。
浙公网安备 33010602011771号