面试题.docx

上传人:b****8 文档编号:10222603 上传时间:2023-02-09 格式:DOCX 页数:36 大小:24.90KB
下载 相关 举报
面试题.docx_第1页
第1页 / 共36页
面试题.docx_第2页
第2页 / 共36页
面试题.docx_第3页
第3页 / 共36页
面试题.docx_第4页
第4页 / 共36页
面试题.docx_第5页
第5页 / 共36页
点击查看更多>>
下载资源
资源描述

面试题.docx

《面试题.docx》由会员分享,可在线阅读,更多相关《面试题.docx(36页珍藏版)》请在冰豆网上搜索。

面试题.docx

面试题

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.ChildClass

FatherClassCreate

FatherClassCreate

ChildClassCreate

137、内部类的实现方式?

答:

示例代码如下:

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

138、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();

}

};

139、用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();

}

}

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()/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();

}

}

141、JAVA多线程编程。

用JAVA写一个多线程程序,如写四个线程,二个加1,二个对一个变量减一,输出。

希望大家补上,谢谢

142、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询.

答:

程序如下:

packagehello.ant;

importjava.sql.*;

publicclassjdbc

{

StringdbUrl="jdbc:

oracle:

thin:

@127.0.0.1:

1521:

orcl";

StringtheUser="admin";

StringthePw="manager";

Connectionc=null;

Statementconn;

ResultSetrs=null;

publicjdbc()

{

try{

Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();

c=DriverManager.getConnection(dbUrl,theUser,thePw);

conn=c.createStatement();

}catch(Exceptione){

e.printStackTrace();

}

}

publicbooleanexecuteUpdate(Stringsql)

{

try

{

conn.executeUpdate(sql);

returntrue;

}

catch(SQLExceptione)

{

e.printStackTrace();

returnfalse;

}

}

publicResultSetexecuteQuery(Stringsql)

{

rs=null;

try

{

rs=conn.executeQuery(sql);

}

catch(SQLExceptione)

{

e.printStackTrace();

}

returnrs;

}

publicvoidclose()

{

try

{

conn.close();

c.close();

}

catch(Exceptione)

{

e.printStackTrace();

}

}

publicstaticvoidmain(String[]args)

{

ResultSetrs;

jdbcconn=newjdbc();

rs=conn.executeQuery("select*fromtest");

try{

while(rs.next())

{

System.out.println(rs.getString("id"));

System.out.println(rs.getString("name"));

}

}catch(Exceptione)

{

e.printStackTrace();

}

}

}

143、ORACLE大数据量下的分页解决方法。

一般用截取ID方法,还有是三层嵌套方法。

答:

一种分页方法

<%

inti=1;

intnumPages=14;

Stringpages=request.getParameter("page");

intcurrentPage=1;

currentPage=(pages==null)?

(1):

{Integer.parseInt(pages)}

sql="selectcount(*)fromtables";

ResultSetrs=DBLink.executeQuery(sql);

while(rs.next())i=rs.getInt

(1);

intintPageCount=1;

intPageCount=(i%numPages==0)?

(i/numPages):

(i/numPages+1);

intnextPage;

intupPage;

nextPage=currentPage+1;

if(nextPage>=intPageCount)nextPage=intPageCount;

upPage=currentPage-1;

if(upPage<=1)upPage=1;

rs.close();

sql="select*fromtables";

rs=DBLink.executeQuery(sql);

i=0;

while((i

%>

//输出内容

//输出翻页连接

合计:

<%=currentPage%>/<%=intPageCount%>

page=1">第一页

href="List.jsp?

page=<%=upPage%>">上一页

<%

for(intj=1;j<=intPageCount;j++){

if(currentPage!

=j){

%>

page=<%=j%>">[<%=j%>]

<%

}else{

out.println(j);

}

}

%>

page=<%=nextPage%>">下一页

page=<%=intPageCount%>">最后页

144、用jdom解析xml文件时如何解决中文问题?

如何解析?

答:

看如下代码,用编码方式加以解决

packagetest;

importjava.io.*;

publicclassDOMTest

{

privateStringinFile="c:

\\people.xml";

privateStringoutFile="c:

\\people.xml";

publicstaticvoidmain(Stringargs[])

{

newDOMTest();

}

publicDOMTest()

{

try

{

javax.xml.parsers.DocumentBuilderbuilder=

javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();

org.w3c.dom.Documentdoc=builder.newDocument();

org.w3c.dom.Elementroot=doc.createElement("老师");

org.w3c.dom.Elementwang=doc.createElement("王");

org.w3c.dom.Elementliu=doc.createElement("刘");

wang.appendChild(doc.createTextNode("我是王老师"));

root.appendChild(wang);

doc.appendChild(root);

javax.xml.transform.Transformertransformer=

javax.xml.transform.TransformerFactory.newInstance().newTransformer();

transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING,"gb2312");

transformer.se

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

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1