android笔试题.docx
《android笔试题.docx》由会员分享,可在线阅读,更多相关《android笔试题.docx(25页珍藏版)》请在冰豆网上搜索。
android笔试题
1:
本试卷为高难度试题,大部分摘自华为,中兴,腾讯,XX,阿里巴巴等试题
2:
知识点涵盖Java基础,面向对象,异常,多线程,输入输出流,集合,数据结构与算法
3:
注意本试卷分满分为100分,60分为及格分数线
4:
本试卷分为以下部分:
选择题,简答题,改错与分析题,编程算法题
5:
本试卷时间为100分钟,请抓紧时间做题
一:
选择题【有四个选项,只有一个选项正确,每道题1.5分,共20道,总计30分】
【】1:
下面的表达式错误的是
A:
floatf=(1.9+0.1)/(int)1.0
B:
floatf=1.0F
C:
floatf=(float)1.0F
D:
floatf=(int)(0.73+0.27);
【】2:
设x和y均为int型变量,则以下语句:
x+=y,y=x-y;x-=y;的功能是
A:
把x和y按从大到小排列
B:
把x和y按从小到大排列
C:
无确定结果
D:
交换x和y中的值
【】3:
请写出下面程序运行的结果()
intx=0;
inty=1;
inta=x+++++x;
intb=y–––y;
System.out.println(++a+b++);
A:
3 B:
4 C:
5 D:
6
【】4:
选择下列程序运行的结果
inttotal=0;
for(inti=0,j=5;total<10||j>3;++i,–j){
total+=(i+j);
System.out.println(total);
}
A:
结果为5,因为一个i自加,一个j自减抵消等于没有自加
B:
结果为10,因为正常运算了
C:
有语法错误,不能写多个变量
D:
有语法错误,条件表达式不能写多个
【】5:
请问总共创建了多少个对象?
Stringaa,b,c;
aa=”bb”;
b=”dd”+aa;
c=”cc”+b+aa;
StringBufferd=newStringBuffer(c);
A:
4 B:
5 C:
7 D:
8
【】6:
接口A中有2个方法,接口B中有2个方法,以下正确的是 ( )
A:
若接口C继承A,B两个接口,则C一定继承了四个方法
B:
若类C实现接口A,B,则C中必须至少实现A、B中各一个方法
C:
若类C要继承接口A,B,则必须要定义接口D来继承接口A、B,由类C实现接口D,才能达到目的
D:
若抽象的接口C继承了接口A,B;抽象的D类实现C接口,此时必须要实现累加接口中的所有方法
【】7:
关于类,抽象,接口,继承综合说法错误的是?
A:
类与类之间有关联,继承,聚合的关系;
B:
抽象类可以继承实例类,抽象类可以实现接口,抽象接口可以继承多个接口
C:
抽象类是类和接口的并集与接口继承的补集
D:
在应用开发中,功能类的继承是平行结构,实现功能的接口是树型结构
【】8:
请判断下面程序运行的结果:
publicclassParamTest{
intnum=1;
publicvoidchange(){
num=2;
}
publicvoidchange(intnum){
num=3;
}
publicvoidchange(ParamTestpt){
pt.num=4;
}
publicstaticvoidmain(String[]args){
ParamTestpt=newParamTest();
intnum=5;
pt.change();
System.out.println(“1->:
”+pt.num);
pt.change(num);
System.out.println(“2->:
”+pt.num);
pt.change(pt);
System.out.println(“3->:
”+pt.num);
}
A:
B:
C:
D:
1->:
1 1->:
2 1->:
2 1->:
2
2->:
5 2->:
5 2->:
2 2->:
5
3->:
4 2->:
5 3->:
4 3->:
4
【】9:
下面方法不可以共存的是:
()
已知:
classA{
publicA(){
}
publicvoidA(){
}
publicvoidA(intx){
}
}
classBextendsA{
//填入一个方法
}
A:
publicvoidA(){}
B:
publicvoidA(intx,inty){}
C:
publicintA(intx,chary){
returnx+y;
}
D:
publicStringA(intx){
return“hello”+x;
}
【】10:
已知类Foo的定义如下:
publicclassFoo{
intvalue;
Foo(intvalue){
this.value=value;
}
}
运行下面程序段:
Foo[]a1={newFoo
(1),newFoo
(2),newFoo(3)};
Foo[]a2=newFoo[a1.length];
System.arraycopy(a1,0,a2,0,a1.length);
System.out.println((a1==a2)+“,”+(a1[1]==a2[1]));
控制台输出的结果是()。
A.false,false B.false,true C.true,true D.true,false
【】11:
哪种说话阐明了垃圾收集和终结化机制锁承诺的行为?
()
A对象直到没有任何引用指向自己时才会立即被销毁
B对一个对象调用的finalize()方法永远不会多于一次
C适用于收集的对象会最终由垃圾收集器销毁
D对象一但适用于垃圾收集,就再无法由存活线程访问了
【】12:
下面执行的结果是
staticbooleanloop(charc){
System.out.print(c);
returntrue;
}
publicstaticvoidmain(String[]args){
inti=0;
for(loop(‘A’);loop(‘B’)&&(i<2);loop(‘C’)){
i++;
loop(‘D’);
}
}
A.ABDCBDCB
B.ABCDABCD
C.Compilationfails[编译失败].
D.Anexceptionisthrownatruntime[抛出一个运行例外].
【】13:
下面异常执行的结果是:
try{
intx=0;
floaty=0;
floatz=x/y;
System.out.println(“11″);
try{
inta[]=newint[3];
a[3]=x;
System.out.println(“22″);
return;
}catch(Exceptione){
System.out.println(“33″);
return;
}finally{
System.out.println(“44″);
System.exit(0);
return;
}
}catch(ArithmeticExceptione){
System.out.println(“55″);
return;
}finally{
System.out.println(“66″);
return;
}
A:
B:
C:
D:
11 55 11 11
55 66 33 33
66 44 44
66
【】14:
阅读下面程序段:
bytea[]={‘a’,65,‘#’,‘B’};
byteb[]=newbyte[a.length];
System.arraycopy(a,1,b,1,2);
BufferedOutputStreambos;
bos=newBufferedOutputStream(newFileOutputStream(“C:
\\file.txt”));
bos.write(b,1,2);
bos.flush();
bos.close();
假设file.txt原先不存在,运行该程序段后,文件file.txt的内容为()。
A.65 B.65# C.A# D.A
【】15:
假设以数组A[n]存放循环队列的元素,其头、尾指针分别为head和end。
若设定尾指针指向队列中的队尾元素,头指针指向队列中队头元素的前一个位置,则当前存于队列中的元素个数为
A:
(end-head-1)%n B:
(end-head)%n
C:
(head-end+1)%n D:
(end-head+n)%n
【】16:
对线性链表和线性表分析错误的是()
A:
线性链表分为单链表、双向链表和循环链表
B:
线性链表是一种物理存储单元上连续但非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的
C:
线性表插入或删除的运算效率很低。
在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素
D:
线性表的顺序存储结构不便于对存储空间的动态分配
【】17:
以下属于java.util包中集合类具体实现类的是?
A:
Map B:
Collection C:
TreeMap D:
SortedMap
【】18:
下面对集合不能正确创建实例化是()
A:
List>list=newLinkedList>();
B:
ArrayList>list=newArrayList>();
C:
TreeSet> tree=newTreeSet>();
D:
TreeSet> tree=newTreeSet>();
【】19:
下面可以删除list中所有的“java”的代码是:
ArrayListlist=newArrayList();
list.add(“java”);
list.add(“aaa”);
list.add(“java”);
list.add(“java”);
list.add(“bbb”);
A:
for(inti=list.size()–1;i>=0;i–){
if(“java”.equals(list.get(i))){
list.remove(i);
}
}
B:
for(inti=0;iif(“java”.equals(list.get(i))){
list.remove(i);
}
}
C:
Iteratori=list.iterator();
while(i.hasNext()){
if((i.next().toString()).equals(“java”)){
i.removeAll();
}
}
D:
Iteratori=list.listIterator();
while(i.hasNext()){
if(((String)i.next()).equals(“Java”))
i.remove();
}
}
【】20:
题示代码的功能为:
将两个有序的ArrayList合并为一个有序的ArrayList。
对于两个存放Integer对象的ArrayList,
内容分别为:
list1:
{1,3,4,6,8}和list2:
{2,5,9}
合并后的list3:
{1,2,3,4,5,6,8,9}
……
Listlist3=newArrayList();
intsize=list1.size()+list2.size();
for(inti=0,j=0,k=0;k<填入的代码>
}
System.out.println(list3);
……
完成该功能应该填入的代码是()。
A.
if(j>=list2.size()||i>list1.size():
&&list1.get(i)list3.add(list1.get(i++));
}else{
list3.add(list2.get(j++));
}
B.
if(j>=list2.size()||ilist3.add(list1.get(i++));
}else{
list3.add(list2.get(j++));
}
C.
if(j>=list2.size()||ilist2.get(j)){
list3.add(list1.get(i++));
}else{
list3.add(list2.get(j++));
}
D.
if(j>=list2.size()||ilist3.add(list1.get(i++));
}else{
list3.add(list2.get(j++));
}
二:
简答题【本环节中每道题3分,共5道,总计15分】
1:
String和StringBuffer有什么差别?
在什么情况下使用它们?
【3分】
答:
2:
new一个类对象和使用类名创建一个对象有什么区别?
二者使用时应该注意什么?
【3分】
答:
3:
在异常当中throw和throws有什么区别和联系?
【3分】
答:
4:
LinkList和ArrayList的区别?
如果是在集合的开头插入一个对象,使用哪种效率高些,在集合的末尾插入一个对象,使用哪种效率高些,为什么?
【3分】
5:
介绍JAVA开发中常用的CollectionFrameWork(写出Java集合的框架结构,加上必要的名称注释)?
【3分】
答:
三:
改错与分析题【本环节中每道题3分,共7道,总计21分】
<第一题>
1.interface A{
2. intx=0;
3.}
4.classB{
5. intx=1;
6.}
7.classCextendsBimplementsA{
8. publicvoidpX(){
9. System.out.println(x);
10.}
11.publicstaticvoidmain(String[]args){
12. newC().pX();
13. }
14. }
请问哪一行有错?
为什么?
【3分】
答:
<第二题>
1.abstractclassAnimal{
2.publicvoidsaySomething(){
3. System.out.println(“你想说什么就说吧!
”);
4. }
5.}
6.classDogextendsAnimal{
7.publicvoidsaySomething(){
8. System.out.println(“我现在有了第二职业:
捉耗”);
9. }
10.}
11.publicclassTest{
12. publicstaticvoidmain(String[]args){
13. Animalani=newDog();
14. ani.saySomething();
15. }
16.}
请问哪一行有错?
为什么?
【3分】
答:
<第三题>
publicclassTest{
privatestaticvoidprintArray(int[]arr) {
for(inti=0;i System.out.print(arr[i]+”,”);
System.out.println(”“);
}
privatestaticvoidchangeValue(intvalue){
value*=2;
}
privatestaticvoidchangeValue(int[]arr){
for(inti=0;i arr[i]*=2;
}
publicstaticvoidmain(String[]args){
int[]arr={1,2,3,4,5};
changeValue(arr[0]);
printArray(arr);
changeValue(arr);
printArray(arr);
}
}
请问结果是什么?
并详细解释原因【3分】
答:
<第四题>
publicclassA{
static{
System.out.println(“11″);
}
{
System.out.println(“22″);
}
publicA(){
System.out.println(“33″);
}
public voiddeal(){
System.out.println(“44″);
}
}
publicclassBextendsA{
static{
System.out.println(“55″);
}
{
System.out.println(“66″);
}
publicB(){
System.out.println(“77″);
}
public voiddeal(){
System.out.println(“88″);
}
}
publicclassC{
publicstaticvoidmain(String[]args){
Ab=newB();
b.deal();
}
}
请问结果是什么?
并详细分析原因【3分】
答:
<第五题>
publicclassTest{
publicstaticvoidso(String[]name){
Stringtemp=name[0];
Name[0]=name[1];
Name[1]=temp;
}
publicstaticvoidso(Stringname0,Stringname1){
Stringtemp=name0;
Name0=name1;
Name1=temp;’
}
publicstaticvoidmain(String[]wewe){
String[]name=newString[]{“mike”,”Lily”};
Stringname0=“mike”;
Stringname1=”Lily“;
So(name);
System.out.println(name[0]+”,”+name[1]);
So(name0,name1);
System.out.println(name0+”,”+name1);
}
请输出结果?
并详细解释为什么?
【3分】
答:
<第六题>
publicclassPerson{
staticclassUser{
intid;
Stringname;
publicUser(intid,Stringname){
this.id=id;
this.name=name;
}
publicintgetId(){
returnthis.id;
}
publicStringgetName(){
returnthis.name;
}
classStudent{
publicvoidsetid(intnewId){
id=newId;
}
publicvoidsetName(StringnewName){
name=newName;
}
}
}
publicv