java程序员面试宝典2Word格式.docx
《java程序员面试宝典2Word格式.docx》由会员分享,可在线阅读,更多相关《java程序员面试宝典2Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
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<
numPages*(currentPage-1))&
&
rs.next()){i++;
}%>
//输出内容//输出翻页连接合计:
%=currentPage%>
/<
%=intPageCount%>
ahref="
List.jsp?
page=1"
>
第一页<
/a>
page=<
%=upPage%>
"
上一页<
<
%for(intj=1;
j<
=intPageCount;
j++){if(currentPage!
=j){
%>
list.jsp?
%=j%>
[<
]<
%}else{out.println(j);
}}%>
%=nextPage%>
下一页<
最后页<
49、列出某文件夹下的所有文件;
50、调用系统命令实现删除文件的操作;
51、实现从文件中一次读出一个字符的操作;
52、列出一些控制流程的方法;
54、编写了一个服务器端的程序实现在客户端输入字符然后在控制台上显示,直到输入"
END"
为止,让你写出客户端的程序;
55、作用域public,private,protected,以及不写时的区别答:
区别如下:
作用域当前类同一package子孙类其他packagepublic√√√√protected√√√
friendly√√
private√
不写时默认为friendly
56、ArrayList和Vector的区别,HashMap和Hashtable的区别
答:
就ArrayList与Vector主要从二方面来说.一.同步性:
Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:
当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半
就HashMap与HashTable主要从三方面来说。
一.历史原因:
Hashtable是基于陈旧的Dictionary类的,HashMap是Java1.2引进的Map接口的一个实现二.同步性:
Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:
只有HashMap可以让你将空值作为一个表的条目的key或value
57、char型变量中能不能存贮一个中文汉字?
为什么?
是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的
58、多线程有几种实现方法,都是什么?
同步有几种实现方法,都是什么?
答:
多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notify
60、float型floatf=3.4是否正确?
不正确。
精度不准确,应该用强制类型转换,如下所示:
floatf=(float)3.4
61、介绍JAVA中的CollectionFrameWork(包括如何写自己的数据结构)?
CollectionFrameWork如下:
Collection├List│├LinkedList│├ArrayList│└Vector│ └Stack
└SetMap├Hashtable├HashMap└WeakHashMapCollection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)Map提供key到value的映射
6、用JAVA实现一种排序,JAVA类实现序列化的方法(二种)?
如在COLLECTION框架中,实现比较要实现什么样的接口?
答:
用插入法进行排序代码如下packagetest;
importjava.util.*;
classInsertSort{ArrayListal;
publicInsertSort(intnum,intmod){al=newArrayList(num);
Randomrand=newRandom();
System.out.println("
TheArrayListSortBefore:
);
for(inti=0;
i<
num;
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;
al.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;
MaxSize;
j++){if(((Integer)al.get(j)).intValue()>
=tempInt.intValue()){al.add(j,tempInt);
break;
}}}}System.out.println("
TheArrayListSortAfter:
for(inti=0;
i++){System.out.println("
}}publicstaticvoidmain(String[]args)
{InsertSortis=newInsertSort(10,100);
is.SortIt();
}}JAVA类实现序例化的方法是实现java.io.Serializable接口Collection框架中实现比较要实现Comparable接口和Comparator接口
7、编程:
编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。
但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我ABC+汉的半个”。
代码如下:
packagetest;
classSplitString{StringSplitStr;
intSplitByte;
publicSplitString(Stringstr,intbytes){SplitStr=str;
SplitByte=bytes;
TheStringis:
′"
+SplitStr+"
′;
SplitBytes="
+SplitByte);
}publicvoidSplitIt(){intloopCount;
loopCount=(SplitStr.length()%SplitByte==0)?
(SplitStr.length()/SplitByte):
(SplitStr.length()/SplitByte+1);
WillSplitinto"
+loopCount);
for(inti=1;
=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();
}}
3、JAVASERVLETAPI中forward()与redirect()的区别?
前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。
这样,从浏览器的地址栏中可以看到跳转后的链接地址。
所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。
在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
4、Servlet的基本架构publicclassServletNameextendsHttpServlet{publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{}}
1、可能会让你写一段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);
}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();
}}}
2、Class.forName的作用?
为什么要用?
调用该访问返回一个以字符串指定类名的类的对象。
2、你在项目中用到了xml技术的哪些方面?
如何实现的?
用到了数据存贮,信息配置两方面。
在做数据交换平台时,将不能数据源的数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接收者,接收解密与解压缩后再同XML文件中还原相关信息进行处理。
在做软件配置时,利用XML可以很方便的进行,软件的各种配置参数都存贮在XML文件中。
3、用jdom解析xml文件时如何解决中文问题?
如何解析?
看如下代码,用编码方式加以解决
packagetest;
importjava.io.*;
publicclassDOMTest{privateStringinFile="
c:
\people.xml"
privateStringoutFile="
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());
4、编程用JAVA解析XML的方式.答:
用SAX方式解析XML,XML文件如下:
?
xmlversion="
1.0"
encoding="
person>
name>
王小明<
/name>
college>
信息学院<
/college>
telephone>
6258113<
/telephone>
notes>
男,1955年生,博士,95年调入海南大学<
/notes>
/person>
事件回调类SAXHandler.javaimportjava.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:
HTML>
HEAD>
TITLE>
剖析XML文件people.xml<
/TITLE>
/HEAD>
BODY>
%@pageerrorPage="
ErrPage.jsp"
contentType="
text/html;
charset=GB2312"
%>
%@pageimport="
java.io.*"
java.util.Hashtable"
org.w3c.dom.*"
org.xml.sax.*"
javax.xml.parsers.SAXParserFactory"
javax.xml.parsers.SAXParser"
SAXHandler"
%Filefile=newFile("
FileReaderreader=newFileReader(file);
Parserparser;
SAXParserFactoryspf=SAXParserFactory.newInstance();
SAXParsersp=spf.newSAXParser();
SAXHandlerhandler=newSAXHandler();
sp.parse(newInputSource(reader),handler);
HashtablehashTable=handler.getTable();
out.println("
TABLEBORDER=2>
CAPTION>
教师信息表<
/CAPTION>
TR>
TD>
姓名<
/TD>
+"
+(String)hashTable.get(newString("
))+"
/TR>
学院<
college"
))+"