✅ 操作成功!

安卓面试题

发布时间:2023-06-11 作者:admin 来源:文学

安卓面试题

安卓面试题

-

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

👁️ 阅读量:0