Java面试题目.docx

上传人:b****0 文档编号:10064106 上传时间:2023-05-23 格式:DOCX 页数:106 大小:82.44KB
下载 相关 举报
Java面试题目.docx_第1页
第1页 / 共106页
Java面试题目.docx_第2页
第2页 / 共106页
Java面试题目.docx_第3页
第3页 / 共106页
Java面试题目.docx_第4页
第4页 / 共106页
Java面试题目.docx_第5页
第5页 / 共106页
Java面试题目.docx_第6页
第6页 / 共106页
Java面试题目.docx_第7页
第7页 / 共106页
Java面试题目.docx_第8页
第8页 / 共106页
Java面试题目.docx_第9页
第9页 / 共106页
Java面试题目.docx_第10页
第10页 / 共106页
Java面试题目.docx_第11页
第11页 / 共106页
Java面试题目.docx_第12页
第12页 / 共106页
Java面试题目.docx_第13页
第13页 / 共106页
Java面试题目.docx_第14页
第14页 / 共106页
Java面试题目.docx_第15页
第15页 / 共106页
Java面试题目.docx_第16页
第16页 / 共106页
Java面试题目.docx_第17页
第17页 / 共106页
Java面试题目.docx_第18页
第18页 / 共106页
Java面试题目.docx_第19页
第19页 / 共106页
Java面试题目.docx_第20页
第20页 / 共106页
亲,该文档总共106页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Java面试题目.docx

《Java面试题目.docx》由会员分享,可在线阅读,更多相关《Java面试题目.docx(106页珍藏版)》请在冰点文库上搜索。

Java面试题目.docx

Java面试题目

101,内部类的实现方式?

答:

示例代码如下:

packagetest;

publicclassOuterClass

{

privateclassInterClass

{

publicInterClass()

{

System.out.println("InterClassCreate");

}

}

publicOuterClass()

{

InterClassic=newInterClass();

System.out.println("OuterClassCreate");

}

publicstaticvoidmain(String[]args)

{

OuterClassoc=newOuterClass();

}

}

输出结果:

C:

>javatest/OuterClass

InterClassCreate

OuterClassCreate

再一个例题:

publicclassOuterClass{

privatedoubled1=1.0;

//insertcodehere

}

Youneedtoinsertaninnerclassdeclarationatline3.Whichtwoinnerclassdeclarationsare

valid?

(Choosetwo.)

A.classInnerOne{

publicstaticdoublemethoda(){returnd1;}

}

B.publicclassInnerOne{

staticdoublemethoda(){returnd1;}

}

C.privateclassInnerOne{

doublemethoda(){returnd1;}

}

D.staticclassInnerOne{

protecteddoublemethoda(){returnd1;}

}

E.abstractclassInnerOne{

publicabstractdoublemethoda();

}

说明如下:

一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员。

故A、B错

二.静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;returnd1出错。

故D错

三.非静态内部类的非静态成员可以访问外部类的非静态变量。

故C正确

四.答案为C、E。

102,Java的通信编程,编程题(或问答),用JAVASOCKET编程,读服务器几个字符,再写入本地显示?

答:

Server端程序:

packagetest;

import.*;

importjava.io.*;

publicclassServer

{

privateServerSocketss;

privateSocketsocket;

privateBufferedReaderin;

privatePrintWriterout;

publicServer()

{

try

{

ss=newServerSocket(10000);

while(true)

{

socket=ss.accept();

StringRemoteIP=socket.getInetAddress().getHostAddress();

StringRemotePort=":

"+socket.getLocalPort();

System.out.println("Aclientcomein!

IP:

"+RemoteIP+RemotePort);

in=newBufferedReader(new

InputStreamReader(socket.getInputStream()));

Stringline=in.readLine();

System.out.println("Cleintsendis:

"+line);

out=newPrintWriter(socket.getOutputStream(),true);

out.println("YourMessageReceived!

");

out.close();

in.close();

socket.close();

}

}catch(IOExceptione)

{

out.println("wrong");

}

}

publicstaticvoidmain(String[]args)

{

newServer();

}

};

Client端程序:

packagetest;

importjava.io.*;

import.*;

publicclassClient

{

Socketsocket;

BufferedReaderin;

PrintWriterout;

publicClient()

{

try

{

System.out.println("TrytoConnectto127.0.0.1:

10000");

socket=newSocket("127.0.0.1",10000);

System.out.println("TheServerConnected!

");

System.out.println("PleaseentersomeCharacter:

");

BufferedReaderline=newBufferedReader(new

InputStreamReader(System.in));

out=newPrintWriter(socket.getOutputStream(),true);

out.println(line.readLine());

in=newBufferedReader(newInputStreamReader(socket.getInputStream()));

System.out.println(in.readLine());

out.close();

in.close();

socket.close();

}catch(IOExceptione)

{

out.println("Wrong");

}

}

publicstaticvoidmain(String[]args)

{

newClient();

}

};

103,用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?

如在COLLECTION框架中,实现比较要实现什么样的接口?

答:

用插入法进行排序代码如下

packagetest;

importjava.util.*;

classInsertSort

{

ArrayListal;

publicInsertSort(intnum,intmod)

{

al=newArrayList(num);

Randomrand=newRandom();

System.out.println("TheArrayListSortBefore:

");

for(inti=0;i

{

al.add(newInteger(Math.abs(rand.nextInt())%mod+1));

System.out.println("al["+i+"]="+al.get(i));

}

}

publicvoidSortIt()

{

IntegertempInt;

intMaxSize=1;

for(inti=1;i

{

tempInt=(Integer)al.remove(i);

if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())

{

al.add(MaxSize,tempInt);

MaxSize++;

System.out.println(al.toString());

}else{

for(intj=0;j

{

if

(((Integer)al.get(j)).intValue()>=tempInt.intValue())

{

al.add(j,tempInt);

MaxSize++;

System.out.println(al.toString());

break;

}

}

}

}

System.out.println("TheArrayListSortAfter:

");

for(inti=0;i

{

System.out.println("al["+i+"]="+al.get(i));

}

}

publicstaticvoidmain(String[]args)

{

InsertSortis=newInsertSort(10,100);

is.SortIt();

}

}

JAVA类实现序例化的方法是实现java.io.Serializable接口

Collection框架中实现比较要实现Comparable接口和Comparator接口。

104,编程:

编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。

但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。

答:

代码如下:

packagetest;

classSplitString

{

StringSplitStr;

intSplitByte;

publicSplitString(Stringstr,intbytes)

{

SplitStr=str;

SplitByte=bytes;

System.out.println("TheStringis:

′"+SplitStr+"′;SplitBytes="+SplitByte);

}

publicvoidSplitIt()

{

intloopCount;

loopCount=(SplitStr.length()%SplitByte==0)?

(SplitStr.length()/SplitByte):

(SplitStr.length()/Split

Byte+1);

System.out.println("WillSplitinto"+loopCount);

for(inti=1;i<=loopCount;i++)

{

if(i==loopCount){

System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));

}else{

System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));

}

}

}

publicstaticvoidmain(String[]args)

{

SplitStringss=newSplitString("test中dd文dsaf中男大3443n中国43中国人

0ewldfls=103",4);

ss.SplitIt();

}

}

105,STRING与STRINGBUFFER的区别。

答:

STRING的长度是不可变的,STRINGBUFFER的长度是可变的。

如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer的toString()方法

JAVA代码查错

106,abstractclassName{privateStringname;publicabstractbooleanisStupidName(Stringname){}}大侠们,这有何错误?

答案:

错。

abstractmethod必须以分号结尾,且不带花括号。

107,publicclassSomething{voiddoSomething(){privateStrings="";intl=s.length();}}有错吗?

答案:

错。

局部变量前不能放置任何访问修饰符(private,public,和protected)。

final可以用来修饰局部变量(final如同abstract和strictfp,都是非访问修饰符,strictfp只能修饰class和method而非variable)。

108,abstractclassSomething{privateabstractStringdoSomething();}这好像没什么错吧?

答案:

错。

abstract的methods不能以private修饰。

abstract的methods就是让子类implement(实现)具体细节的,怎么可以用private把abstractmethod封锁起来呢?

(同理,abstractmethod前不能加final)。

109,publicclassSomething{publicintaddOne(finalintx){return++x;}}这个比较明显。

答案:

错。

intx被修饰成final,意味着x不能在addOnemethod中被修改。

110,publicclassSomething{publicstaticvoidmain(String[]args){Othero=newOther();newSomething().addOne(o);} publicvoidaddOne(finalOthero){ o.i++;}} classOther{publicinti;}和上面的很相似,都是关于final的问题,这有错吗?

答案:

正确。

在addOnemethod中,参数o被修饰成final。

如果在addOnemethod里我们修改了o的reference,(比如:

o=newOther();),那么如同上例这题也是错的。

但这里修改的是o的membervairable(成员变量),而o的reference并没有改变。

111,classSomething{inti;publicvoiddoSomething(){ System.out.println("i="+i);}}有什么错呢?

看不出来啊。

答案:

正确。

输出的是"i=0"。

inti属於instantvariable(实例变量,或叫成员变量)。

instantvariable有defaultvalue。

int的defaultvalue是0。

112,classSomething{finalinti;publicvoiddoSomething(){System.out.println("i="+i);}}和上面一题只有一个地方不同,就是多了一个final。

这难道就错了吗?

答案:

错。

finalinti是个final的instantvariable(实例变量,或叫成员变量)。

final的instantvariable没有defaultvalue,必须在constructor(构造器)结束之前被赋予一个明确的值。

可以修改为"finalinti=0;"。

113,publicclassSomething{publicstaticvoidmain(String[]args){Somethings=newSomething(); System.out.println("s.doSomething()returns"+doSomething()); } publicStringdoSomething(){ return"Dosomething...";}}看上去很完美。

答案:

错。

看上去在main里calldoSomething没有什么问题,毕竟两个methods都在同一个class里。

但仔细看,main是static的。

staticmethod不能直接callnon-staticmethods。

可改成"System.out.println("s.doSomething()returns"+s.doSomething());"。

同理,staticmethod不能访问non-staticinstantvariable。

114,此处,Something类的文件名叫OtherThing.javaclassSomething{privatestaticvoidmain(String[]something_to_do){ System.out.println("Dosomething...");}}这个好像很明显。

答案:

正确。

从来没有人说过Java的Class名字必须和其文件名相同。

但publicclass的名字必须和文件名相同。

115,interfaceA{intx=0;} classB{intx=1;}classCextendsBimplementsA{publicvoidpX(){System.out.println(x);}publicstaticvoidmain(String[]args){newC().pX();}}

答案:

错误。

在编译时会发生错误(错误描述不同的JVM有不同的信息,意思就是未明确的x调用,两个x都匹配(就象在同时importjava.util和java.sql两个包时直接声明Date一样)。

对于父类的变量,可以用super.x来明确,而接口的属性默认隐含为publicstaticfinal.所以可以通过A.x来明确。

116,interfacePlayable{voidplay();} interfaceBounceable{voidplay();} interfaceRollableextendsPlayable,Bounceable{ Ballball=newBall("PingPang");}classBallimplementsRollable{privateStringname;publicStringgetName(){returnname;}publicBall(Stringname){this.name=name;}publicvoidplay(){ball=newBall("Football");System.out.println(ball.getName());}}这个错误不容易发现。

答案:

错。

"interfaceRollableextendsPlayable,Bounceable"没有问题。

interface可继承多个interfaces,所以这里没错。

问题出在interfaceRollable里的"Ballball=newBall("PingPang");"。

任何在interface里声明的interfacevariable(接口变量,也可称成员变量),默认为publicstaticfinal。

也就是说"Ballball=newBall("PingPang");"实际上是"publicstaticfinalBallball=newBall("PingPang");"。

在Ball类的Play()方法中,"ball=newBall("Football");"改变了ball的reference,而这里的ball来自Rollableinterface,Rollableinterface里的ball是publicstaticfinal的,final的object是不能被改变reference的。

因此编译器将在"ball=newBall("Football");"这里显示有错。

JAVA编程题

117,现在输入n个数字,以逗号,分开;然后可选择升或者降序排序;按提交键就在另一页面显示按什么排序,结果为,提供reset

importjava.util.*;

publicclassbycomma{publicstaticString[]splitStringByComma(Stringsource){if(source==null||source.trim().equals("")) returnnull;StringTokenizercommaToker=newStringTokenizer(source,","); String[]result=newString[commaToker.countTokens()];inti=0; while(commaToker.hasMoreTokens()){ result=c

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2