Java面试之――代码与编程题

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Java面试之——代码与编程题135、写一个Singleton出来Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。一般Singleton模式通常有几种种形式:第一种形式:定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。publicclassSingleton{privateSingleton(){}//在自己内部定义自己一个实例,是不是很奇怪?//注意这是private只供内部调用privatestaticSingletoninstance=newSingleton();//这里提供了一个供外部访问本class的静态方法,可以直接访问publicstaticSingletongetInstance(){returninstance;}}第二种形式:publicclassSingleton{privatestaticSingletoninstance=null;publicstaticsynchronizedSingletongetInstance(){//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次//使用时生成实例,提高了效率!if(instance==null)instance=newSingleton();returninstance;}}其他形式:定义一个类,它的构造函数为private的,所有方法为static的。一般认为第一种形式要更加安全些136、继承时候类的执行顺序问题,一般都是选择题,问你将会打印出什么?答:父类:packagetest;publicclassFatherClass{publicFatherClass(){System.out.println(FatherClassCreate);}}子类:packagetest;importtest.FatherClass;publicclassChildClassextendsFatherClass{publicChildClass(){System.out.println(ChildClassCreate);}publicstaticvoidmain(String[]args){FatherClassfc=newFatherClass();ChildClasscc=newChildClass();}}输出结果:C:\javatest.ChildClassFatherClassCreateFatherClassCreateChildClassCreate137、内部类的实现方式?答:示例代码如下:packagetest;publicclassOuterClass{privateclassInterClass{publicInterClass(){System.out.println(InterClassCreate);}}publicOuterClass(){InterClassic=newInterClass();System.out.println(OuterClassCreate);}publicstaticvoidmain(String[]args){OuterClassoc=newOuterClass();}}输出结果:C:\javatest/OuterClassInterClassCreateOuterClassCreate再一个例题:publicclassOuterClass{privatedoubled1=1.0;//insertcodehere}Youneedtoinsertaninnerclassdeclarationatline3.Whichtwoinnerclassdeclarationsarevalid?(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、E138、Java的通信编程,编程题(或问答),用JAVASOCKET编程,读服务器几个字符,再写入本地显示?答:Server端程序:packagetest;importjava.net.*;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(newInputStreamReader(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.*;importjava.net.*;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(newInputStreamReader(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();}};139、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?如在COLLECTION框架中,实现比较要实现什么样的接口?答:用插入法进行排序代码如下packagetest;importjava.util.*;classInsertSort{ArrayListal;publicInsertSort(intnum,intmod){al=newArrayList(num);Randomrand=newRandom();System.out.println(TheArrayListSortBefore:);for(inti=0;inum;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;ial.size();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;jMaxSize;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;ial.size();i++){System.out.println(al[+i+]=+al.get(i));}}publicstaticvoidmain(String[]args){InsertSortis=newInsertSort(10,100);is.SortIt();}}140、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如“我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()/SplitByte+1);System.out.println(WillSplitinto+loopCount);

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功