1、什么是ANR 如何避免它?
http://blog.csdn.net/Zengyangtech/archive/2010/11/21/6025671.aspx
2、什么情况会导致Force Close ?如何避免?能否捕获导致其的异常?
3、Android本身的api并未声明会抛出异常,则其在运行时有无可能抛出runtime异常,你遇到过吗?诺有的话会导致什么问题?如何解决?
4、简要解释一下activity、 intent 、intent filter、service、Broadcast、BroadcaseReceiver
http://blog.csdn.net/Zengyangtech/archive/2010/11/21/6025676.aspx
5、IntentService有何优点?
IntentService is a base class for Services that handle asynchronous requests (expressed as Intents) on demand. Clients send requests through startService(Intent) calls; the service is started as needed, handles each Intent in turn using a worker thread, and stops itself when it runs out of work.
This ‘work queue processor’ pattern is commonly used to offload tasks from an application’s main thread. The IntentService class exists to simplify this pattern and take care of the mechanics. To use it, extend IntentService and implement onHandleIntent(Intent). IntentService will receive the Intents, launch a worker thread, and stop the service as appropriate.
All requests are handled on a single worker thread — they may take as long as necessary (and will not block the application’s main loop), but only one request will be processed at a time.”
IntentService 的好处
Acitivity的进程,当处理Intent的时候,会产生一个对应的Service
Android的进程处理器现在会尽可能的不kill掉你
非常容易使用
日历中IntentService的应用
public class DismissAllAlarmsService extends IntentService {
@Override public void onHandleIntent(Intent unusedIntent) {
ContentResolver resolver = getContentResolver();
...
resolver.update(uri, values, selection, null);
}
}
in AlertReceiver extends BroadcastReceiver, onReceive(): (main thread)
Intent intent = new Intent(context, DismissAllAlarmsService.class);
context.startService(intent);
6.根据自己的理解描述下Android数字签名
Android数字签名
在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系,如果一个permission的protectionLevel为signature,那么就只有那些跟该permission所在的程序拥有同一个数字证书的应用程序才能取得该权限。Android使用Java的数字证书相关的机制来给apk加盖数字证书,要理解android的数字证书,需要先了解以下数字证书的概念和java的数字证书机制。Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。这个数字证书并不需要权威的数字证书签名机构认证,它只是用来让应用程序包自我认证的。
同一个开发者的多个程序尽可能使用同一个数字证书,这可以带来以下好处。
(1)有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。
(2)有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。
(3)可以通过权限(permission)的方式在多个程序间共享数据和代码。Android提供了基于数字证书的权限赋予机制,应用程序可以和其他的程序共享概功能或者数据给那那些与自己拥有相同数字证书的程序。如果某个权限(permission)的protectionLevel是signature,则这个权限就只能授予那些跟该权限所在的包拥有同一个数字证书的程序。
在签名时,需要考虑数字证书的有效期:
(1)数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。
(2)如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。
(3)AndroidMarket强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。
Android数字证书包含以下几个要点:
(1)所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
(2)Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
(3)如果要正式发布一个Android,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
(4)数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
Android面试题
1. 请描述下Activity的生命周期。
2. 如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
3. 如何将一个Activity设置成窗口的样式。(Edited by Sodino)
4. 如何退出Activity?如何安全退出已调用多个Activity的Application?
5. 请介绍下Android中常用的五种布局。
6. 请介绍下Android的数据存储方式。(Edited by Sodino)
7. 请介绍下ContentProvider是如何实现数据共享的。(Edited by Sodino)
8. 如何启用Service,如何停用Service。(Edited by Sodino)
9. 注册广播有几种方式,这些方式有何优缺点?请谈谈Android引入广播机制的用意。
10. 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系。
11. AIDL的全称是什么?如何工作?能处理哪些类型的数据?
12. 请解释下Android程序运行时权限与文件系统权限的区别。(Edited by Sodino)
13. 系统上安装了多种浏览器,能否指定某浏览器访问指定页面?请说明原由。
14. 有一个一维整型数组int[]data保存的是一张宽为width,高为height的图片像素值信息。请写一个算法,将该图片所有的白色不透明(0xffffffff)像素点的透明度调整为50%。
15. 你如何评价Android系统?优缺点。
1.activity的生命周期。
2.横竖屏切换时候activity的生命周期
总结:
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法
3.android中的动画有哪几类,它们的特点和区别是什么
4.handler机制的原理
5.说说activity,intent,service是什么关系
6.android中线程与线程,进程与进程之间如何通信
7.widget相对位置的完成在antivity的哪个生命周期阶段实现
8.说说mvc模式的原理,它在android中的运用
9.说说在android中有哪几种数据存储方式
10.android中有哪几种解析xml的类,官方推荐哪种?以及它们的原理和区别
分享到:
相关推荐
android高阶面试题,面试用的,平常积累11111111111111
Android面试题涵盖范围广泛,包括但不限于:Activity生命周期、Intent机制、BroadcastReceiver、Service、ContentProvider、Fragment、四大组件间通信、UI布局优化、性能调优(如内存泄漏检测、ANR避免、耗电优化)...
1)大厂真实面试题。作为面试官,参与社招和校招的面试,与身边的面试官朋友,汇总近期考核的题目,企业涵盖阿里、腾讯、字节、华为、京东、拼多多、小红书等。 2)企业现有题库。作为面试官,周期性的编写题目和...
以下是一些关键的Android面试题及相关的知识点解析: 1. **Android DVM与Linux进程的关系** - DVM(Dalvik Virtual Machine)是Android早期使用的虚拟机,每个Android应用在自己的进程中运行,拥有独立的DVM实例。...
【Java+Android面试题大全1】的描述主要涵盖了面试准备的多个方面,包括笔试答题技巧、面试者应具备的能力、简历编写以及如何达到简历标准。以下是对这些知识点的详细解析: 1. **笔试答题技巧**: - **核心知识...
在Android面试中,掌握核心知识点至关重要,特别是关于Activity的相关知识。Activity是Android应用程序的主要构建块,它是用户界面的载体,负责处理用户交互。以下是一些关键的Activity知识点: 1. **Activity的...
综上所述,以上知识点涵盖了Android开发中的一些核心概念和技术细节,对于准备参加联想或百度等公司的Android面试具有很高的参考价值。在实际工作中,还需要不断积累经验和实践,才能成为一名优秀的Android开发者。
在Android面试过程中,掌握核心知识点是至关重要的。这份"安卓巴士总结.zip"文件包含了对Android面试常见问题的详细解答,帮助求职者准备充分,提升面试成功率。以下是对压缩包内PDF文档中可能涵盖的一些关键知识点...
Android开发工程师面试题是针对Android初级开发程序员的笔试和面试指南,涵盖了Java基础、Java Web、Oracle数据库以及Android四大技术领域的问题。本书旨在帮助求职者在面试前做足准备,提高通过率,最终找到满意的...
这份"安卓Android源码——面试题-.rar"压缩包很可能包含了一系列与Android源码相关的面试题目,旨在帮助开发者和求职者熟悉并掌握Android系统的核心概念、工作原理以及常见问题的解决方案。 首先,Android源码的...
根据给定文件的信息,我们可以提炼出一系列与Android开发相关的面试知识点。这些知识点涵盖了从基础知识到进阶技巧,旨在帮助求职者准备Android开发岗位的面试。 ### Android基础概念 1. **Android系统架构**:...
这份"Android知识库"压缩包文件显然是一个宝贵的资源,包含了从初级到中级再到高级的全方位Android知识,包括常见的面试题、知识盲区以及实用技巧等内容。下面将对这些关键知识点进行详细阐述。 **初级篇** 对于...
"Android每日访谈"是一个致力于收集和分享Android面试题目的项目,旨在帮助开发者积累知识,提升技能,为求职做好准备。这个项目按照工作日每天更新一道题目,积少成多,使开发者在不知不觉中形成深厚的Android知识...
Android面试题集锦 (陆续更新)(最新2012-6-18) 【eoeAndroid Android相关的面试题最强汇总】 ZTE—adroid笔试题附答案版 iceskysl: 说说我招聘android技术人员的思路 史上最全面的面试资料(包含所有IT大公司)...
Java是一种广泛应用于各种领域的编程语言,特别是在...面试题涵盖了Java的基础、高级特性以及在Web游戏开发中的实际应用,全面考察了候选人的技能和经验。理解并熟练掌握这些知识点对于在Java领域取得成功至关重要。
共建共勉~建立初衷Android复习大纲,构建知识体系:open_book:归纳知识点,分组分类展示:chart_increasing:同时日常积累面试题,涉及初中高领域,希望能坚持下去。:bullseye:更新规则每周三次,周一问题,周三答案,...
具体来说,团队由2位产品经理、1位项目负责人、1位架构师、2位前端开发、6位后端开发、1位操作系统工程师、1位Android开发工程师、3位测试工程师(其中包含测试主管和核心测试人员)、1位运维工程师和1位UI设计师...
【Java题目及面试题】 Java是一种广泛使用的面向对象的编程语言,主要应用于企业级应用、Android移动开发等领域。以下是一些常见的Java面试题和知识点: 1. Java基础: - 讲解Java的三大特性:封装、继承和多态。...
在IT行业中,软件测试是确保产品质量的关键环节,尤其在知名软件公司中,对软件测试工程师的要求更为严格。...准备这些面试和笔试题时,除了掌握上述知识点,还要不断实践和积累经验,以便在实际工作中游刃有余。
链接[2](https://blog.csdn.net/qq_32269393/article/details/81109381)和[3](https://blog.csdn.net/leepenghom2010/article/details/80204710)列出了2018年的面试题,涵盖了系统设计、性能优化、UI布局等方面。...