Android面试题(文章内容来自他人博客)ADark0915

2.inta=2;intresult=(a++>2)(++a):(a+=3);

3.inta=1234567;intb=0x06;intresult=a&b;

4.Integera=34556;Integerb=34556;booleanresult=a==b;

5.Stringfunc(strings){returns.length()>0func(s.subString(1))+s.charAt(0):"";}Stringresult=func("Tencent");

6.byteresult=(byte)oxffeffefe;

7.intresult=[(oxfe2baf&oxf)|oxff]>>2/(4<<1);

8.判断两个String的交集比如A="Marginle",B=Valaienie",交集为aie,写个算法。

9.什么是状态机?项目中什么时候用到状态机,举例说明。

10.写出两种单例模式

Android基础1.Activity和BroadCastReceiver的生命周期

2.写出几种service和Activity的交互方式

3.UI线程和非UI线程的交互方式,写出几种各自的耗时。

4.requestLayout,invalidate和postInvalidate的异同

5.写出三种常用layout布局并进行解释

7.view的绘制过程,讲讲draw/onDraw和drawChild这个可以口述。

8.以下是Androidsdk的英文文档请细读。

9.100盏灯,全部关闭,第一人全部打开(亮),第二个人隔一个按开关,第三个人隔2个按开关,以此类推,第100人路过时有几盏灯亮着?(写出结果就行)

Java基础1.说出sleet,wait,notify的区别

———————————————————————————————————————————————————————————————————–

2013-5-2号补充:

============================================================================================

2013-4-10补充:

问题:怎样的类可以作为HashMap的键?答:这个问题是搜狗2012年的笔试题,我开始还真是没想太明白。刚才看到HashMap的时候才发现原来是这么回事。当需要往ArrayList,HashMap中放东西时,像int,double这种内建类型是放不进去的,因为容器都是装object的,这就需要这些内建类型的外覆类了。比如:int对应的Integer,double对应的Double。

同样是搜狗的笔试题:适合频繁插入和查找的数据结构答:频繁插入,链表效率高,频繁查找数组效率高,那么综合一下,我个人觉得是哈希表,或者说HashMap等使用hash算法的数据结构。

1、对于简历上所写的每个问题,面试官感兴趣的会对我提问,并分析里边遇到的问题以及得到的经验。面试过程描述以前做过的项目。项目中你认为的难点是什么。2、对于网络交互这块儿需要注意什么问题

3、android是一个什么样的系统。Jni调用机制是什么。用uml画一个在你的项目中使用的设计模式。

面试中常问的非技术类问题:

1.简单介绍一下你自己。

2.对自己做个评价,优点、缺点。

3.自己做过的项目,详细介绍一下。

4.实习经历,在实习过程中遇到哪些问题,如何解决的?

5.你对公司有什么问题要问吗(对公司有什么要了解的)?

技术类的问题主要就看对技术的掌握程度和自己的综合能力了。

2.实质:二叉树的层序遍历,每层的结点用单链表输出。

3.1-N(N最大32000,且未知),内存只有4K,找出其中的重复数

2.Java中抽象类与接口的区别。

3.进程与线程之间的联系与区别。(多家公司都在问,好好研究一下)

4.谈谈对设计模式的认识与理解,简单介绍一下你所知道的设计模式。(多家公司都问,Android方向面试必考的)

6.Linux常用的命令,shell编程,grep命令的使用。

7.海量数据查找或者排序,有资源限制要求。(常考的)

Sina无线客户端开发工程师面试

笔试的题目和7月22日实习生的题目差不多。面试主要问了:

1.二叉树的一些基础知识。

2.Java多线程,对stop()方法的认识,如何安全的终止一个线程。

4.谈谈你对面向对象编程中继承的认识

5.排序算法

网易2012校招无线客户端开发笔试,题目不太难,比较基础。

1.面向对象编程中多态的概念,用伪代码展示出来。

2.斐波那契数列编程,效率越高越好(详见《编程之美》2.9)

3.60W长度为32的字符串一次性读入内存中,大约占用多少内存空间?

4.一个X向量n,如何求其内部的最大距离。

6.简单介绍一下Android系统中的Activity,Service,Intent,ContentProvider组件。

7.编程解析一段josn格式内容,并在界面上显示出来。

8.英文阅读,考察英语能力。

9.网络应用分析,发挥自己的主观能动性和积累。

搜狗2012校招笔试

搜狗的题目出的很全,所有职位的题目都在一份卷子上,涉及到数据结构、网络、操作系统、算法、软件工程等多方面,根据自己所投递的职位,有针对性的选择要答的题目即可。

金山2012校园招聘笔试

为了保险,做了运维的题目,难度不大,主要是网络和Linux操作系统方面的,稍微准备一下即可。答题的时候自我感觉良好,结果没收到面试通知,被鄙视了,o(╯□╰)o

1.Activity的生命周期(最基本的)。

2.Android基本框架结构。

3.Android终止一个进程的方法,如何彻底终止一个程序。

4.如何改写程序,改变android手机中返回键的功能(西安TCL研究院技术面试)。

一般来说,大公司的校园招聘中首先看的还是基础,有工作或者实习经验的会重点考虑,多问一些在实习中的项目细节,同时会问一些算法,建议认真研读《编程之美》《编程珠玑》之类的书籍。首先要做好充足的准备,打好基础,其次还要看一些算法、设计的内容,一面以后的技术面问的题目都有一定的挑战性。如果有实习或者项目经历,可以大大增加校招中简历筛选通过的机率。对于互联网公司,特别喜欢海量数据的排序、搜索,网上类似的资源很多,可以看看。技术更新永无止境,要时刻保持清醒的头脑,不断学习,充实自己,才能在竞争中不被淘汰,祝大家好运,找到心仪的工作。

=================================================================================================================

1.程序之间亲和性的理解

eoe的一个朋友的回答,要不我还真想不到是什么。

是问affinity吧sdk文档中有详细说明

2.Task任务栈的分配

3.Activity如何启动一个service

这个问题开始真是小看了,个人觉得有两种:一种就是start一个service,另外一种就是bind一个service。

笔试题

java如何同步wait和sleep的区别java常用的数据结构如何实现重载与重写区别

android如何提高稳定性

————————————————————–android有哪些安全机制

————————————————————-

android应用之间有几种共享数据的方法android哪些操作会导致内存泄露如何排查.9.png和png的区别sqlite使用注意事项Listview中getview中convertview的工作原理service有什么特征,在哪种情况下会用到service

1.Intent的几种有关Activity启动的方式有哪些,你了解每个含义吗

这里Android123提示大家,Intent的一些标记有FLAG_ACTIVITY_BROUGHT_TO_FRONT、FLAG_ACTIVITY_CLEAR_TOP、FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET、FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS、FLAG_ACTIVITY_MULTIPLE_TASK和FLAG_ACTIVITY_NEW_TASK等。每种含义大家看SDK文档和具体跑下这样你的记忆会更深刻些。

2.Activity和Task的启动模式有哪些每种含义是什么

3.通过Intent传递一些二进制数据的方法有哪些

1).使用Serializable接口实现序列化,这是Java常用的方法。

2).实现Parcelable接口,这里Android的部分类比如Bitmap类就已经实现了,同时Parcelable在AndroidAIDL中交换数据也很常见的。

4.能说下Android应用的入口点吗

5.Java基础问题,说说HashSet和HashTable的区别

这个相信Java程序员都知道HashSet相对于HashMap就是不能存放重复的数据,对于HashTable来说,存放的数据不能出现key或value为null这样的情况。

6.Java基础问题,用Java的集合类写下广度优先搜索.

这个属于基础数据结构问题,通过队列处理一层一层,相对于深度优先的栈处理方式来说更实用一些。

7.Android都有哪些XML解析器,都熟练掌握吗

这里XmlPull、SAX和DOM相信做过Web开发的都已经滚瓜烂熟了。

8.SQLite支持事务吗添加删除如何提高性能

SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能可以考虑通过原始经过优化的SQL查询语句方式处理。

9.AndroidService和Binder、AIDL你都熟练吗

作为Android重要的后台服务,这些每个Android开发者都应该掌握,这也算是和JavaSE最大的不同了,具体的实例大家可以查看Android音乐播放器的源代码Music.git中的,这里不再赘述。

1、Androiddvm的进程和Linux的进程,应用程序的进程是否为同一个概念DVM指Dalvik的虚拟机。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。而每一个DVM都是在Linux中的一个进程,所以说可以认为是同一个概念。

2、sim卡的EF文件有何作用sim卡的文件系统有自己规范,主要是为了和手机通讯,sim本身可以有自己的操作系统,EF就是作存储并和手机通讯用的

3、嵌入式操作系统内存管理有哪几种,各有何特性页式,段式,段页,用到了MMU,虚拟空间等技术

5、一条最长的短信息约占多少byte中文70(包括标点),英文160个字节

6、android中的动画有哪几类,它们的特点和区别是什么?两种,一种是Tween动画、还有一种是Frame动画。Tween动画,这种实现方式可以使视图组件移动、放大、缩小以及产生透明度的变化;另一种Frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

7、handler机制的原理andriod提供了Handler和Looper来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。1)Looper:一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。2)Handler:你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从MessageQueue取出)所送来的消息。3)MessageQueue(消息队列):用来存放线程放入的消息。4)线程:UIthread通常就是mainthread,而Android启动程序时会替它建立一个MessageQueue。

1.View如何刷新?View可以调用invalidate()和postInvalidate()这两个方法刷新

1.androiddvm的进程和Linux的进程,应用程序的进程是否为同一个概念:

答:dvm是dalivk虚拟机。每一个android应用程序都在自己的进程中运行,都拥有一个dalivk虚拟机实例。而每一个dvm都是在linux的一个进程。所以说可以认为是同一个概念。

2.android的动画有哪几种?他们的特点和区别是什么?

答:两种,一种是tween动画,一种是frame动画。tween动画,这种实现方式可以使视图组件移动,放大或缩小以及产生透明度的变化。frame动画,传统的动画方法,通过顺序的播放排列好的图片来实现,类似电影。

3.handler进制的原理:

答:android提供了handler和looper来满足线程间的通信。Handler先进先出原则。looper用来管理特定线程内对象之间的消息交换(messageExchange).

1)looper:一个线程可以产生一个looper对象,由它来管理此线程里的messagequeue(消息队列)

2)handler:你可以构造一个handler对象来与looper沟通,以便push新消息到messagequeue里;或者接收looper(从messagequeue里取出)所送来的消息。

3)messagequeue:用来存放线程放入的消息。

4)线程:UIthread通常就是mainthread,而android启动程序时会为它建立一个messagequeue.

4.androidview的刷新:

答:Android中对View的更新有很多种方式,使用时要区分不同的应用场合。我感觉最要紧的是分清:多线程和双缓冲的使用情况。

1).不使用多线程和双缓冲

这种情况最简单了,一般只是希望在View发生改变时对UI进行重绘。你只需在Activity中显式地调用View对象中的invalidate()方法即可。系统会自动调用View的onDraw()方法。

2).使用多线程和不使用双缓冲

这种情况需要开启新的线程,新开的线程就不好访问View对象了。强行访问的话会报:android.view.ViewRoot$CalledFromWrongThreadException:Onlytheoriginalthreadthatcreatedaviewhierarchycantouchitsviews.

这时候你需要创建一个继承了android.os.Handler的子类,并重写handleMessage(Messagemsg)方法。android.os.Handler是能发送和处理消息的,你需要在Activity中发出更新UI的消息,然后再你的Handler(可以使用匿名内部类)中处理消息(因为匿名内部类可以访问父类变量,你可以直接调用View对象中的invalidate()方法)。也就是说:在新线程创建并发送一个Message,然后再主线程中捕获、处理该消息。

3).使用多线程和双缓冲

Android中SurfaceView是View的子类,她同时也实现了双缓冲。你可以定义一个她的子类并实现SurfaceHolder.Callback接口。由于实现SurfaceHolder.Callback接口,新线程就不需要android.os.Handler帮忙了。SurfaceHolder中lockCanvas()方法可以锁定画布,绘制玩新的图像后调用unlockCanvasAndPost(canvas)解锁(显示),还是比较方便得。

5.说说mvc模式的原理,它在android中的运用:

答:android的官方建议应用程序的开发采用mvc模式。何谓mvc?

mvc是model,view,controller的缩写,mvc包含三个部分:

l模型(model)对象:是应用程序的主体部分,所有的业务逻辑都应该写在该层。

2视图(view)对象:是应用程序中负责生成用户界面的部分。也是在整个mvc架构中用户唯一可以看到的一层,接收用户的输入,显示处理结果。

android鼓励弱耦合和组件的重用,在android中mvc的具体体现如下:

1)视图层(view):一般采用xml文件进行界面的描述,使用的时候可以非常方便的引入,当然,如何你对android了解的比较的多了话,就一定可以想到在android中也可以使用javascript+html等的方式作为view层,当然这里需要进行java和javascript之间的通信,幸运的是,android提供了它们之间非常方便的通信实现。

3)模型层(model):对数据库的操作、对网络等的操作都应该在model里面处理,当然对业务计算等操作也是必须放在的该层的。

6.Activity的生命周期:

答:onCreate:在这里创建界面,做一些数据的初始化工作

onStart:到这一步变成用户可见不可交互的

onResume:变成和用户可交互的,(在activity栈系统通过栈的方式管理这些个Activity的最上面,运行完弹出栈,则回到上一个Activity)

onPause:到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在

onstop:变得不可见,被下一个activity覆盖了

onDestroy:这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方法或者是系统为了节省空间将它暂时性的干掉

7.让Activity变成一个窗口:

答:Activity属性设定:有时候会做个应用程序是漂浮在手机主界面的。这个只需要在设置下Activity的主题theme,即在Manifest.xml定义Activity的地方加一句:

8.Android中常用的五种布局:

答:LinearLayout线性布局;AbsoluteLayout绝对布局;TableLayout表格布局;RelativeLayout相对布局;FrameLayout帧布局;

9.Android的五种数据存储方式:

答:sharedPreferences;文件;SQLite;contentProvider;网络

10.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系:

答:Handler获取当前线程中的looper对象,looper用来从存有Message的MessageQueue里取出message,再由Handler进行message的分发和处理。

11.AIDL的全称是什么如何工作能处理哪些类型的数据

答:AIDL(AndroidInterfaceDefinitionLanguage)android接口描述语言

12.系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由:

答:通过直接发送Uri把参数带过去,或者通过manifest里的intentfilter里的data属性。代码如下:Intentintent=newIntent();

Intent.setAction(“android.intent.action.View”);

Intent.setData(uriBrowsers);

//包名、要打开的activityintent.setClassName(“com.android.browser”,”com.android.browser.BrowserActivity”);

startActivity(intent);

13.什么是ANR,如何避免?

答:ANR的定义:

如何避免:

因此,运行在主线程里的任何访求都尽可能少做事情。特别是,activity应该在它的关键生命周期方法(onCreate()和onResume())里尽可能少的去作创建操作。潜在的耗时操作,例如网络或数据库操作,或者高耗时的计算如改变位图尺寸,应该在子线程里(或者以数据库操作为例,通过异步请求的方式)来完成。然而,不是说你的主线程阻塞在那里等待子线程的完成—也不是调用Thread.wait()或者Thread.sleep()。替代的方法是:主线程应该为子线程提供一个Handler,以便完成时能够提交给主线程。以这种方式设计你的应用程序,将能保证你的主线程保持对输入的响应性并能避免由5秒输入事件的超时引发的ANR对话框。这种做法应该在其它显示UI的线程里效仿,因为它们都受相同的超时影响。

如果你的应用程序为响应用户输入正在后台工作的话,可以显示工作的进度(ProgressBar和ProgressDialog对这种情况来说很有用)。特别是游戏,在子线程里做移动的计算。如果你的程序有一个耗时的初始化过程的话,考虑可以显示一个SplashScreen或者快速显示主画面并异步来填充这些信息。在这两种情况下,你都应该显示正在进行的进度,以免用户认为程序被冻结了。

14.什么情况会导致ForceClose?如何避免?能否捕获导致其的异常?

答:如空指针等可以导致ForceClose;可以看Logcat,然后找到对应的程序代码来解决错误。

15.横竖屏切换时候的activity的生命周期:

答:

1)新建一个activity,并把各个生命周期打印出来

2)运行activity,得到如下信息:

onCreate()à

onStart()à

onResume()à

3)按ctrl+F12切换成横屏时

onSaveInstanceState()à

onPause()à

onStop()à

onDestroy()à

onRestoreInstanceState()à

4)再按ctrl+f12切换成竖屏时,发现打印了两次相同的Log

onDestroyà

5)修改AndroidManifest.xml,把该Activity添加android:configChanges=“orientation”,执行步骤3

6)修改AndroidManifest.xml,把该Activity添加android:configChanges=“orientation”,执行步骤4,发现不会再打印相同信息,但多打印了一行onConfigChanged

onConfigurationChanged()à

7)把步骤5的android:configChanges=“orientation”改成

android:configChanges=“orientation|keyboradHidden”,执行步骤3,就只打印onConfigChanged

8)把步骤5的android:configChanges=“orientation”改成

android:configChanges=“orientation|keyboradHidden”,执行步骤4

总结:

1)不设置activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次。

2)设置activity的android:configChanges=“orientation”时,切屏会重新调用各个生命周期,切横屏、竖屏时都只会执行一次,但是竖屏最后多打印一条onConfigurationChanged()

3)设置activity的android:configChanges=“orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged(),横屏一次,竖屏两次

再总结下整个activity的生命周期:

1)当前activity产生事件弹出Toast和AlertDialog的时候Activity的生命周期不会有改变

2)Activity运行时按下HOME键(跟被完全覆盖一样的)

onSavaInstanceStateà

onPauseà

onStopà

onRestartà

onStartà

onResumeà

3)未被完全覆盖,只是失去焦点:

16.如何将SQLite数据库(.db文件)与apk文件一起发布

答:可以将.db文件复制到EclipseAndroid工程中的resaw目录中。所有在resaw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将.db文件复制到resaw目录中

17.如何将打开resaw目录中的数据库文件

答:在Android中不能直接打开resaw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得resaw目录中资源的InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在AndroidSDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

18.android中有哪几种解析xml的类?官方推荐哪种?以及它们的原理和区别:

答:XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。而DOM方式会把整个XML文件加载到内存中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,在J2ME中我们经常使用的KXML库来解析。

19.DDMS和TraceView的区别

答:DDMS是一个程序执行查看器,在里面可以看见线程和堆栈等信息,TraceView是程序性能分析器

20.谈谈Android的IPC机制:

答:IPC是内部进程通信的简称,是共享"命名管道"的资源。Android中的IPC机制是为了让Activity和Service之间可以随时的进行交互,故在Android中该机制,只适用于Activity和Service之间的通信,类似于远程方法调用,类似于C/S模式的访问。通过定义AIDL接口文件来定义IPC接口。Servier端实现IPC接口,Client端调用IPC接口本地代理。

21.NDK是什么:

答:NDK是一系列工具的集合

NDK提供了一系列的工具,帮助开发者迅速的开发C/C++的动态库,并能自动将so和java应用打成apk包

NDK集成了交叉编译器,并提供了相应的mk文件和隔离cpu,平台等的差异,开发人员只需简单的修改mk文件就可以创建出so

22.描述一下android的系统架构:

答:android系统架构分从下往上为Linux内核层、运行库、应用程序框架层和应用程序层。

Linux内核层:负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。

运行库和androidruntion:运行库:即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责android网页浏览器的运行;例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发的2dsgl和3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,如mpeg4、h.264、mp3、aac、amr、jpg和png等众多的多媒体文件格式。Androidruntion负责解释和执行生成的dalvik格式的字节码

应用软件架构:java应用程序开发人员主要是使用该层封装好的api进行快速开发的。

应用程序层:该层是java的应用程序层,android内置的googlemaps、email、IM、浏览器等,都处于该层,java开发人员工发的程序也处于该层,而且和内置的应用程序具有平等的地位,可以调用内置的应用程序,也可以替换内置的应用程序

23.Activity与Task的启动模式有哪些,它们含义具体是什么

答:在一个activity中,有多次调用startActivity来启动另一个activity,要想只生成一个activity实例,可以设置启动模式。

一个activity有四种启动模式:standed,signleTop,singleTask,singleInstance

Standed:标准模式,一调用startActivity()方法就会产生一个新的实例。

SingleTop:如果已经有一个实例位于activity栈顶,就不产生新的实例,而只是调用activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。

singleTask:会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。

SingleInstance:这个和singleTask基本一样,只有一个区别:在这个模式下的activity实例所处的task中,只能有这个activity实例,不能有其他实例

24.Application类的作用:

答:API里的第一句是:

Baseclassforthosewhoneedtomaintainglobalapplicationstate

如果想在整个应用中使用全局变量,在java中一般是使用静态变量,public类型;而在android中如果使用这样的全局变量就不符合Android的框架架构,但是可以使用一种更优雅的方式就是使用Applicationcontext。首先需要重写Application,主要重写里面的onCreate方法,就是创建的时候,初始化变量的值。然后在整个应用中的各个文件中就可以对该变量进行操作了。启动Application时,系统会创建一个PID,即进程ID,所有的Activity就会在此进程上运行。那么我们在Application创建的时候初始化全局变量,同一个应用的所有Activity都可以取到这些全局变量的值,换句话说,我们在某一个Activity中改变了这些全局变量的值,那么在同一个应用的其他Activity中值就会改变

25.说明onSaveInstanceState()和onRestoreInstanceState()在什么时候被调用:

答:Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法,它们不同于onCreate()、onPause()等生命周期方法,它们并不一定会被触发。当应用遇到意外情况(如:内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState()才会被调用。但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。因为在这种情况下,用户的行为决定了不需要保存Activity的状态。通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。

另外,当屏幕的方向发生了改变,Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。可以重写Activity的onSaveInstanceState()和onRestoreInstanceState()方法。

26.android的service的生命周期?哪个方法可以多次被调用:

答:1)与采用Context.startService()方法启动服务有关的生命周期方法

onCreate()->onStart()->onDestroy()

onCreate()该方法在服务被创建时调用,该方法只会被调用一次,无论调用多少次startService()或bindService()方法,服务也只被创建一次。onStart()只有采用Context.startService()方法启动服务时才会回调该方法。该方法在服务开始运行时被调用。多次调用startService()方法尽管不会多次创建服务,但onStart()方法会被多次调用。onDestroy()该方法在服务被终止时调用。

2)与采用Context.bindService()方法启动服务有关的生命周期方法onCreate()->onBind()->onUnbind()->onDestroy()

onBind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务绑定时被调用,当调用者与服务已经绑定,多次调用Context.bindService()方法并不会导致该方法被多次调用。onUnbind()只有采用Context.bindService()方法启动服务时才会回调该方法。该方法在调用者与服务解除绑定时被调用。如果先采用startService()方法启动服务,然后调用bindService()方法绑定到服务,再调用unbindService()方法解除绑定,最后调用bindService()方法再次绑定到服务,触发的生命周期方法如下:onCreate()->onStart()->onBind()->onUnbind()[重载后的方法需返回true]->onRebind()

27.android的broadcast的生命周期:

答:1)Broadcastreceiver生命周期中仅有一个回调方法:voidonReceive(ContextcurContext,IntentbroadcastMsg)当接收器接收到一条broadcast消息,Android就会调用onReceiver(),并传递给它一个Intent对象,这个对象携带着那条broadcast消息。我们认为仅当执行这个方式时,Broadcastreceiver是活动的;这个方法返回时,它就终止了。这就是Broadcastreceiver的生命周期。

2)由于Broadcastreceiver的生命周期很短,一个带有活动的Broadcastreceiver的进程是受保护的,以避免被干掉;但是别忘了有一点,Android会在任意时刻干掉那些携带不再活动的组件的进程,所以很可能会造成这个问题。

3)解决上述问题的方案采用一个Service来完成这项工作,Android会认为那个进程中(Service所在的进程)仍然有在活动的组件。

28.androidview,surfaceview,glsurfaceview的区别:

所以基于以上,根据游戏特点,一般分成两类。

2)主动更新。比如一个人在一直跑动。这就需要一个单独的thread不停的重绘人的状态,避免阻塞mainUIthread。

5、IntentService有何优点

答:IntentService的好处

*Acitivity的进程,当处理Intent的时候,会产生一个对应的Service

*Android的进程处理器现在会尽可能的不kill掉你

*非常容易使用

6、横竖屏切换时候activity的生命周期

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次,竖屏的时候还会执行onConfigurationChanged方法

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

1.如何将SQLite数据库(dictionary.db文件)与apk文件一起发布

解答:可以将dictionary.db文件复制到EclipseAndroid工程中的resaw目录中。所有在resaw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到resaw目录中

2.如何将打开resaw目录中的数据库文件

解答:在Android中不能直接打开resaw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得resaw目录中资源的InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。在AndroidSDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

3.Android引入广播机制的用意

答:a:从MVC的角度考虑(应用程序内)

其实回答这个问题的时候还可以这样问,android为什么要有那4大组件,现在的移动开发模型基本上也是照搬的web那一套MVC架构,只不过是改了点嫁妆而已。android的四大组件本质上就是为了实现移动或者说嵌入式设备上的MVC架构,它们之间有时候是一种相互依存的关系,有时候又是一种补充关系,引入广播机制可以方便几大组件的信息和数据交互。

b:程序间互通消息(例如在自己的应用程序内监听系统来电)

c:效率上(参考UDP的广播协议在局域网的方便性)

d:设计模式上(反转控制的一种应用,类似监听者模式)

41.如何退出Activity?如何安全退出已调用多个Activity的Application?

对于单一Activity的应用来说,退出很简单,直接finish()即可。当然,也可以用killProcess()和System.exit()这样的方法。但是,对于多Activity的应用来说,在打开多个Activity后,如果想在最后打开的Activity直接退出,上边的方法都是没有用的,因为上边的方法都是结束一个Activity而已。当然,网上也有人说可以。就好像有人问,在应用里如何捕获Home键,有人就会说用keyCode比较KEYCODE_HOME即可,而事实上如果不修改framework,根本不可能做到这一点一样。所以,最好还是自己亲自试一下。那么,有没有办法直接退出整个应用呢?在2.1之前,可以使用ActivityManager的restartPackage方法。它可以直接结束整个应用。在使用时需要权限ndroid.permission.RESTART_PACKAGES。注意不要被它的名字迷惑。

可是,在2.2,这个方法失效了。在2.2添加了一个新的方法,killBackgroundProcesses(),需要权限android.permission.KILL_BACKGROUND_PROCESSES。可惜的是,它和2.2的restartPackage一样,根本起不到应有的效果。另外还有一个方法,就是系统自带的应用程序管理里,强制结束程序的方法,forceStopPackage()。它需要权限android.permission.FORCE_STOP_PACKAGES。并且需要添加android:sharedUserId="android.uid.system"属性同样可惜的是,该方法是非公开的,他只能运行在系统进程,第三方程序无法调用。因为需要在Android.mk中添加LOCAL_CERTIFICATE:=platform。而Android.mk是用于在Android源码下编译程序用的。从以上可以看出,在2.2,没有办法直接结束一个应用,而只能用自己的办法间接办到。

现提供几个方法,供参考:

1、抛异常强制退出:该方法通过抛异常,使程序ForceClose。验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出ForceClose的窗口。

2、记录打开的Activity:每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可。

3、发送特定广播:在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。

4、递归退出在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。

除了第一个,都是想办法把每一个Activity都结束掉,间接达到目的。但是这样做同样不完美。你会发现,如果自己的应用程序对每一个Activity都设置了nosensor,在两个Activity结束的间隙,sensor可能有效了。但至少,我们的目的达到了,而且没有影响用户使用。

为了编程方便,最好定义一个Activity基类,处理这些共通问题。

43.请介绍下Android的数据存储方式。

一.SharedPreferences方式

二.文件存储方式

三.SQLite数据库方式

四.内容提供器(Contentprovider)方式

五.网络存储方式

43.请介绍下ContentProvider是如何实现数据共享的。

创建一个属于你自己的Contentprovider或者将你的数据添加到一个已经存在的Contentprovider中,前提是有相同数据类型并且有写入Contentprovider的权限。

44.如何启用Service,如何停用Service。Android中的service类似于windows中的service,service一般没有用户操作界面,它运行于系统中不容易被用户发觉,可以使用它开发如监控之类的程序。

一。步骤第一步:继承Service类publicclassSMSServiceextendsService{}

第二步:在AndroidManifest.xml文件中的节点里对服务进行配置:

二。Context.startService()和Context.bindService服务不能自己运行,需要通过调用Context.startService()或Context.bindService()方法启动服务。这两个方法都可以启动Service,但是它们的使用场合有所不同。

1.使用startService()方法启用服务,调用者与服务之间没有关连,即使调用者退出了,服务仍然运行。使用bindService()方法启用服务,调用者与服务绑定在了一起,调用者一旦退出,服务也就终止。

2.采用Context.startService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onStart()方法。如果调用startService()方法前服务已经被创建,多次调用startService()方法并不会导致多次创建服务,但会导致多次调用onStart()方法。采用startService()方法启动的服务,只能调用Context.stopService()方法结束服务,服务结束时会调用onDestroy()方法。

3.采用Context.bindService()方法启动服务,在服务未被创建时,系统会先调用服务的onCreate()方法,接着调用onBind()方法。这个时候调用者和服务绑定在一起,调用者退出了,系统就会先调用服务的onUnbind()方法,。接着调用onDestroy()方法。如果调用bindService()方法前服务已经被绑定,多次调用bindService()方法并不会导致多次创建服务及绑定(也就是说onCreate()和onBind()方法并不会被多次调用)。如果调用者希望与正在绑定的服务解除绑定,可以调用unbindService()方法,调用该方法也会导致系统调用服务的onUnbind()–>onDestroy()方法。

2013-4-7号更新:

问的问题都比较底层,总结一下大体如下:1.对多线程的运用和理解,及多线程之间handle的传值。

我觉得这个问题问的好。多线程的理解很重要。但是开发的时候一般应该是用不到的。

2.对android虚拟机的理解,包括内存管理机制垃圾回收机制。

3.framework工作方式及原理,Activity是如何生成一个view的,机制是什么。

6.这个问题有必要看看,想当初毕业的时候对这个是多么的熟悉啊,现在都忘了,平时用的确实比较少。还有String,StringBuilder,StringBuffer这3个的区别。都有必要好好看看。

7.java集合的理解

8.Java:重写equals()和hashCode()

结束语:

1、数据结构和算法

一般情况下,工作中是用不到的,但是就是问,每个公司都问,而且有的公司还问的特别深,还让你手写代码。我觉得这个确实有点恶心,我个人也是很讨厌算法的,但是真是没办法,人家就问,你说怎么办?只能学呗。列个表,大家可以按照下面的去学习。不要一下看完,你看完也没用,你没有深入理解。每三天学一种,半年后,我觉得你应该会进步很多。然后可以看看“编程之美”等算法书,应该会有较大的提高。

常见的数据结构

线性:数组、链表、队列、堆栈、块状数组(数组+链表)、hash表、双端队列、位图(bitmap)

树:堆(大顶堆、小顶堆),trie树(字母树or字典树),后缀树,后缀数组,二叉排序/查找树,B+/B-/B*,AVL树,Treap,红黑树,splay树,线段树,树状数组

图:图其它:并查集

常见算法1)基本思想:枚举,递归,分治,模拟,贪心,动态规划,剪枝,回溯2)图算法:深度优先遍历与广度优先遍历,最短路径,最小生成树,拓扑排序3)字符串算法:字符串查找,hash算法,KMP算法4)排序算法:冒泡、快排、桶排序5)动态规划:背包问题,最长公共子序列,最优二分检索树6)数论问题:素数问题,整数问题,进制转换,同余模运算7)排列组合:排序和组合算法8)其它:LCA与RMQ问题

2.网络层

HTTP协议、TCP/IP协议,这个在Android的面试中问的比较少,但是了解一下,或者你学的比较深入,优势就比较明显了。会是你的加分点。所以,系统并且深入的学习一下就非常有必要了。

3.Android的基础

这个肯定是必须的了,比如listview优化、UI特效的实现、数据库层的搭建、JNI的使用等等。参照上面的面试题就可以。

THE END
1.保险定义保险与风险概念保险知识保险频道而且,保险提供的补偿以损失发生为前提,补偿金额以损失价值为上限,所以不存在通过保险获利的可能。赌博行为则是主动创造风险,把确定性的成本(赌注)转变为不确定性的收益,除成本外,不承担损失风险。 从社会学角度看,保险体现了人们的互助精神,把原来不稳定的风险,转化为稳定的因素,从而保障社会健康发展;而赌博则是一...https://www.pingan.com/pacms/baoxian/zhishi/97941.jsp
2.冲床安全培训班测验试题库及答案4、成年人的心理特征可分为哪些类型?哪种类型最易出事故? 活泼型、冷静型、急躁型、轻浮型、迟钝型。后三种易出事故,尤其是轻浮型事故率最高。 5、你本人生于公元年月日,请列式计算你今天的三大节律状态。 (列式计算) 6、触电急救的要点有哪些? https://www.safehoo.com/item/254198_2.aspx
3.三十年小学老教师整理,三十种最重要的阅读技巧,学会了就能拿满分例如:谈谈你的收获;告诉我们什么道理;你有什么启发有些文章可以直接在文中找到中心句。写人的,主要是赞美主人公的某些优秀品质;写景主要赞美景的美丽可爱。写物比较复杂一点,单纯写物,就是表达对物的喜欢;借物喻人和借物喻理的文章,在此类文章的结尾部分,仔细地揣摩,看它那些带有议论性的话,如果有写人的成分,那...https://www.360doc.cn/article/1661957_1021672030.html
1.如何认识各类险种的特点和保障范围?这些险种如何满足客户需求?在金融领域中,保险作为一种重要的风险管理工具,各类险种具有不同的特点和保障范围,以满足客户多样化的需求。 首先,人寿保险是为了在被保险人不幸身故时,为其家人提供经济上的保障。它可以确保家庭在失去主要经济支柱时,仍能维持一定的生活水平。其特点在于保障期限较长,通常为多年甚至终身。保障范围包括身故赔偿、生存金...https://funds.hexun.com/2024-11-17/215600821.html
2.保险的特征有哪些保险的特征有哪些 保险(insurance)是指投保人根据合同约定,向保险人支付保险费,保险人对于合同约定的可能发生的事故因其发生所造成的财产损失承担赔偿保险金责任,或者当被保险人死亡、伤残、疾病或者达到合同约定的年龄、期限时承担给付保险金责任的商业保险行为。https://www.66law.cn/laws/385776.aspx
3.法制考试题库答案(精选6篇)4、请结合工作和生活实际,谈谈怎样做一个学法用法守法的公民? 答:随着人类社会的不断进步和发展,法律越来越受到人们重视,一个国家法律体制完善与否也日益成为衡量这个国家现代化程度高低的标志。我们要做一个遵纪守法的好公民,首先要学法。在学法的基础上,做到知法、懂法、守法、用法。 我国是一个社会主义法治国家,实...https://www.360wenmi.com/f/filetm75fp6e.html
4.金融知识复习世界上最早的货币集团如果觉得阅读不方便,你可以下载word版本,内容都是一样的 一、单选题 第一章 金融机构 1、世界上最早创建信用合作社的是哪个国家?(A) A.德国 B.英国 C.美国 D.荷兰 2、中国第一家农村信用社成立于(A) A.河北香河 B.河南新乡 C.湖北襄阳 D.山西晋城 ...https://blog.csdn.net/xiaxiaorui2003/article/details/4993496
5.消防知识的试题及答案(精选16套)5.如果因电器引起火灾,在许可的情况下,你必须首先(B) A.找寻适合的灭火器扑救 B.将有开关的电源关掉 C.大声呼叫 6.爆炸现象的最主要特征足什么?(B) A.温度升高 B.压力急剧升高 C.周围介质振动 7.下列哪一种气体是属于易燃气体?(B) A.二氧化碳 B.乙炔 C.氧气 8.下列哪种措施是处理气瓶受热或着火时应...https://m.ruiwen.com/shiti/6116998.html
6.八年下册语文知识点2请你以"那是一种的鸭蛋"为开头,说一段话,谈谈高邮鸭蛋的特点。 3作者对端午的鸭蛋怀着什么感情? 此三环节培养学生搜索整合信息的能力,要求完整准确,语言生动地讲述理解,整体感知课文,体现了以学生为主体的教学理念,激发了学生的主动意识和进取精神。 https://www.unjs.com/w/322977.html
7.医疗保险学试题8篇(全文)6、参保人办理普通门诊签约后,想换一家签约医疗机构可以吗?原则上参保人两年内只能在参保地选择一家门诊签约医疗机构,登记成功后,两年内不予更改;如需更改的,请于下一轮的门诊统筹签约医疗机构公布后到参保地社保经办机构更改签约医疗机构。 四、思考题(1题,15分)请谈谈你对我区城镇基本医疗保险实施以来的体会及...https://www.99xueshu.com/w/file6zmgp9zi.html
8.中考压轴2024年山东省潍坊市中考模拟语文试题(附答案)十、作文.《新周刊》官方微博曾经这样发怀古之幽思“幸好当年没有WIFI……才有孤独和对孤独的体认,才有发呆,才有胡思乱想,才有沉默地阅读,才有专心地交谈,才有抬头看见风景,才有静物,才有颜色”请你结合生活体验,写一则跟帖,谈谈你对互联网的看法(150字左右).阅读材料,按要求作文一位母亲带儿子去买衣服,儿子...https://www.yxfsz.com/view/1700422018653065218
9.数学与应用数学论文范文(优选18篇)因此农业经济学也是现代经济学研究的重点内容之一,本文将以此为基础,简单从组合数学、数理统计以及模糊数学的角度出发谈谈应用数学与经济学之间的关系。 1.组合数学。 组合数学也被称之为离散数学,其核心内容是通过使用算法,处理各种离散数据,特别是在计算机技术飞速发展的当今时代,组合数学可以使得计算机在处理离散对象时...https://www.77cxw.com/fl/885779.html
10.初中生社会调查报告(精选15篇)其中对于大学生医疗保险非常了解的只有9人,仅占总人数的8.91%,非常不了解的有33人,占总人数的32.67%,而一般了解的高达59人,占总人数的58.42%。从中可以看出我校大部分学生都不够了解甚至是不了解大学生医疗保险制度。学校应该加强对于大学生医保的宣传力度,力求达到参保的每一位同学都非常了解大学生医保制度,没有...https://www.yjbys.com/diaochabaogao/3644582.html
11.保险特征四大特征,你知道哪些?基础知识前言:保险公司通过收集大量的保费,来分摊被保险人的风险。在被保险人遭受意外损失时,保险公司会按照合同约定赔付相应的金额,以减轻被保险人的经济压力。保险公司需要保证被保险人的利益,以保持其良好的信誉度和市场地位。在购买保险时,我们需要了解保险特征四大特征,以便选择一份适合自己的保险。 https://www.shenlanbao.com/zhishi/5-584737
12.消防安全知识竞赛试题20228、消防安全管理有哪些基本特征?( ) A.全方位性 B.全天候性 C.全过程性 D.全员性 9、火灾隐患举报投诉电话是( ) A.119 B.96119 C.110 10、保险丝不能用哪种材料制成( ) A 铁丝 B 铝合金 C 铜丝 D、铝丝 11、收看电视时,不正确的做法是( )。 https://m.oh100.com/kaoshi/peixun/238285.html
13.功成不必在我,功成必定有我——致敬笃定的“养老人”美国,以护理院为代表的医养结合养老服务项目,则有根据服务对象支付能力评估后采取的medicare、madicade部分支付,以及商业护理保险支付。荷兰等国家,其Nursing home业态为长期护理保险(特殊医疗费用)支付范围,而居家护理、老年人康复,2015年后为医疗保险支付范围。总而言之,面向刚需的护理型养老服务,其支付体系是多元化的,...https://0555mas.com/yanglaodongtai/69141.html
14.如何找到最适合你的心理咨询师?心理学文章可以跟你的家庭医生或者主治医生(PCP)提及心理健康需求,请他们推荐。 4)Psychology Today 这是相当于是心理咨询师的“黄页”,可以通过筛选性别、种族、语言、特长、流派、保险等各种方式定位咨询师。 5)中文的心理咨询师黄页 网上有很多总结了说中文的心理咨询师的资源,比如“一三诊所”就列出了不少湾区为主的中文...https://www.xinli001.com/index.php/info/100487083
15.如何识别假汽车保险?假保险的三大特征汽车频道假保险的三大特征 购买假的汽车保险,受害不浅,假保险一般有: 1)真公司假保单:保险公司名字真实,保单号码是伪造的,一般是彩色激光打印机打印或是非法得到的粉红保单。曾有人买假保单被他人撞车,警察来了才知道保单是假。 2)真公司真个人信息假团体:保险公司真实,保单真实,但为得到低价,用非法手段参加团体。买了几...https://www.hnr.cn/auto/zt/auto315/qcbx/201402/t20140220_842355.html
16.初二上册语文期末检测试题带答案5.请你仿照例句的句式,在下面的横线上补写相应的内容。(2分) 例句:如果我是阳光,我将照亮所有的黑暗。 (1)如果我是清风,我将 (2)如果我是春雨,我将 6就下面的话题谈谈你的理解。(不超过30个字)(2分) “铸剑为犁”的雕像在联合国总部前已矗立了四十多个春秋,可是和平的钟声并未向全世界渴望和平的人们...https://www.yuwenmi.com/shiti/banianji/1121452.html
17.聊医管理内参试发行版第三期今年4月1日起,河南省启动困难群众大病补充医疗保险,成为基本医疗保障制度和大病保险制度的拓展、延伸和补充。7月10日,记者从省人社厅了解到,为减轻困难群众垫付住院费用的负担,免去报销费用奔波之苦,河南已实现基本医疗保险、大病保险、大病补充医疗保险“一站式”结算服务。 https://lib.lchospital.cn/qitafuwu/liaoyineican-guanlilei/2017nian/2018-07-01/716.html