其实谷歌android 英文的api写的就已经很清楚了,只是中文的人云亦云,不明白的话,还是要去翻看最原始的解释。

1 四种启动模式

standard: 每次启动activity都会产生新的实例。

singleTop:如果activity栈顶已经有这个activity的实例,则不再生成新实例。如果,该实例不在栈顶,则生成新的实例。

singleTask:如果栈内存在该实例,则不论是否位于栈顶,都不会生成新的实例。如果栈内没有该实例,则生成新的实例。

singleInstance:跟singleTask类似,只是这种模式下,activity存在的task中,只能有这个activity的实例,不存在其他实例。


2 显示和隐式intent的区别

如谷歌的解释:http://developer.android.com/reference/android/content/Intent.html

intent用于Activity, BroadcastReceiver, or Service。

显示intent:指明了具体的组件,使用setComponent(ComponentName) or setClass(Context, Class)。


隐式intent:没有指明具体的组件,但是我们需要根据action, type, and category去找到那个合适的组件。而那个组件正好通过IntentFilter包含了所对应的action, type, and category。

3 JVM加载class机制

4 Integer和int区别

int 是基本数据类型,而Integer是int的包装类,包含了对int数值处理的相关方法。int定义的变量可直接使用,而Integer因为是类,则需要实例化。

5 ArrayList、Vector和LinkedList

ArrayList:非线程安全;空间不足时,申请大小为原来的一半。

LinkedList:使用链表存储数据,适合动态的插入和删除。

Vector:线程同步,因而线程安全。空间不足时,申请大小为原来的一倍。

6 HashMap和HashTable

HashMap:可存储空值,非线程安全。

HashTable:线程安全android 面试题_第1张图片

7 android中的mvc

model:处理数据库操作和网络操作

view:xml来显示界面

controller:activity控制

8 android中的xml解析,sax,dom,pull

sax:事件驱动,不需要解析完整个文档。速度较快。

dom:加载整个文档到内存,对性能和内存要求较高。

pull:和sax类似。对应节点处理比较好。

9 ListView的优化

使用convertView

10 aidl

可用来跨进程通讯

11 heap和stack

heap(堆):对象实例;stack(栈):基本数据类型、常量、对象的引用地址。

12 wait():释放锁

 sleep():没有释放锁

13 throws:用在声明方法时,指出可能抛出的异常。

  throw:用在方法中,用来抛出一个异常。程序执行到此处,不再往下执行。

14 sqlite3 是否支持并发

  并发,是指同时会有多个用户或多进程修改数据库。如果同时修改数据库,就会出现问题,但是sqlite3是有锁的。可以保证同时只有一个程序修改数据库。

  进一步学习可参考:sqlite3处理写并发,SQLITE3的锁以及事务

15 2种网络访问方式(wap)

      Android 包含2种  HTTP clients: HttpURLConnection and Apache HTTP Client. Both support HTTPS, streaming uploads and downloads, configurable timeouts, IPv6 and connection pooling. Apache HTTP client has fewer bugs in Android 2.2 (Froyo) and earlier releases. For Android 2.3 (Gingerbread) and later,HttpURLConnection is the best choice. Its simple API and small size makes it great fit for Android. Transparent compression and response caching reduce network use, improve speed and save battery. See the Android Developers Blog for a comparison of the two HTTP clients.

  HttpClient,是个接口,有些具体的实现子类。

  HttpURLConnection,An URLConnection for HTTP (RFC 2616) used to send and receive data over the web. Data may be of any type and length. This class may be used to send and receive streaming data whose length is not known in advance.

16 aidl 是ipc(跨进程通讯)的一种实现方式

17 BroadcastReceiver的生命周期,BroadcastReceiver 只在执行OnReveice()方法时,是有效的,当方法返回值之后,则不再处于活动状态。

18