从事android四年了吧,换了几家公司,面试的公司也算不少了,之前总是喜欢在网上去找面试题,现在把自己遇到的一些面试题和面试中可能会问的问题,以及问题的答案做一个总结,复习一遍的同时,也为一些找工作的同学,提供一些帮助。
下面的问题按照自己的理解分级,觉得不适当的地方,可以纠正。
就把我自己所遇到的面试时候被问的问题说一下。
1.android的4种启动模式.(中级,高级)
1.standard(默认启动模式)
标准的启动模式,如果不在manifest中进行修改,每次startActivity的时候,会在activity中生成一个新的实例。这个比较基础,不用做太详细的回答,主要是下面2种启动模式,需要好好作答。
2.singleTop(栈顶复用模式)
分2种情况处理:
1.需要创建的Activity处于栈顶时,直接复用栈顶的Activity。但是不会走onCreate和onStart方法,但是有一个方法onNewIntent 会被调用。这里顺带说下生命周期,Activity正常创建时onCreate->onStart->onResmue.按照上诉的singleTop方法来执行,生命周期是这样的:onPause->onNewIntent->onResume.这种情况常用的场景是一个Activity被多次复用,从推送栏跳转到已经存在的Activity。
2.需要创建的Activity不处于栈顶,则该模式和standard一样会创建新的实例
3.singleTask(栈内复用模式)
解释:若需要创建的Activity处于栈中,此时不会重新创建Activity,而是将处于其上的Activity销毁,使其处于栈顶
之前被问到一个问题,A,B,C 3个Activity,B是singleTask,从A->B->C->B,这个时候Activity的堆栈是怎样的?
后面经过具体实验得出结论:利用activity:adb shell dumpsys activity activities | findstr "Run"查看堆栈
得出结果是C,A即B被移除栈,C在栈顶,所以这个模式是把处于C上面的Activity全部移除了,然后使其处于栈顶。
生命周期:onNewIntent->onRestart->onStart->onResume。
4.singleInstance( 单实例模式)
这个模式比较特殊,会创建一个新的堆栈,让Activity 处于一个新的堆栈中,常用语系统应用,如launch,锁屏键,这个一般开发不会用到,自己也仅仅是了解。
2.说说View的事件分发机制(中级,高级)
3.讲讲自定义控件(中级,高级)
4.说说handler的机制(中级)
5.HashMap的实现原理(中级)