Java面试资料(震撼推荐)

<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

JSP方面
1、
forwardredirect的区别
答:forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。
2、
jsp有哪些内置对象?作用分别是什么?
答:JSP共有以下9种基本内置组件(可与ASP6种内部组件相对应):
 request 对象表示一个HTTP请求

response
对象存储处理结果返回给用户的响应。
out 对象用于将内容写入JSP页面实例的输出流中
pageContext 对象描述某个JSP文档的运行环境,此外,它还实现将控制权从当前页面传输至其他页面的方法

session
对象在用户访问一个Web站点的多个页面时共享信息

application 对象存储运行文档的环境的有关信息

config 对象将Servlet配置数据以Servlet的初始化参数形式存储

page 对象表示JSP
网页本身
,更是Servlet类的实例,可以调用由Servlet类定义的任何方法
exception
针对错误网页,未捕捉的例外
,只适用于JSP错误页面
3、
jsp有哪些动作?作用分别是什么?
:JSP共有以下7种基本动作
jsp:include
:在页面被请求的时候引入一个文件。
jsp:useBean
它用来实例化JavaBean,或者定位一个已经存在的Bean实例,并且把它赋给一个变量名(或者id)。并给定一个具体的范围来确定对象的生命周期。

jsp:setProperty
:设置JavaBean的属性。

jsp:getProperty
:输出某个JavaBean的属性。

jsp:forward
:把请求转到一个新的页面。

jsp:plugin
:根据浏览器类型为Java插件生成OBJECTEMBED
标记
jsp:param:
为其他标签提供附加信息。
4、
JSP中动态INCLUDE与静态INCLUDE的区别?
答:动态INCLUDEjsp:include动作实现
<jsp:include page="included.jsp" flush="true" />
它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
静态INCLUDEinclude伪码实现,定不会检查所含文件的变化,适用于包含静态页面
<%@ include file="included.htm" %>
5、
两种跳转方式分别是什么?有什么区别?
答:有两种,分别为:
<jsp:include page="included.jsp" flush="true">
<jsp:forward page= "nextpage.jsp"/>
前者页面不会转向include所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。相当于go to 语句。


代码和编程
1、写一个Singleton出来
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。
一般Singleton模式通常有几种种形式:
第一种形式: 定义一个类,它的构造函数为private的,它有一个static的private的该类变量,在类初始化时实例话,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。


第二种形式:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> public class Singleton {
  private static Singleton instance = null;
  public static synchronized Singleton getInstance() {
  
//这个方法比上面有所改进,不用每次都进行生成对象,只是第一次     
  //使用时生成实例,提高了效率!

  if (instance==null)
    instance=new Singleton();
return instance;   }
}

其他形式:
定义一个类,它的构造函数为private的,所有方法为static的。
一般认为第一种形式要更加安全些

2、Java 的通信编程,编程题(或问答),用JAVA SOCKET编程,读服务器几个字符,再写入本地显示?
答:Server端程序:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> package test;
importjava.net.*
;
importjava.io.*
;

publicclass
Server
{
private
ServerSocketss;
private
Socketsocket;
private
BufferedReaderin;
private
PrintWriterout;
public
Server()
{
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"
);
}
}
publicstaticvoid
main(String[]args)
{
new
Server();
}
};

 

Client端程序:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->package test;

import java.io.*;

import java.net.*;

 

public class Client

{

Socket socket;

BufferedReader in;

PrintWriter out;

public Client()

{

try

{

System.out.println("Try to Connect to 127.0.0.1:10000");

socket = new Socket("127.0.0.1",10000);

System.out.println("The Server Connected!");

System.out.println("Please enter some Character:");

BufferedReader line = new BufferedReader(new

 

InputStreamReader(System.in));

out = new PrintWriter(socket.getOutputStream(),true);

out.println(line.readLine());

in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

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

out.close();

in.close();

socket.close();

}catch(IOException e)

{

out.println("Wrong");

}

}

public static void main(String[] args)

{

new Client();

}

};

 

 

3、JAVA实现一种排序,JAVA类实现序列化的方法(二种) 如在COLLECTION框架中,实现比较要实现什么样的接口?

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

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->packagetest;
importjava.util.*
;
class
InsertSort
{
ArrayListal;
publicInsertSort(intnum,int
mod)
{
al
=new
ArrayList(num);
Randomrand
=new
Random();
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));
}
}
publicvoid
SortIt()
{
IntegertempInt;
intMaxSize=1
;
for(inti=1;i<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;j<MaxSize;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<al.size();i++
)
{
System.out.println(
"al["+i+"]="+
al.get(i));
}
}
publicstaticvoid
main(String[]args)
{
InsertSortis
=newInsertSort(10,100
);
is.SortIt();
}
}

 

 

4、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如ABC”4,应该截为AB”,输入ABCDEF”6,应该输出为ABC”而不是ABC+汉的半个

答:代码如下:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->packagetest;

class
SplitString
{
StringSplitStr;
int
SplitByte;
publicSplitString(Stringstr,int
bytes)
{
SplitStr
=
str;
SplitByte
=
bytes;
System.out.println(
"TheStringis:'"+SplitStr+"';SplitBytes="+
SplitByte);
}
publicvoid
SplitIt()
{
int
loopCount;


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)));
}
}
}
publicstaticvoid
main(String[]args)
{
SplitStringss
=newSplitString("test中dd文dsaf中男大3443n中国43中国人


0ewldfls
=103",4);
ss.SplitIt();
}
}

 

 

5、可能会让你写一段JdbcOracle的程序,并实现数据查询.

:程序如下:

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->packagehello.ant;
importjava.sql.*
;
publicclass
jdbc
{
StringdbUrl
="jdbc:oracle:thin:@127.0.0.1:1521:orcl"
;
StringtheUser
="admin"
;
StringthePw
="manager"
;
Connectionc
=null
;
Statementconn;
ResultSetrs
=null
;
public
jdbc()
{
try
{
Class.forName(
"oracle.jdbc.driver.OracleDriver"
).newInstance();
c
=
DriverManager.getConnection(dbUrl,theUser,thePw);
conn
=
c.createStatement();
}
catch
(Exceptione){
e.printStackTrace();
}
}
publicboolean
executeUpdate(Stringsql)
{
try

{
conn.executeUpdate(sql);
returntrue;
}
catch
(SQLExceptione)
{
e.printStackTrace();
returnfalse
;
}
}
public
ResultSetexecuteQuery(Stringsql)
{
rs
=null
;
try

{
rs
=conn.executeQuery(sql);
}
catch
(SQLExceptione)
{
e.printStackTrace();
}
return
rs;
}
publicvoid
close()
{
try

{
conn.close();
c.close();
}
catch(Exceptione)
{
e.printStackTrace();
}
}
publicstaticvoid
main(String[]args)
{
ResultSetrs;
jdbcconn
=new
jdbc();
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();
}
}
}

 

 

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

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

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>-->packagetest;
importjava.io.*
;
publicclass
DOMTest
{
privateStringinFile="c:\\people.xml"
;
privateStringoutFile="c:\\people.xml"
;
publicstaticvoid
main(Stringargs[])
{
new
DOMTest();
}
public
DOMTest()
{
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(
new
javax.xml.transform.dom.DOMSource(doc),
new


javax.xml.transform.stream.StreamResult(outFile));
}
catch(Exceptione)
{
System.out.println(e.getMessage());
}
}
}

 

 

7、将一个键盘输入的数字转化成中文输出

(例如:输入:1234567输出:一百二拾三万四千五百六拾七)
用java语言实现,,请编一段程序实现!

 

8、如何校验数字型?

 

<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> publicclass Reader{
private
StringstrNum;
private
StringstrNumChFormat;
private
StringstrNumTemp;
privateint
intNumLen;
private
StringstrBegin;
public
Reader(StringstrNum){
this.strNum=
strNum;
}
publicboolean
check(StringstrNum){
booleanvalid=false
;

if(strNum.substring(0,1).equals("0"
)){
this.strNum=strNum.substring(1
);
}
try
{
new
Double(strNum);
valid
=true
;
}
catch
(NumberFormatExceptionex){
System.out.println(
"Badnumberformat!"
);
}
return
valid;
}
publicvoid
init(){
strNumChFormat
=""
;
intNumLen
=
strNum.length();
strNumTemp
=
strNum;
strNumTemp
=strNumTemp.replace('1',''
);
strNumTemp
=strNumTemp.replace('2',''
);
strNumTemp
=strNumTemp.replace('3',''
);
strNumTemp
=strNumTemp.replace('4',''
);
strNumTemp
=strNumTemp.replace('5',''
);
strNumTemp
=strNumTemp.replace('6',''
);
strNumTemp
=strNumTemp.replace('7',''
);
strNumTemp
=strNumTemp.replace('8',''
);
strNumTemp
=strNumTemp.replace('9',''
);

你可能感兴趣的:(java,编程,jsp,socket,面试)