Android开发经典笔试面试题汇总(持续更新中)

1.我们都知道Handler是线程与Activity通信的桥梁,假设线程处理不当。你的机器就会变得非常慢,那么线程销毁的方法是:(A)
A. onDestroy()
B. onClear()
C. onFinish()
D. onStop()

理解:正确销毁线程的方法应该是handler.removeCallBacks()。

2.SharedPreferences保存文件的路径和扩展名是:/data/data/package_name/shared_prefs/
*.xml.



3.Android的自己主动恢复功能可以完毕?(D)
A.回复地址簿
B.修复丢失的文字信息
C.回复删除的信息
D.恢复备份设置和数据来又一次安装程序



4.为满足线程间通信,Android提供了(A)
A.Handler和Looper
B.Handler
C.Message Queue
D.Looper

理解:Android提供了Handler和Looper来满足线程间通信,Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
1)Looper:一个线程能够产生一个Looper对象。由他来管理此线程里的MEssageQueue(消息队列)
2)Handler:能够构造Handler对象来与Looper沟通,以便push新消息到MessageQueue,或者接收Looper从Message Queue取出所送来的消息。
3)Message Queue:用来存放线程放入的消息;
4)UIThread就是主线程,Android启动时会建立一个MessageQueue.




5.以下哪种进程最重要,最后被销毁?(D)
A.服务进程
B.后台进程
C.可见进程
D.前台进程

理解:重要性依次是:前台进程、可见进程、服务进程、后台进程、空进程。所以销毁的顺序为逆方向。





6.在Android中,在屏幕密度为160时,1pt大概等于(B)sp。
A.1.22
B.2.22
C.2.12
D.1.12

理解:在Android中,1pt大概等于2.22sp。
Android支持下列全部单位:
1)px (像素):屏幕上的点;
2)in(英寸):长度单位;
3)mm(毫米):长度单位;
4)pt(磅):1/72英寸
5)dp(与密度无关的像素):一种基于屏幕密度的抽象单位。

在每英寸160点的显示器上,1dp=1px;
6)dip  (同dp)
7)sp (与刻度无关的像素):与dp类似,可是能够依据用户字体大小首选项进行缩放。




Apk的资源包中:
当屏幕density=240时。使用hdpi标签的资源。
当屏幕density=160时,使用mdpi标签的资源。
当屏幕density=120时。使用ldpi标签的资源;

(1)在屏幕密度为160时,1dp=1px=1dip,    1pt=160/72sp,      1pt=1/72英寸。
(2)当屏幕密度为240时,1dp=1dip=1.5px




7.通过Intent传递一些二进制数据的方法:
1)使用Serializable接口实现序列化,这是java经常使用的方法;
2)实现Parcelable接口,这里Android的部分分类比方Bitmap类已经实现了,同一时候Parcelable在Android  AIDL中交换数据也非经常见。



8.以下属于Android的动画分类的有?(A B)
A. Tween
B. Frame
C. Draw
D. Animation

理解:Tween动画,能够使视图组件移动、缩放、旋转、透明度变化;
Frame动画:通过顺序的播放排列好的图片来实现,类似电影;



9.下列关于数据持久化的描写叙述正确的有:(BD)
A. 在内存中缓存多个Bitmap对象是一种数据持久化方法
B. SQLite数据库文件能够保存在SD卡中
C. ContentProvider的主要目的是为了将Android应用的数据持久化
D. 数据持久化就是将内存的数据保存到外存




10.将一个Activity设置成窗体样式,仅仅须要设置Theme就可以。


11.Intent传递数据时。下列的数据类型不能够被传递的是(D)
A. Serializable
B. File
C. Parcelable
D. Thread



12.Android DVM的进程和Linux的进程,下面说法错误的是(D)
A.它们都是进程的一种
B. dvm是Android的虚拟机
C. Linux的进程是程序的详细实现。是运行程序的过程
D. dvm中能够创建多个进程来处理应用间的同步问题


理解:每个Android应用程序都在它自己的进程中执行。都拥有一个独立的Dalvik虚拟机实例,每个DVM都是在Linux中的一个进程。




13.Toast显示时长默认仅仅有2种,分别为Toast.LENGTH_LONG和Toast.LENGTH_SHORT.
分别为2s和3.5s。其它的值都是无效的。


API文档尽管写的第三个參数是时间。可是Framework做了重定义,限定了2s和3.5s两个值。



14.下列哪些情况下,系统可能会弹出ANR对话框(ABC)
A.在Activity中,Main线程消息队列中的消息在5s内没有得到对应
B.在Service中,onStartCommand()方法运行超过5s
C.在BroadcastReceive中。onReceive()方法运行时间超过10s
D.在启动的新线程中。run()方法运行时间超过5s

理解:ANR:Application Not Responsing
1)UI线程堵塞时间超过5s会ANR。
2)Service属于主线程,耗时操作要开启子线程
3)在BroadcastReceive中,onReceive的生命周期为10s,所以里面的操作不能超过10s



15.在Android中使用Menu时可能须要重写的方法有(AC)
A. onCreateOptionsMenu()
B. onCreateMenu()
C. onOptionsItemSelected()
D. onItemSelected()

理解:一个是创建菜单的方法,一个是菜单项点击事件的方法。


16.下列关于IntentService与Service的关系描写叙述错误的是(CD)
A. IntentService是Service的子类
B. IntentService在执行时会启动新的线程来执行任务
C. 启动方式不同
D.没有差别

理解:IntentService是继承Service的,包括了Service的所有特性,也包括了Service的生命周期,那么与Service不同的是。IntentService在运行onCreate()操作时候,内部开了一个线程,去运行耗时操作。

IntentService和Service的启动方式同样。都是通过startService()方法。





17.在多个应用中读取共享存储数据时,须要用到query()方法,这是哪个对象的方法(A)
A. ContentResolver
B. ContentProvider
C. Cursor
D. SQLiteHelper

理解:ContentResolver和ContentProvider是一对。

一个执行在提供数据端(provider),一个执行在调用端(resolver).使用的时候利用resolver(query,insert,update)来调用provider的方法。然后provider再进行数据查询。


18.关于ServiceConnection接口的onServiceConnected()方法的触发条件描写叙述正确的是(B)
A. bindService()方法运行成功后
B. bindService()方法运行成功同一时候onBInd()方法返回非空IBinder对象
C. Service的onCreate()方法和onBind()方法运行成功后
D. Service的onCreate()和onStartCommand()方法启动成功后


19.Android中使用SQLiteOpenHelper这个辅助类时。能够生成一个数据库,并能够对数据库版本号进行管理的方法能够是(AB)
A. getWriteableDatabase()
B. getReadableDatabase()
C. getDatabase()
D. getAbleDatabase()



20.下面关于Toast说法正确的是(BD)
A. Toast能编辑
B. Toast没有焦点
C. Toast能够获得用户输入
D. Toast仅仅能持续一段时间

理解:Toast能够由程序猿自己定义,可是用户是不能编辑的。用户也无法输入。


注意:可编辑和自己定义的概念是不同的。

Toast和Dialog不同,Toast是没有焦点的。



21.在一个ListView中。显示的布局有多种不同的形式。比如某些行仅仅有ImageView,而另外一些行仅仅有TextView.须要重写哪几个方法?(ABCD)
A. getCount()
B. getItemId()
C. getItemViewType()
D. getViewTypeCount()




22.前台进程(Foreground)最重要,通常最后被销毁
与用户当前正在做的事情密切相关。不同的应用程序组件可以通过不同的方法使它的宿主进程移到前台。当以下不论什么一个条件满足时,可以考虑将进程移到前台:
1)进程正在执行一个与用户交互的Activity,它的onResume()方法被调用
2)进程有一个Service,该Service相应的Activity正在与用户交互
3)进程有一个Service被调用startForeground()方法,要求到前台来运行
4)进程有一个Service,而且在Service的某个回调函数(onCreate(),onStart(),onDestroy())内有正在运行的代码
5)进程有一正在执行的BroadcastReceiver,它的onReceive()方法正在执行。



23.以下关于Android中定义style和theme的描写叙述正确的是(AD)
A.都能够降低反复属性设置
B. style能够作用在Activity上
C. theme能够继承
D. 一个TextView的style中定义了textColor属性。TextView本身也设置textColor属性。那么TextView本身定义的优先级较高。

理解:theme被final标记了。不能被继承;



24.下列对Android NDK的理解正确的是(ABCD)
A. NDK是一系列工具的集合
B. NDK提供了一份稳定、功能有限的API头文件声明
C. 使“java+C”的开发方式最终转正,成为官方支持的开发方式
D. NDK将是Android平台支持C开发的开端



25.以下那条语句能够构造正确的对话框(BC)
A. AlertDialog dialog = new AlertDialog(context)
B. AlertDialog.Builder builder = new AlertDialog.Builder(context)
C. ProgressDialog dialog = new ProgressDialog(context)
D. ProgressDialog.Builder builder = new ProgressDialog.Builder(context)

理解:AlertDialog的构造方法被声明为protected。所以不能直接使用new keyword来创建AlertDialog类的对象实例。要想创建AlertDialog对话框,须要使用Builder类,该类是AlertDialog类中定义的一个内嵌类。

因此必须创建AlertDialog.Builder类的对象实例。





26.下列哪些情况系统会弹出Force Close对话框(BC)
A. 应用执行时,Main线程进行了耗时操作
B. 应用执行时抛出了OutOfMemoryError
C. 应用执行时抛出了RuntimeException
D. 应用执行时。用户操作过于频繁

理解:注意区分ANR 和 Force Close。
A D会导致ANR。



27.Android中MVC模式C层指的是?(A)
A. Activity
B. Service
C. Content
D. Intent

理解:Android控制层的任务一般就是Activity来完毕。
视图层相应了Android中的View,也能够理解为布局或者控件。


28.RemoteView在哪些功能中使用?(BD)
A. Toast
B. AppWidget
C. ListView
D. Notification


29.关于BroadcastReceiver的说法不对的是(B)
A. 是用来接收广播Intent的
B. 一个广播Intent仅仅能被一个订阅了此广播的BroadcastReceiver所接收
C. 对有序广播,系统会依据接收者声明的优先级别按顺序逐个运行接收者
D. 接收者声明的优先级别在<intent-filter>的android:priority属性中声明,数值越大表示优先级越高。



30.Android系统对下列哪些对象提供了资源池(AC)
A. Message
B. Thread
C. Async Task
D. Looper

理解:
Message提供了消息池。有静态方法Obtain从消息池中取对象;
Thread默认不提供资源池,除非使用线程池ThreadPool管理;
AsyncTask是线程池改造的,默认提供最多5个线程进行并发操作;
Looper创建时创建一个消息队列和线程对象。也不是资源池;



31.Android中的R.java不能够手动改动。


 理解:自己主动生成,无法改动。

改动后编译器也会自己主动改回去。


32.Android DVM的进程和Linux的进程。应用程序的进程是否为同一个概念?  【是】

理解:DVM指dalvik虚拟机,每一个Android程序都有一个独立的dvm实例,每一个Android应用程序都在他自己的进程中执行。
而一个dvm实例都是作为Linux的进程运行的。能够觉得是一个概念。

补充:Dalvik是Google公司自己设计用于Android平台的java虚拟机。每个Dalvik应用作为一个独立的Linux进程运行。独立的进程能够防止在虚拟机崩溃的时候全部程序都被关闭。



33.下列关于Android数字签名描写叙述错误的是:(C)
A.全部的应用程序都必须有数字证书。Android系统不会安装一个没有数字证书的应用程序
B.Android程序包使用的数字证书能够是自签名的,不须要一个权威的数字证书机构签名认证
C.假设要正式公布一个Android程序,能够使用集成开发工具生成的调试证书来公布
D.数字证书都是有有效期的。Android仅仅是在应用程序安装的时候才会检查证书的有效期。假设程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。



理解:必需要使用一个合适的私钥生成的数字证书给程序签名,而不能使用adt插件或者ant工具生成的调试证书来公布。
由于集成工具生成的调试证书不是一个包括开发人员信息,取得开发人员授权的有效私有密钥。




34.Android中能够使用System.out.println(“ ”);在控制台显示想要的内容吗?【不能】

理解:使用System.out.println(“ ”);语句输出的内容也仅仅会出如今LogCat中。而不会出如今Console控制台中。显示的tag为System.out


35.通过startService()和bindService()。下面说法错误的是:(C)
A.通过startService()启动服务:会调用例如以下生命周期方法:onCreate()-onStart()-onDestroy()
B.当採用startService()方法启动服务,訪问者与服务是没有绑定在一起的,訪问者退出,服务还在执行
C.假设是调用bindService()启动服务:会调用例如以下生命周期方法:onCreate()-onBInd()-onDestroy()onUnbind()
D.採用bindService()方法启动服务时, 訪问者与服务是绑定在一起的,即訪问者退出,服务也就终止,解除绑定

理解:C:onCreate()onBind()onUnbind()onDestroy()


36.使用AIDL完毕远程service方法调用下列说法不对的是(A)
A. AIDL相应的接口名称不能与AIDL文件名称同样
B. AIDL的文件的额内容类似java代码
C.创建一个Service(服务),在服务的onBind(Intent intent)方法中返回实现了AIDL接口的对象
D. AIDL相应的接口的方法前面不能加訪问权限修饰符

理解:AIDL相应的接口名称必须与AIDL文件名称同样,否则无法自己主动编译;
AIDL相应的接口的方法不能加訪问权限修饰符


37.【腾讯2015春招移动client开发练习卷】
Android中Looper的实现原理,为什么调用Looper.prepare()就在当前线程关联了一个Looper对象。它是怎样实现的。



理解:
1)线程间通信机制:首先,Looper,Handler,MessageQueue三者共同实现了Android系统里线程间通信机制。

如在A,B两个子线程之间须要传递消息。首先给每一个子线程绑定一套Handler,Looper,MessageQueue机制。然后这三个对象都与各自的线程相应。然后A线程通过调用B线程的Handler对象,发送消息。这个消息会被Handler发送到B线程的MessageQueue中, 而属于B线程的Looper对象一直在循环无限遍历MessageQueue,一旦发现该消息队列里收到新的消息,就会去对消息进行处理,处理过程中会回调自身Handler,HandleMessage方法。从而实现了不同线程间通信。

2)Looper实现原理:Looper类里面包括一个消息队列对象和一个线程对象。

当创建Looper时。会自己主动创建一个消息队列,同一时候将内部线程对象指向创建Looper的线程。当开启Looper后(Looper.loop()),会自己主动进入无限for循环中,不断去遍历消息队列,假设没有消息则堵塞,有消息则回调Handler的handleMessage()方法进行处理。



3)Looper.prepare():首先,要使用Looper机制通常会在当前线程中创建Handler对象,里面会自己主动创建一个Looper对象和消息队列,这里面的消息队列属于当前线程空间。但此时的Looper还不会去遍历。也没有绑定到当前线程。

当中,Looper对象内部也包括一个空消息队列对象和空线程。

通过Looper.prepare()方法,先让该消息队列指向当前线程的消息队列。让空线程也指向当前线程。从而实现了绑定。






38.【腾讯2015春招移动client开发练习卷】
简述Android怎样处理UI与耗时操作的通信,有哪些方式及各自的优缺点。



理解:。。。

AsyncTask本质上是一个线程池。全部的异步任务都会在这个线程池中的工作线程中运行,当须要操作UI界面时,会和工作线程通过Handler传递消息。




github主页:https://github.com/chenyufeng1991  。

欢迎大家訪问!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288314.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WCF服务自托管(Self-Hosting)

WCF寄宿方式是一种非常灵活的操作,可以寄宿在各种进程之中,常见的寄宿有:IIS服务、Windows服务、Winform程序、控制台程序中进行寄宿,从而实现WCF服务的运行,为调用者方便、高效提供服务调用。 当客户端和服务端之间的进程有明确的边界时,使用自托管,需要注意的…

学习进度04

第五周所花时间&#xff08;分钟&#xff09;100代码量&#xff08;行&#xff09;50博客量&#xff08;篇&#xff09;2了解到的知识点作为合作的团队要制定统一的标准转载于:https://www.cnblogs.com/liguoshuai/p/5352590.html

android 微信分享gif图,android后台动态创建图片并实现微信分享

今天就记录一下。先说明一下&#xff0c;之前没有做过类似的东西&#xff0c;百度了一两天才知道&#xff0c;说来很惭愧、有点笨&#xff0c;只能这样说。在我的脑里只明白&#xff0c;如果要动态创建图片&#xff1a;一、就是new 嘛二、就是LayoutInflater.from()这种。而微信…

python字符串前面去两位_在Python 3中删除字符串文字前面的'b'字符do

I am new in python programming and i am a bit confused. I try to get the bytes from a string to hash and encrypt but i gotb...b character in front of string just like the below example. Is any way avoid this?.Can anyone give a solution? Sorry for this si…

C语言之去掉https链接的默认443端口

1 问题 去掉https链接的默认443端口 2 代码实现 #include <stdio.h> #include <string.h> #include <stdlib.h>#define BOOL int #define TRUE 1 #define FALSE 0/**判断字符串str1是不是str2开头*/ int is_begin_with(const char *str1, char *str2) {if(…

仅需一个参数就可搞定OneProxy的VIP机制

文章转自&#xff1a;http://card.weibo.com/article/h5/s#cid1001603863326047255626&vid&extparam&from&wm0&ip182.50.119.226现在都讲求无单点的架构&#xff0c;OneProxy也不例外&#xff0c;虽然已经有进程级别的自动重起机制&#xff08;--keepalive…

关于在Windows下AndroidStudio.使用React-Native开发android报错红屏“run react-native start”解决

以下是报错&#xff0c;不过他已经给了解决办法&#xff0c;报错提示的大概中文译为“无法加载脚本&#xff0c;请确保你的Metro服务以及那个包正确”&#xff0c;由于我个人并不是专业安卓&#xff0c;公司项目没办法就上了&#xff0c;所以我就不关包了&#xff0c;包肯定是正…

AsyncLocalT在链路追踪中的应用

前言在项目生产中日志的记录是必不可少的&#xff0c;在.net项目中&#xff0c;要说日志组件&#xff0c;log4net绝对可有一席之地&#xff0c;随着公司业务的发展&#xff0c;微服务则必定无可避免。在跨服务中通过日志进行分析性能或者排查故障点&#xff0c;如何快速定位日志…

Windows运行命令大全

要打开Windows XP系统自带的程序,菜鸟一般是用鼠标点开始/程序(或桌面、快速启动)里的快捷方式,老鸟喜欢按下Win+R并输入运行命令。Windows XP的开始运行命令大全,其实都是C:\WINDOWS\system32下面的程序,只要在开始/运行/输入相应的程序名(命令)即可。对于常用运行命令…

【转】js老生常谈之this,constructor ,prototype

前言 javascript中的this,constructor ,prototype&#xff0c;都是老生常谈的问题&#xff0c;深入理解他们的含义至关重要。在这里&#xff0c;我们再来复习一下吧&#xff0c;温故而知新&#xff01; this this表示当前对象&#xff0c;如果在全局作用范围内使用this&#xf…

Linux+Oracle+12c+RAC+安装配置详细-GI安装

IP地址主机名用途实例名192.168.12.58oracle-rac03-db03 Public ip (节点1&#xff09;192.168.12.59oracle-rac04-db04Public ip(节点2&#xff09;192.168.12.73 rac03-db03-vipvip(节点1&#xff09;racdb3 asm1192.168.12.74rac04-db04-vipvip(节点2&#xff09;racdb4 …

android auto answer,Incoming call auto answer in android 4.0.3

问题I am working in Android technology last 1 years. Currently I want develop an application incoming call auto answer in Android 4.0.3 but in this version I am not getting any solution or cant find any api for this (ITelephony.aidl). Please suggest me.回答…

剑指offer之判断二叉树是不是平衡二叉树

1 问题 判断二叉树是不是平衡二叉树 平衡二叉搜索树&#xff08;Self-balancing binary search tree&#xff09;又被称为AVL树&#xff08;有别于AVL算法&#xff09;&#xff0c;且具有以下性质&#xff1a;它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1&#x…

主成分分析法_数学建模 || 葡萄酒的评价(1)主成分分析法

首先要说一下&#xff0c;这篇文章我在其他的平台发过&#xff0c;也是本人亲自写的&#xff0c;如果大家觉得眼熟的话放弃轻松&#xff0c;没有抄袭&#xff0c;主要是因为与我这 “葡萄酒的评价” 题目成系列了&#xff0c;因此在这里再把这个贴出来。2012 年 A 题葡萄酒的评…

微信jssdk开发,PHP,必要步骤

微信的文档几个重叠在一起&#xff0c;有点乱&#xff0c;自己用到就统计一下&#xff0c;减少字数直接上&#xff0c;毕竟懒。 一般说明步骤一&#xff1a;微信jssdk使用必须在微信公众平台进入其公众号设置&#xff0c;打开配置安全域名才可以。 安全域名则是请求调用微信接…

imagePreview接口调用微信自带图片播放器

2019独角兽企业重金招聘Python工程师标准>>> 在微信浏览器中&#xff0c;出现在网页上的图片通过点按一小段时间&#xff0c;可以调出微信隐藏的图片播放器&#xff0c;在播放器中看图可以随意放大缩小&#xff0c;体验更炫酷。不过这个功能默认只对通过微信后台编辑…

使用IdentityServer出现过SameSite Cookie这个问题吗?

原文作者&#xff1a;Sebastian Gingter原文链接&#xff1a;https://reurl.cc/Dygrgd译者&#xff1a;沙漠尽头的狼译文链接&#xff1a;https://reurl.cc/1ZYNoQ本文是作者2019年的一篇分享&#xff0c;里面的一些观点和使用的技术&#xff0c;对我们现在的开发依然有效&…

windows下sc create命令行添加/创建/修改服务

C:\Users\Administrator>HELP SC 描述: SC 是用于与服务控制管理器和服务进行通信的命令行程序。 用法: sc <server> [command] [service name] <option1> <option2>... 选项 <server> 的格式为 "\\ServerName"…

TypeError: 'MongoClient' object is not callable

在声明数据库的时候&#xff0c;将中括号[ ]换成了圆括号&#xff08;&#xff09;错误&#xff1a;修改完成后的代码&#xff1a;client pymongo.MongoClient(localhost)db client[my_database]#注意这里用中括号&#xff01;&#xff01; 之后再运行程序&#xff0c;就能存…

微信JSSDK分享页面自定义当前链接最简单示例

这个是使用微信原本的Deom修改 但是一定要注意几个注意事项&#xff0c;代码很简单&#xff0c;却让我一周mmp 在微信开发者工具调试&#xff0c;有时候你代码正确但是会报错 一定要真机调试 appid和secret一定要正确 一定要在在微信公众号后台设置正确的安全目录&#xff0c;…