
安卓面试题
-
2023年3月5日发(作者:qix)1.作用域public,protected,private,以及不写时的区别
答:区别如下:
作用域当前类同一package子孙类其他package
public√√√√
protected√√√×
friendly√√××
private√×××
不写时默认为friendly
ist和Vector的区别
答:就ArrayList与Vector主要从二方面来说.
一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程
序不安全的,不是同步的
二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却
是原来的一半
p和Hashtable的区别
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java
1.2引进的Map接口的一个实现
二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线
程序不安全的,不是同步的
三.值:只有HashMap可以让你将空值作为一个表的条目的key或value
4.多线程有几种表示方法,都是什么?同步有几种实现方法,都是什么?
答:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口
同步的实现方面有两种,分别是synchronized,wait与notify
5.x=1,y=2,z=3;计算:y+=z--/++x
答:y=3
是最基本的数据类型吗?
答:基本数据类型包括byte、int、char、long、float、double、boolean
和short。
.
和Integer有什么区别
答:Java提供两种不同的类型:引用类型和原始类型(或内置类型)。Int
是java的原始数据类型,Integer是java为int提供的封装类
和StringBuffer的区别
答:JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操
作字符串,即包含多个字符的字符数据。
这个String类提供了数值不可改变的字符串。而这个StringBuffer类提供
的字符串进行修改。当你知道字符数
据要改变的时候你就可以使用StringBuffer。典型地,你可以使用
StringBuffers来动态构造字符数据。
t的生命周期
答:Servlet被服务器实例化后,容器运行其init方法,请求到达时运行
其service方法,service方法自动派遣运行
与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁
的时候调用其destroy方法。
d和redirect的区别
答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个
URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知
道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请
求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以
session,request参数都可以获取
11.面向对象的特征有哪些方面
答:封装,继承,多态
ad和Override的区别
答:方法的重写Overriding和重载Overloading是Java多态性的不同表现。
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading
是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的
名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方
法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同
的参数类型,则称为方法的重载(Overloading
13.数组有没有length()这个方法?String有没有length()这个方法?
答:数组没有length()这个方法,有length的属性。String有有
length()这个方法。
{}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,
什么时候被执行,在return前还是后?
答:会执行,在return前执行。
()和wait()有什么区别?
答:sleep()是线程类Thread的方法,导致此线程暂停执行指定时间,给执
行机会给其他线程,但是监控状态依然保持,到时后会自动恢复,调用sleep
不会释放对象锁。
wait()是Object类的方法,对此对象调用wait方法导致本线程放弃对
象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或
notifyAll)后本线程才进入对象锁定池准备获得对象锁进入运行状态
16.启动一个线程是用run()还是start()?
答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运
行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。
run()方法可以产生必须退出的标志来停止一个线程。
语句中的表达式可以是什么类型数据?
答:表达式的值可以是byte、short、int和char类型的数据,但不能是float
和double类型的数据。
18.插入数据时,ArrayList、LinkedList、Vector谁速度较快?
答:ArrayList、Vector以数组方式存储数据,插入数据时要进行元素移动操作,
因而插入数据慢。LinkedList是一种链表结构,在插入数据时只需要修改链表的
前后项指向即可,因此插入速度较快。
19.字符串的连接操作有几种实现方法?
答:字符串与字符串的连接操作可以通过“+”运算符和concat()方法来实现
20.在比较对象时,“==”运算符和equals运算有何区别?
答:“==”运算符表示两个对象引用的地址是否相等,equals运算符则表示
两个对象引用的内容是否相等。
和exception有什么区别
答:error表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内
存溢出。
exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,
从不会发生的情况
s=newString("a");共创建了几个String对象?
答:两个。其中包括一个字符对象和一个字符对象引用对象。
23.页面间对象传递的方法
答:request,session,application,cookie
中有几种类型的流?
答:字节流,字符流。字节流继承于InputStreamOutputStream,字符流继
承于InputStreamReaderOutputStreamWriter
,Set,Map是否继承自Collection接口?
答:List,Set是
26.在JSP中如何使用注释?
答:主要有四中方法:
1.<%--与--%>
2.//
3./**与**/
4.
的基本语句构成是?
答:选择器{属性1:值1;属性2:值2;„„}
28..行内元素有哪些?块级元素有哪些?CSS的盒模型?
答:块级元素:divph1h2h3h4formul
行内元素:abbrispaninputselect
Css盒模型:内容,border,margin,padding
引入的方式有哪些?
答:内联内嵌外链导入
30..标签上title与alt属性的区别是什么?
答:Alt当图片不显示是用文字代表。
Title为该属性提供信息
ript的typeof返回哪些数据类型
答:Objectnumberfunctionbooleanunderfind
()join()的区别
答:前者是切割成数组的形式,后者是将数组转换成字符串
中的input可以设置为readonly和disable,请问2者有什么区别?
答:readonly不可编辑,但可以选择和复制;值可以传递到后台
disabled不能编辑,不能复制,不能选择;值不可以传递到后台
中的3种弹出式消息提醒(警告窗口,确认窗口,信息输入窗口)的命令式什么?
答:alert
confirm
prompt
35.求y和z的值是多少?
答:都为undefined,因为没有返回值
ript的2种变量范围有什么不同?
答:全局变量:当前页面内有效
局部变量:方法内有效
37..写出程序运行的结果?
for(i=0,j=0;i<10,j<6;i++,j++){
k=i+j;
}
答:结果:10
38.简述DIV元素和SPAN元素的区别。
答:DIV有回车,SPAN没有
DIV是块元素,SPAN是内嵌元素。
39.谈谈innerHTMLinnerText之间的区别。
答:innerHTML对象里面的HTML,innerText对象里面的文本
=10;varb=20;varc=10;alert(a=b);alert(a==b);alert(a==c);结果是?
结果:20,;
d的动画有哪几种?他们的特点和区别是什么?
答:两种,一种是tween动画,一种是frame动画。tween动画,这种实现方式可以使视
图组件移动,放大或缩小以及产生透明度的变化。frame动画,传统的动画方法,通过顺序
的播放排列好的图片来实现,类似电影。
ty的生命周期:
答:onCreate:在这里创建界面,做一些数据的初始化工作
onStart:到这一步变成用户可见不可交互的
onResume:变成和用户可交互的,(在activity栈系统通过栈的方式管理
这些个Activity的最上面,运行完弹出栈,则回到上一个Activity)
onPause:到这一步是可见但不可交互的,系统会停止动画等消耗CPU的
事情从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的
程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在
onstop:变得不可见,被下一个activity覆盖了
onDestroy:这是activity被干掉前最后一个被调用方法了,可能是外面类调用
finish方法或者是系统为了节省空间将它暂时性的干掉
d中常用的五种布局:
答:LinearLayout线性布局;AbsoluteLayout绝对布局;TableLayout表格布局;
RelativeLayout相对布局;FrameLayout帧布局;
d的五种数据存储方式:
答:sharedPreferences;文件;SQLite;contentProvider;网络
d中有哪几种解析xml的类?
答:XML解析主要有三种方式,SAX、DOM、PULL。
d的service的生命周期?:
答:onCreate()->onStart()->onDestroy()
47.一条最长的短信息约占多少byte?
答:中文70(包括标点),英文160个字节
d项目工程下面的assets目录的作用是什么
答:主要放置多媒体等数据文件
d的四大组件是?
答:activiey,service,broadcast和contentprovide
50.让Activity变成一个窗口:
答:Activity属性设定:有时候会做个应用程序是漂浮在手机主界面的。这个只
需要在设置下Activity的主题theme,即在定义Activity的地方
加一句:android:theme="@android:style/"
如果是作半透明的效果:android:theme="@android:style/ucent"
51.如何将SQLite数据库(.db文件)与apk文件一起发布?
答:可以将.db文件复制到EclipseAndroid工程中的resaw目录中。所有在
resaw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。可以将.db
文件复制到resaw目录中
52.启动service的两种方法?有什么区别?
答:一种是startService(),另一种是bindService()。这两者的区别是第
一种方式调用者开启了服务,即会与服务失去联系,两者没有关联。即使访问者
退出了,服务仍在运行。如需解除服务必须显式的调用stopService方法。主要
用于调用者与服务没有交互的情况下,也就是调用者不需要获取服务里的业务方
法。比如电话录音。而后者调用者与服务绑定在一起的。当调用者退出的时候,
服务也随之退出。用于需要与服务交互。
支持事务吗?添加删除如何提高性能?
答:SQLite作为轻量级的数据库,比MySQL还小,但支持SQL语句查询,提高性能可以
考虑通过原始经过优化的SQL查询语句方式处理。
54.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
答:在”暂停onPause”状态将数据保存。
d:paddingLeft与android:layout_marginLeft的区别
答:当按钮分别设置以上两个属性时,得到的效果是不一样的。
android:paddingLeft="30px"
按钮上设置的内容(例如图片)离按钮左边边界30个像素
android:layout_marginLeft="30px"
整个按钮离左边设置的内容30个像素
56.返回键与Home键区别?
答:back键默认行为是finish处于前台的Activity的即Activity的状态为
Destroy状态为止,再次启动该Activity是从onCreate开始的(不会调用
onSaveInstanceState方法)。Home键默认是stop前台的Activity即状态为
onStop为止而不是Destroy,若再次启动它,会调用onSaveInstanceState方法,
保持上次Activity的状态则是从OnRestart开始的
---->onStart()--->onResume()。
57.说说mvc模式的原理,它在android中的运用
答:MVC(Model_view_contraller)”模型_视图_控制器”。MVC应用程序总是
由这三个部分组成。Event(事件)导致Controller改变Model或View,或者同
时改变两者。只要Controller改变了Models的数据或者属性,所有依赖的View
都会自动更新。类似的,只要Controller改变了View,View会从潜在的Model
中获取数据来刷新自己。
r机制的原理
答:andriod提供了Handler和Looper来满足线程间的通信。Handler先进
先出原则。Looper类用来管理特定线程内对象之间的消息交换(Message
Exchange)。
1)Looper:一个线程可以产生一个Looper对象,由它来管理此线程里的Message
Queue(消息队列)。
2)Handler:构造Handler对象来与Looper沟通,以便push新消息到Message
Queue里;或者接收Looper从MessageQueue取出)所送来的消息。
3)MessageQueue(消息队列):用来存放线程放入的消息。
4)线程:UIthread通常就是mainthread,而Android启动程序时会替它建
立一个MessageQueue。
d的broadcast的生命周期:
答:Broadcastreceiver生命周期中仅有一个回调方法:
voidonReceive(ContextcurContext,IntentbroadcastMsg)
当接收器接收到一条broadcast消息,Android就会调用onReceiver(),并
传递给它一个Intent对象,这个对象携带着那条broadcast消息。我们认
为仅当执行这个方式时,Broadcastreceiver是活动的;这个方法返回时,
它就终止了。这就是Broadcastreceiver的生命周期。
60.两个Activity之间跳转时必然会执行的是哪几个方法。
答:一般情况比如说有两个activity,分别叫A,B,当在A里面激活B组件
的时候,A会调用onPause()方法,然后B调用onCreate(),onStart(),
OnResume(),这个时候B覆盖了窗体,A会调用onStop()方法.如果B呢是
个透明的,或者是对话框的样式,就不会调用onStop()方法
61.如何禁止横竖屏切换
答:设置Activity的android:configChanges="orientation|keyboardHidden"
62.如何退出Activity?
答:退出activity直接调用finish()方法.//用户点击back键就是
退出一个activity
退出activity会执行onDestroy()方法.
e是否在mainthread中执行
答:默认情况,如果没有显示的指定service所运行的进程,Service和
activity是运行在当前app所在进程的mainthread(UI主线程)里面
e里面是否能执行耗时的操作?
答:service里面不能执行耗时的操作(网络请求,拷贝数据库,大文件)
在子线程中执行newThread(){}.start();
65.怎么让在启动一个Activity是就启动一个service?
答:在activity的onCreate()方法里面startService();
传递数据时,可以传递哪些类型数据?
答:1.一般的基本数据类型ra()
ingextra();
2.数据的uri,a()a();
67.请介绍下ContentProvider是如何实现数据共享的。
答:把自己的数据通过uri的形式共享出去
android系统下不同程序数据默认是不能共享访问需要去实现一个类去继
承ContentProvider
68.为什么要用ContentProvider?它和sql的实现上有什么差别?
答:屏蔽数据存储的细节,对用户透明,用户只需要关心操作数据的uri就可以
了,对应的参数.
不同app之间共享,操作数据
但是contentprovider还可以去增删改查本地文件.xml文件的读取,更改,网
络数据读取更改Sql也有增删改查的方法.
69.谈谈UI中,Padding和Margin有什么区别?
答:Padding文字对边框,margin是控件与控件之间的距离
70.请解释下Android程序运行时权
答:Android程序执行需要读取到安全敏感项必需在中
声明相关权限请求,打电话,访问网络,获取坐标,读写sd卡,读写联系人等..安
装的时候会提示用户„
ew如何提高其效率?
答:复用convertview,历史的view对象
异步加载数据,分页加载数据,onscallLinster();
StaticclassViewHolder
使用静态的view对象避免创建过多的view.
把下载后的数据缓存到数据库里
客户端和服务器协同作战.
72启动应用后,改变系统语言,应用的语言会改变么?
答:会
73.如何判断是否有SD卡?
答:配置文件中有sd卡的权限,通过environment的静态方法,
if
(ernalStorageState().equals(_MOUNT
ED)){
74.简单描述下Android数字签名。
答:Android数字签名在Android系统中,所有安装到系统的应用程序都必有一
个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关
系
Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字
证书的私钥则保存在程序开发者的手中。Android将数字证书用来标识应用程序
的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应
用程序。
e和Activity在同一个线程吗
答:默认情况同一线程main主线程ui线程
76.说说HashSet和HashTable的区别?
答:HashSet相对于HashMap就是不能存放重复的数据,对于HashTable来
说,存放的数据不能出现key或value为null这样的情况。
77.是否可以继承String类
答:String类是final类故不可以继承
78.(匿名内部类)是否可以extends(继承)其它类,是否可以implements(实
现)interface(接口)
答:匿名的内部类是没有名字的内部类。不能extends(继承)其它类,但一个
内部类可以作为一个接口,由另一个内部类实现
ctclass和interface有什么区别
答:声明方法的存在而不去实现它的类被叫做抽象类(abstractclass),它用
于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现
该类的情况。不能创建abstract类的实例。然而可以创建一个变量,其类型是
一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方
法。Abstract类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类
为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法
接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通
过实现这样的接口而获得。接口中的所有方法都是抽象的,没有一个有程序体。接口
只可以定义staticfinal成员变量。接口的实现与子类相似,除了该实现类不能从接
口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口
的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽
象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转
换到接口类型或从接口类型转换,instanceof运算符可以用来决定某对象的类是否
实现了接口
80.接口是否可继承接口?抽象类是否可实现(implements)接口?抽象类是否可继承实体
类(concreteclass)
答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承
实体类,但前提是实体类必须有明确的构造函数
81.使用HTTP协议将客户端的请求传送到服务器端有哪两种方式?请简述它们的区别
答:1)get是从服务器上获取数据,post是向服务器传送数据。
2)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方
式,数据放置在HTMLHEADER内提交。
3)对于get方式,服务器端用ryString()可以获取GET请求参
数的变量值,对于post方式,服务器端用ameter获取提交的数
据。
4)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。
5)安全性问题。
82.在Servlet中,我们通过什么方法获取客户端提交的数据
答:ameter()
在Servlet中,通过什么语句生成向客户端发送的页面?请编写一段简单的
HelloWorld输出
PrintWriterout=ter();
();
(“HelloWorld!”);
服务器的默认端口是?为了中文字符处理不出现乱码,我们需要对Tomcat的
配置做出什么修改?
答:8080
URIEncoding=”utf-8”
jsp主要内置对象有?
request、response和out,还有exception、session、application、config、
pageContext和page
84.在JSP里,我们可以怎样获取来自客户端请求的IP地址?
答:oteAddr();
85.请简述Cookie,Session和Application它们的区别。
答:1)Cookie会在客户端硬盘上创建Cookie文件
2)Session大部分情况下会在服务器端硬盘上写入Cookie文件
3)Cookie安全性最低
4)Application表示Servlet上下文环境,在整个WEB应用中只有一个
Application对象,用于存储些全局性的数据
86。请简述一下ajax的原理及实现步骤。
答:原理:HTTP协议的异步通信
get请求
1)创建一个XMLHttpRequest对象
2)调用该对象的open方法
3)如果是get请求,设置回调函数onreadystatechange=callback
4)Send
如果是post请求
5)创建一个XMLHttpRequest对象
6)调用该对象的open方法
7)调用setRequestHeader(“Content-Type”,
“application/x-www-form-urlencoded”);
8)设置回调函数onreadystatechange=callback
9)Send
87.两个int型的整数,不经过第3方变量进行替换?
如a=10b=5
转换后a=5b=10
答:a=a+b;b=a-b;a=a-b;
88.某字段有10条重复记录请把对应表中的记录查询出来?
表名appeal_base_info
字段appeal_type(int)
答:SELECT*formappeal_base_infowhereappeal_typein(select
appeal_typefromappeal_base_infogroupbyappeal_typehaving
count(appeal_type)=10)
ent和preparedstatement区别
答:statement对象作为最基本的数据操作对象,可以应用于几乎所有的数据库,
但是由于运行时使用的是字符串连接技术,所以存在安全隐患。
preparedstatement:叫做预编译的对象,在语句执行之前,向数据库发送类似
于公式一样的模板,其中使用了替换变量,从而提高了数据存储的安全性,但这
个数据操作对象不是效率最高的。可以应用于绝大多数数据库。
四大对象共享范围
答:a、page当前页面。
b、session在当前用户的会话范围内有效。
c、request从上一页到下一个页面。
d、application在整个服务器运行期间,在服务器内有效,所有的访问者都可
以使用到application范围内的对象。
91.假设现在有表1,表中有三个字段:id(数值型)、name(字符型)、age
(数值型)写出SQL语句完成如下功能:在表中查出年龄大于20,且名字以“王”开头并
在名字当中含有%的记录,并且按照年龄的倒叙排列出来(年龄大的在前面)。
答:
Select*1whereage>20andnamelike‘王%#%%’escape
‘#’orderbyageDESC;
和div开发的优缺点?
答:优点:1)div+css,这个布局中,div承载的是内容,而css承载的是样式。
内容和样式的分离。
2)搜索引擎亲和力(快速找到需要的数据,而不是像在table中一层层的查找)
重构页面的方便性(换皮肤如blog)
缺点:开发效率低
引入的方式有哪些?
答:内联内嵌外链导入
和html有什么区别
答:HTML是一种基本的WEB网页设计语言,XHTML是一个基于XML的置标语言
最主要的不同:
XHTML元素必须被正确地嵌套。
XHTML元素必须被关闭。
标签名必须用小写字母。
XHTML文档必须拥有根元素。
选择符有哪些?
答:标签选择符类选择符id选择符
96.添加删除替换插入到某个接点的方法
答:Chidl()
etBefore
eChild
Child
97.什么是json
答:JSON:(javaScriptObjectNotation)是一种轻量级的数据交换格式。
JSON两种结构:
名称/值对的集合,不同的语言中,它被理解为对象,记录,结构,字典,哈希
表,有键列表,关联数组。
值的有序列表,数组
中内联接,外联接区别?
答:内连接是保证两个表中所有的行都要满足连接条件,而外连接则不然。
在外连接中,某些不满条件的列也会显示出来,也就是说,只限制其中一个表的
行,而不限制另一个表的行。分左连接、右连接、全连接三种
99.你如何评价Android系统?优缺点
答:优势:
一、开放性三、丰富的硬件选择五、无缝结合的Google应用支持
缺点:一、安全和隐私
二,开发商自定义,不够统一四、同类机型用户减少
是什么:
答:NDK是一系列工具的集合
NDK提供了一系列的工具,帮助开发者迅速的开发C/C++的动态库,并能自
动将so和java应用打成apk包
NDK集成了交叉编译器,并提供了相应的mk文件和隔离cpu,平台等的差异,
开发人员只需简单的修改mk文件就可以创建出so