JAVA面试题集编程篇.docx
- 文档编号:18490434
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:26
- 大小:22.52KB
JAVA面试题集编程篇.docx
《JAVA面试题集编程篇.docx》由会员分享,可在线阅读,更多相关《JAVA面试题集编程篇.docx(26页珍藏版)》请在冰点文库上搜索。
JAVA面试题集编程篇
JAVA面试题集(编程篇)整理byrensn2006-6-31
1、写一个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的。
一般认为第一种形式要更加安全些
2、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
JAVA面试题集(编程篇)整理byrensn2006-6-32
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();
JAVA面试题集(编程篇)整理byrensn2006-6-33
}
}
3、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?
如在COLLECTION框架中,实现比较要实现什么样的接口?
答:
用插入法进行排序代码如下
packagetest;
importjava.util.*;
classInsertSort{
ArrayListal;
publicInsertSort(intnum,intmod){
al=newArrayList(num);
Randomrand=newRandom();
System.out.println("TheArrayL{
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面试题集(编程篇)整理byrensn2006-6-34 JAVA类实现序例化的方法是实现java.io.Serializable接口 Collection框架中实现比较要实现Comparable接口和Comparator接口 4、编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个, 如“我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); 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(); } } 5、Servlet的基本架构? publicclassServletNameextendsHttpServlet{ publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ //somestatements } publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse) throwsServletException,IOException{ //somestatements } } 6、可能会让你写一段Jdbc连Oracle的程序,并实现数据查询. 答: 程序如下: packagehello.ant; JAVA面试题集(编程篇)整理byrensn2006-6-35 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) { JAVA面试题集(编程篇)整理byrensn2006-6-36 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(); } } } 7、在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 i++; } %> //输出内容 //输出翻页连接 合计: <%=currentPage%>/<%=intPageCount%> page=1">第一页 JAVA面试题集(编程篇)整理byrensn2006-6-3 7 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%>">最后页 8、用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.setOutputProperty(javax.xml.transform.OutputKeys.INDENT,"yes"); transformer.transform(newjavax.xml.transform.dom.DOMSource(doc), newjavax.xml.transform.stream.StreamResult(outFile)); }catch(Exceptione){ System.out.println(e.getMessage()); } } } JAVA面试题集(编程篇)整理byrensn2006-6-38 9、编程用JAVA解析XML的方式. 答: 用SAX方式解析XML,XML文件如下: xmlversion="1.0"encoding="gb2312"? > 事件回调类SAXHandler.java importjava.io.*; importjava.util.Hashtable; importorg.xml.sax.*; publicclassSAXHandlerextendsHandlerBase{ privateHashtabletable=newHashtable(); privateStringcurrentElement=null; privateStringcurrentValue=null; publicvoidsetTable(Hashtabletable){ this.table=table; } publicHashtablegetTable(){ returntable; } publicvoidstartElement(Stringtag,AttributeListattrs)throwsSAXException{ currentElement=tag; } publicvoidcharacters(char[]ch,intstart,intlength)throwsSAXException{ currentValue=newString(ch,start,length); } publicvoidendElement(Stringname)throwsSAXException{ if(currentElement.equals(name)) table.put(currentElement,currentValue); } } JSP内容显示源码,SaxXml.jsp: <%@pageerrorPage="ErrPage.jsp"contentType="text/html;charset=GB2312"%> <%@pageimport="java.io.*"%> <%@pageimport="java.util.Hashtable"%> <%@pageimport="org.w3c.dom.*"%> <%@pageimport="org.xml.sax.*"%> <%@pageimport="javax.xml.parsers
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 试题 编程