应聘Android开发工程师.docx
《应聘Android开发工程师.docx》由会员分享,可在线阅读,更多相关《应聘Android开发工程师.docx(18页珍藏版)》请在冰豆网上搜索。
应聘Android开发工程师
应聘Android开发工程师
问题:
应聘Android开发工程师-Java笔试部分回答:
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=yy;
System.out.println(++a+b++);
A:
3B:
4C:
5D:
6
【】4:
选择下列程序运行的结果
inttotal=0;
for(inti=0,j=5;total3;++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:
4B:
5C:
7D:
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->:
11->:
21->:
21->:
2
2->:
52->:
52->:
22->:
5
3->:
42->:
53->:
43->:
4
【】9:
下面方法不可以共存的是:
()
已知:
classA
publicA()
publicvoidA()
publicvoidA(intx)
classBextendsA
//填入一个方法
A:
publicvoidA()
B:
publicvoidA(intx,inty)
C:
publicintA(intx,chary)
returnx+y;
D:
publicStringA(intx)
returnhello+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,falseB.false,trueC.true,trueD.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
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:
11551111
55663333
664444
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.65B.65#C.A#D.A
【】15:
假设以数组A[n]存放循环队列的元素,其头、尾指针分别为head和end。
若设定尾指针指向队列中的队尾元素,头指针指向队列中队头元素的前一个位置,则当前存于队列中的元素个数为
A:
(end-head-1)%nB:
(end-head)%n
C:
(head-end+1)%nD:
(end-head+n)%n
【】16:
对线性链表和线性表分析错误的是()
A:
线性链表分为单链表、双向链表和循环链表
B:
线性链表是一种物理存储单元上连续但非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接来实现的
C:
线性表插入或删除的运算效率很低。
在顺序存储的线性表中,插入或删除数据元素时需要移动大量的数据元素
D:
线性表的顺序存储结构不便于对存储空间的动态分配
【】17:
以下属于java.util包中集合类具体实现类的是
A:
MapB:
CollectionC:
TreeMapD:
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;i
if(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()||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()||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分】
interfaceAintx=0;classBintx=1;classCextendsBimplementsApublicvoidpX()System.out.println(x);publicstaticvoidmain(String[]args)newC().pX();
请问哪一行有错为什么【3分】
答:
abstractclassAnimalpublicvoidsaySomething()System.out.println(你想说什么就说吧!
);classDogextendsAnimalpublicvoidsaySomething()System.out.println(我现在有了第二职业:
捉耗);publicclassTestpublicstaticvoidmain(String[]args)Animalani=newDog();ani.saySomething();请问哪一行有错为什么【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);
publicvoiddeal()
System.out.println(44);
publicclassBextendsA
static
System.out.println(55);
System.out.println(66);
publicB()
System.out.println(77);
publicvoiddeal()
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;
publicvoidprint(intid,Stringname)
Useruser=newUser(id,name);
System.out.println(user.getId()++user.getName());
publicstaticvoidmain(String[]args)
//手写补充代码
要求:
先对User进行创建实例化学号为:
1001姓名为:
张三之后进行修改学号为:
1002姓名为:
李四调用Person类的打印输出方法显示修改后的结果。
【3分】
答:
列举几个你常去的IT技术型的网站,类型不限,个数不限,写中文名亦可,并解释为什么值得你去【3分】
答:
四:
编程算法题,将代码下在每道题的下面[共5道题,第一,二题为5分,第三题为6分,第四题为8分,第五题为10分,总计34分]
1:
请用递归算法写一个方法求出两个数字的最大公约数和最小公倍数【5分】
【安徽科大讯飞2012届武汉大学校园招聘试题】
2:
请将一个链表反序【5分】
【华为2011届华中科技大学校园招聘试题】
3:
现在有一个有趣的游戏:
称为杀人游戏!
游戏规则是:
输入参加的总人数,在输入一个基数,然后每个人依次报数,
当前选手报的数能被基数整除的话,就判为死亡出局,剩下的再继续数数,当数到最后一个时候,再接着从1开始从头数数。
。
。
一直到活下的人小于基数为止,整个游戏结束,打印最后存活选手的编号;【6分】
例子:
总数:
6基数2
MMMMMM
123456
MXMXMX
123456
MMM
123
MXM
12
MX
1
存活的人数是:
1
存活的编号是:
1
【微软,中兴的笔试题,要求不限制语言编写实现】
4:
比较两个字符串,要求从字符串的最后一个元素开始逐个向前比较,如果两个字符串的长度不等,则只比较短长度字符串的元素。
请编程实现下面给出的比较方法,并返回比较中发现的不相等元素的个数。
【8分】
publicintgetDiffNum(intlen1,Stringstr1,intlen2,Stringstr2)
例如:
len1=3str1=acdlen2=5str2=zhacd函数返回为0
len1=3str1=acdlen2=6str2=zhacdv函数返回为3
【华为2012届南京大学校园招聘试题】
5:
任何一个自然数m的立方均可写成m个连续奇数之和。
【10分】
例如:
1_=1
2_=3+5
3_=7+9+11
4_=13+15+17+19
请编程实现:
输入一自然数n,求组成n_的n个连续奇数,格式必须按照上面进行输出。
【浙江大学研究院2011年笔试题目】