??xml version="1.0" encoding="utf-8" standalone="yes"?>
在一个JSP文gW一ơ被hӞJSP引擎把该JSP文g转换成ؓ(f)一个servlet。而这个引擎本w也是一个servletQ在JSWDK或WEBLOGIC中,它就是JspServlet?JSP引擎先把该JSP文g转换成一个Java源文Ӟ在{换时如果发现jsp文g有Q何语法错误,转换q程中断,q向服务端和客户端输出出错信息;如果转换成功Q?JSP引擎用javac把该Java源文件编译成相应的class文g。然后创Z个该SERVLET的实例,该SERVLET的jspInit()Ҏ(gu)被执行,jspInit()Ҏ(gu)在servlet的生命周期中只被执行一ơ。然后jspService()Ҏ(gu)被调用来处理客户端的h。对每一个请求,JSP引擎创徏一个新的线E来处理该请求。如果有多个客户端同时请求该JSP文gQ则JSP引擎?x)创建多个线E。每个客L(fng)h对应一个线E。以多线E方式执行可大大降低对系l的资源需?提高pȝ的ƈ发量?qing)响应时?但应该注意多U程的编E限Ӟ׃该servlet始终M内存Q所以响应是非常快的?如果.jsp文g被修改了(jin)Q服务器根据设|决定是否对该文仉新编译,如果需要重新编译,则将~译l果取代内存?sh)的servletQƈl箋(hu)上述处理q程?虽然JSP效率很高Q但在第一ơ调用时׃需要{换和~译而有一些轻微的延迟?此外Q如果在M时候如果由于系l资源不的原因QJSP引擎以某种不确定的方式servlet从内存(sh)Ud。当q种情况发生时jspDestroy()Ҏ(gu)首先被调? 然后servlet实例便被标记加入"垃圾攉"处理?jspInit()?qing)jspDestory()格式如下Q可在jspInit()中进行一些初始化工作,如徏立与数据库的q接Q或建立|络q接Q从配置文g中取一些参数等Q在jspDestory()中释攄应的资源?
<%!二、服务端的输出缓冲区
~省情况?服务端要输出到客L(fng)的内?不直接写到客L(fng),而是先写C个输出缓冲区?只有在下面三中情况下Q才?x)把该缓冲区的内容输出到客户端上Q?BR>
三、服务端输出重定?/P>
有以?U方法可以做到输出重定向:
说明Q?BR>1. Ҏ(gu)(1),(2)可以使用变量表示重定向的地址;Ҏ(gu)(3)不能使用变量表示重定向的地址?BR>String add="./index.html";
<jsp:forward page= add />
无法重定向到index.html中去
String add=http://localhost:7001/index.html
response.sendRedirect(add);
可以重定向到http://localhost:7001/index.html中去?
2. 采用Ҏ(gu)(1),(2)request中的变量(通过request.setAttribute()保存到request中的?不能在新的页面中采用,采用Ҏ(gu)(3)? lg,我们应该采用(1),(2)重定向比较好.
四、JSP中正应用类:
应该把类当成JAVA BEAN来用Q不要在<% %> 中直接? 如下的代?1)l过JSP引擎转化后会(x)变(sh)ؓ(f)代码(2):
从中可看出如果把一个类在JSP当成JAVA BEAN 使用,JSP?x)根据它的作用范围把它保存到相应的内部对象?
如作用范围ؓ(f)request,则把它保存到request对象?q且只在W一ơ调?对象的gؓ(f)null)它时q行实例? 而如果在<% %>中直接创cȝ一个对?则每ơ调用JSP?都要重新创徏该对??x)?jing)响性能.
代码(1)
<jsp:useBean id="test" scope="request" class="demo.com.testdemo">
</jsp:useBean>
<%
test.print("this is use java bean");
testdemo td= new testdemo();
td.print("this is use new");
%>
if (test == null)
{
try
{
test = (demo.com.testdemo) java.beans.Beans.instantiate(getClass().getClassLoader(),"demo.com.testdemo");
}
catch (Exception _beanException)
{
throw new weblogic.utils.NestedRuntimeException("cannot instantiate 'demo.com.testdemo'",_beanException);
}
request.setAttribute("test", test);
out.print("\r\n");
}
out.print("\r\n\r\n\r\n");
test.print("this is use java bean");
testdemo td= new testdemo();
td.print("this is use new");
五、JSP的调?
JSP的调试比较麻?特别是当bean是在一个session中存在时Q更加困难。得从好几个面开始往里面走才行。通常是用out.println()或System.out.print()来打一大堆的信息来查问题。如果是用jbuilder做开?它能直接调试JSP.不过更重要的是知道错误生的原因?qing)解x(chng)法。下面对一些JSP~程常见错误q行分析?
(1).java.lang.NullPointerException异常
一般是对一个ؓ(f)NULL值的变量q行操作引v?如下面的操作׃(x)抛出
java.lang.NullPointerException
String a = null;
a.substring(0,1);
为避免这U异常最好在对变量操作之前检查看它是否ؓ(f)NULL??
<% String ss=Session.getAttribute("NAME")
if isnull(ss)
{
}
else
{
}
%>
(2).JSP是用JAVA写的Q所以它是大写敏感的,用过其他~程语言的h最Ҏ(gu)犯这个错误。另外在览器的地址栏中输入的访问JSP的地址也是区分大小写的.如http://localhost:7001/demo/t.jsp与http://localhost:7001/Demo/t.jsp是不一L(fng)
(3).在jsp中判断字W串要用compareToҎ(gu)Q不要用==Q因为在java中String变量不是一个简单的变量而是一个类实例Q不同的Ҏ(gu)?x)得?不同的结果,如下所C:(x)
(4)防止JSP或SERVLET中的输出被浏览器保存在缓冲区?
览器在默认情况下会(x)把浏览过的网保存在~冲Z,在调试时,一般不希望q样.把下面的脚本加入E序?可防止JSP或SERVLET中的输出被浏览器保存在缓冲区?
<%
response.setHeader("Cache-Control","no-store"); //HTTP 1.1
response.setHeader("Pragma","no-cache"); //HTTP 1.0
response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
%>
在IE中也可通过讄实现Q把/工具/INTERNET选项/常规/讄/的检察所存页面的较新版本,设ؓ(f)每次讉K该页旉(g)?
六、COOKIE
HTTP COOKIE实质是服务端与在客户端之间传送的普通HTTP?可保存(sh)可不保存在客L(fng)盘?sh)?如果保存,每一个文件大不过4K的文本文?多个COOKIE可保存到同一个文件中. 如果从编E角度来?在JSP中COOKIE是JAVA提供的一个类.常用的方法如下所表示Q因为客L(fng)可能不接受COOKIEQ所以徏议不用它Q改用SESSION{其他方式?
如何(g)查一个客L(fng)是否支持COOKIE的方?
用下面的Ҏ(gu)写一个COOKIE到客L(fng),q确认成?
try
{
Cookie c = new Cookie("mycookie","COOKIE TEST");
response.addCookie(c);
}
catch(Exception e)
{
System.out.println(e);
}
然后在一个新的JSP文g?用下面的Ҏ(gu)取客L(fng)的COOKIE到cookies? 如果cookies.length ==0,说明该客L(fng)的浏览器不支持COOKIE
try
{
Cookie[] cookies = request.getCookies();
if(cookies.length ==0)
{
System.out.println("not support cookie");
}
}
catch(Exception e)
{
System.out.println(e);
}
七、JSP和SERVLET的区?
SUN首先发展出SERVLETQ其功能比较强劲Q体p设计也很先q,只是Q它输出HTML语句q是采用?jin)老的CGI方式Q是一句一句输出,所以,~写和修改HTML非常不方ѝ?后来SUN推出?jin)类gASP的JSPQ把JAVA代码嵌套到HTML语句中,q样Q就大大化和方便?jin)网늚设计和修攏VASPQPHPQJSP都是嵌套型的SCRIPT语言?一个分布式pȝ应分Z层:(x)表示?业务逻辑?数据存取?在J2EE体系l构?SERVLET用来写业务逻辑层是很强大的Q但是对于写表示层就很不方便。JSP则主要是Z(jin)方便写表C层而设计的。ENTITY BEAN实现数据存取层,SESSION BEAN实现业务逻辑层。如果是单的应用pȝ,可采用JSP+BEANS的结构进行设?JSP中应该仅仅存放与表示层有关的东西Q也是_(d)只放输出HTML|页的部份。而所有的数据计算Q数据分析,数据库联l处理,l统是属于业务逻辑层,应该攑֜JAVA BEANS中。通过JSP调用JAVA BEANSQ实C层的整合?实际上,微Y的DNA技术,单说Q就是ASP+COM/DCOM技术。与JSP+BEANS完全cMQ所有的表示层由ASP完成Q所有的业务逻辑由COM/DCOM完成?Z么要采用q些lg技术呢Q因为单U的ASP/JSP语言是非怽效率执行的,如果出现大量用户点击Q纯SCRIPT语言很快到达了(jin)他的功能上限Q而组件技术就能大q度提高功能上限Q加快执行速度。另外一斚wQ纯SCRIPT语言表C层和业务逻辑层在一P造成修改不方便,q且代码不能重复利用Q采用组件技术就只改lg可以了(jin)?对于复杂的应用,应该采用ENTITY BEAN实现数据存取层,SESSION BEAN实现业务逻辑层,用JSP来调用SESSION BEANQ由SESSION BEAN调用ENTITY BEAN。即采用JSP+EJB来构Z个复杂的分布式系l。它比JSP+BEANh更高的吞吐量Q可靠性,安全性。综上所qͼ对简单应用,可采用JSP+BAENQ对复杂的应用系l,应采用JSP+EJBQSERVLET变的无轻重。用JSP完全可替代它?/SPAN>
一、JSP的中存在的多U程问题Q?/P>
当客L(fng)W一ơ请求某一个JSP文gӞ服务端把该JSP~译成一个CLASS文gQƈ创徏一个该cȝ实例Q然后创Z个线E处理CLIENT端的h。如果有多个客户端同时请求该JSP文gQ则服务端会(x)创徏多个U程。每个客L(fng)h对应一个线E。以多线E方式执行可大大降低对系l的资源需?提高pȝ的ƈ发量?qing)响应时?对JSP中可能用的的变量说明如下:
二、下面的例子存在的多U程问题Q?/P>
<%@ page import="
javax.naming.*,
java.util.*,
java.sql.*,
weblogic.common.*
" %>
<%
String name
String product;
long quantity;
name=request.getParameter("name");
product=request.getParameter("product");
quantity=request.getParameter("quantity"); /*(1)*/
savebuy();
%>
<%!
public void savebuy()
{
/*q行数据库操作,把数据保存到表中*/
try {
Properties props = new Properties();
props.put("user","scott");
props.put("password","tiger");
props.put("server","DEMO");
Driver myDriver = (Driver) iver").newInstance();
conn = myDriver.connect("jdbc:weblogic:oracle", props);
stmt = conn.createStatement();
String inssql = "insert into buy(empid, name, dept) values (?, ?, ?,?)";
stmt = conn.prepareStatement(inssql);
stmt.setString(1, name);
stmt.setString(2, procuct);
stmt.setInt(3, quantity);
stmt.execute();
}
catch (Exception e)
{
System.out.println("SQLException was thrown: " + e.getMessage());
}
finally //close connections and {
try {
if(stmt != null)
stmt.close();
if(conn != null)
conn.close();
} catch (SQLException sqle) {
System.out.println("SQLException was thrown: " + sqle.getMessage());
}
}
}
%>
三、解x(chng)?/P>
name=request.getParameter("name");
product=request.getParameter("product");
quantity=request.getParameter("quantity");
savebuy(name,product,quantity)
%>
如果savebuy的参数很?或这些数据要在很多地方用?也可声明一个类,q用他做参数,?
public class buyinfopublic void savebuy(buyinfo info)
{
......
}
调用方式改ؓ(f):
<%
buyinfo userbuy = new buyinfo();
userbuy.name=request.getParameter("name");
userbuy.product=request.getParameter("product");
userbuy.quantity=request.getParameter("quantity");
savebuy(userbuy);
%>
所以最好是?,因ؓ(f)1,2?x)降低系l的性能.
多线E问题(sh)般只有在在大q发量访问时Q才有可能出玎ͼq且很难重复出现Q所以应在编E时时L意?
2、ArrayList和Vector的区?HashMap和Hashtable的区?/font>
{:(x)ArrayList与Vector主要从二斚w来说.
一.同步?Vector是线E安全的Q也是说是同步的,而ArrayList是线E序不安全的Q不是同步的
?数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一?
HashMap与HashTable主要从三斚w来说?
一.历史原因:Hashtable是基于陈旧的DictionarycȝQHashMap是Java 1.2引进的Map接口的一个实?
?同步?Hashtable是线E安全的Q也是说是同步的,而HashMap是线E序不安全的Q不是同步的
?|(x)只有HashMap可以让你空gZ个表的条目的key或value
3、char型变量中能不能存贮一个中文汉?Z?
{:(x)是能够定义成Z个中文的Q因为java中以unicode~码Q一个char?6个字节,所以放一个中文是没问题的
4、多U程有几U实现方?都是什?同步有几U实现方?都是什?
{:(x)多线E有两种实现Ҏ(gu)Q分别是l承ThreadcM实现Runnable接口
同步的实现方面有两种Q分别是synchronized,wait与notify
5、(h)承时候类的执行顺序问?一般都是选择?问你会(x)打印Z?
{?父类Q?
package test;
public class FatherClass
{
public FatherClass()
{
System.out.println("FatherClass Create");
}
}
子类:
package test;
import test.FatherClass;
public class ChildClass extends FatherClass
{
public ChildClass()
{
System.out.println("ChildClass Create");
}
public static void main(String[] args)
{
FatherClass fc = new FatherClass();
ChildClass cc = new ChildClass();
}
}
输出l果Q?
C:\>java test.ChildClass
FatherClass Create
FatherClass Create
ChildClass Create
6、内部类的实现方?
{:(x)CZ代码如下Q?
package test;
public class OuterClass
{
private class InterClass
{
public InterClass()
{
System.out.println("InterClass Create");
}
}
public OuterClass()
{
InterClass ic = new InterClass();
System.out.println("OuterClass Create");
}
public static void main(String[] args)
{
OuterClass oc = new OuterClass();
}
}
输出l果:
C:\>java test/OuterClass
InterClass Create
OuterClass Create
再一个例题:(x)
public class OuterClass {
private double d1 = 1.0;
//insert code here
}
You need to insert an inner class declaration at line 3. Which two inner class declarations are
valid?(Choose two.)
A. class InnerOne{
public static double methoda() {return d1;}
}
B. public class InnerOne{
static double methoda() {return d1;}
}
C. private class InnerOne{
double methoda() {return d1;}
}
D. static class InnerOne{
protected double methoda() {return d1;}
}
E. abstract class InnerOne{
public abstract double methoda();
}
说明如下Q?
一.?rn)态内部类可以有静(rn)态成员,而非?rn)态内部类则不能有?rn)态成员??A、B ?
??rn)态内部类的非?rn)态成员可以访问外部类的静(rn)态变量,而不可访问外部类的非?rn)态变量;return d1 出错?
?D ?
?非静(rn)态内部类的非?rn)态成员可以访问外部类的非?rn)态变量??C 正确
?{案为C、E
7、垃圑֛收机?如何优化E序?
希望大家补上Q谢?
8、float型float f=3.4是否正确?
{?不正。精度不准确,应该用强制类型{换,如下所C:(x)float f=(float)3.4
9、介lJAVA中的Collection FrameWork(包括如何写自q数据l构)?
{:(x)Collection FrameWork如下Q?
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
Collection是最基本的集合接口,一个Collection代表一lObjectQ即Collection的元素(ElementsQ?
Map提供key到value的映?
10、Java中异常处理机Ӟ事g机制Q?/font>
11、JAVA中的多Ş与(h)承?
希望大家补上Q谢?
12、抽象类与接口?
{:(x)抽象cM接口都用于抽象,但是抽象c?JAVA?可以有自q部分实现Q而接口则完全是一个标?同时有多重(h)承的功能)?
13、Java 的通信~程Q编E题(或问{?Q用JAVA SOCKET~程Q读服务器几个字W,再写入本地显C?/font>Q?
{?Server端程?
package test;
import java.net.*;
import java.io.*;
public class Server
{
private ServerSocket ss;
private Socket socket;
private BufferedReader in;
private PrintWriter out;
public Server()
{
try
{
ss=new ServerSocket(10000);
while(true)
{
socket = ss.accept();
String RemoteIP = socket.getInetAddress().getHostAddress();
String RemotePort = ":"+socket.getLocalPort();
System.out.println("A client come in!IP:"+RemoteIP+RemotePort);
in = new BufferedReader(new
InputStreamReader(socket.getInputStream()));
String line = in.readLine();
System.out.println("Cleint send is :" + line);
out = new PrintWriter(socket.getOutputStream(),true);
out.println("Your Message Received!");
out.close();
in.close();
socket.close();
}
}catch (IOException e)
{
out.println("wrong");
}
}
public static void main(String[] args)
{
new Server();
}
};
Client端程?
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();
}
};
14、用JAVA实现一U排序,JAVAcd现序列化的方?二种)Q?如在COLLECTION框架中,实现比较要实C么样的接口?
{?用插入法q行排序代码如下
package test;
import java.util.*;
class InsertSort
{
ArrayList al;
public InsertSort(int num,int mod)
{
al = new ArrayList(num);
Random rand = new Random();
System.out.println("The ArrayList Sort Before:");
for (int i=0;i<num ;i++ )
{
al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
System.out.println("al["+i+"]="+al.get(i));
}
}
public void SortIt()
{
Integer tempInt;
int MaxSize=1;
for(int i=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 (int j=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("The ArrayList Sort After:");
for(int i=0;i<al.size();i++)
{
System.out.println("al["+i+"]="+al.get(i));
}
}
public static void main(String[] args)
{
InsertSort is = new InsertSort(10,100);
is.SortIt();
}
}
JAVAcd现序例化的方法是实现java.io.Serializable接口
Collection框架中实现比较要实现Comparable 接口?Comparator 接口
15、编E:(x)~写一个截取字W串的函敎ͼ输入Z个字W串和字节数Q输Zؓ(f)按字节截取的字符丌Ӏ?但是要保证汉字不被截半个Q如“我ABC?Q应该截为“我AB”,输入“我ABC汉DEF”,6Q应该输Zؓ(f)“我ABC”而不是“我ABC+汉的半个”?/font>
{:(x)代码如下Q?
package test;
class SplitString
{
String SplitStr;
int SplitByte;
public SplitString(String str,int bytes)
{
SplitStr=str;
SplitByte=bytes;
System.out.println("The String is:?+SplitStr+"?SplitBytes="+SplitByte);
}
public void SplitIt()
{
int loopCount;
loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/Split
Byte+1);
System.out.println("Will Split into "+loopCount);
for (int i=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)));
Jsp斚w
1、jsp有哪些内|对?作用分别是什?
{?JSP共有以下9U基本内|组Ӟ可与ASP?U内部组件相对应Q:(x)
request 用户端请求,此请求会(x)包含来自GET/POSTh的参?
response |页传回用户端的回应
pageContext |页的属性是在这里管?
session 与请求有关的?x)话?
application servlet 正在执行的内?
out 用来传送回应的输出
config servlet的构枉?
page JSP|页本n
exception 针对错误|页Q未捕捉的例?
2、jsp有哪些动?作用分别是什?
{?JSP共有以下6U基本动?
jsp:includeQ在面被请求的时候引入一个文件?
jsp:useBeanQ寻找或者实例化一?font color="#000000">JavaBean?
jsp:setPropertyQ设|JavaBean的属性?
jsp:getPropertyQ输出某个JavaBean的属性?
jsp:forwardQ把h转到一个新的页面?
jsp:pluginQ根据浏览器cd为Java插g生成OBJECT或EMBED标记
3、JSP中动态INCLUDE与静(rn)态INCLUDE的区别?
{:(x)动态INCLUDE用jsp:include动作实现
<jsp:include page="included.jsp" flush="true" />它L?x)检查所含文件中的变化,适合用于包含动态页面,q且可以带参?
?rn)态INCLUDE用include伪码实现,定不?x)检查所含文件的变化Q适用于包含静(rn)态页?
<%@ include file="included.htm" %>
4、两U蟩转方式分别是什?有什么区?
{:(x)有两U,分别为:(x)
<jsp:include page="included.jsp" flush="true">
<jsp:forward page= "nextpage.jsp"/>
前者页面不?x){向include所指的面Q只是显C늚l果Q主面q是原来的页面。执行完后还?sh)(x)回来,相当于函数调用。ƈ且可以带参数.后者完全{向新面Q不?x)再回来。相当于go to 语句?
Servlet斚w (tng)
1、说一说Servlet的生命周? (tng)
{?servlet有良好的生存期的定义Q包括加载和实例化、初始化、处理请求以?qing)服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroyҎ(gu)表达。?br />
2、Servlet版本?忘(sh)(jin)问的是哪两个版本?的不? (tng)
希望大家补上Q谢谢?br />
3、JAVA (tng)SERVLET (tng)API中forward() (tng)与redirect()的区别? (tng)
{?前者仅是容器中控制权的转向Q在客户端浏览器地址栏中不会(x)昄?gu){向后的地址Q后者则是完全的跌{Q浏览器会(x)得到跌{的地址Qƈ重新发送请求链接。这P从浏览器的地址栏中可以看到跌{后的链接地址。所以,前者更加高效,在前者可以满需要时Q尽量用forward()Ҏ(gu)Qƈ且,q样也有助于隐藏实际的链接。在有些情况下,比如Q需要蟩转到一个其它服务器上的资源Q则必须使用sendRedirect()Ҏ(gu)。?br />
4、Servlet的基本架?/font> (tng)
public (tng)class (tng)ServletName (tng)extends (tng)HttpServlet (tng){ (tng)
public (tng)void (tng)doPost(HttpServletRequest (tng)request, (tng)HttpServletResponse (tng)response) (tng)throws (tng)
ServletException, (tng)I(yng)OException (tng){ (tng)
} (tng)
public (tng)void (tng)doGet(HttpServletRequest (tng)request, (tng)HttpServletResponse (tng)response) (tng)throws (tng)
ServletException, (tng)I(yng)OException (tng){ (tng)
} (tng)
} (tng)
Xml斚w
1、xml有哪些解析技?区别是什?
{?有DOM,SAX,STAX{?
DOM:处理大型文g时其性能下降的非常厉実뀂这个问题是由DOM的树(wi)l构所造成的,q种l构占用的内存较多,而且DOM必须在解析文件之前把整个文装入内存,适合对XML的随问SAX:不现于DOM,SAX是事仉动型的XML解析方式。它序dXML文gQ不需要一ơ全部装载整个文件。当遇到像文件开_(d)文l束Q或者标{ּ头与标签l束Ӟ它会(x)触发一个事Ӟ用户通过在其回调事g中写入处理代码来处理XML文gQ适合对XML的顺序访?
STAX:Streaming API for XML (StAX)
2、你在项目中用到?jin)xml技术的哪些斚w?如何实现?
{?用到?jin)数据存贮,信息配置两方面。在做数据交换^台时Q将不能数据源的数据l装成XML文gQ然后将XML文g压羃打包加密后通过|络传送给接收者,接收解密与解压羃后再同XML文g中还原相关信息进行处理。在做Y仉|时Q利用XML可以很方便的q行QY件的各种配置参数都存贮在XML文g中?
设计模式斚w
1、开发中都用C(jin)那些设计模式?用在什么场?
{:(x)每个模式都描qC(jin)一个在我们的环境中不断出现的问题,然后描述?jin)该问题的解x(chng)案的核心(j)。通过q种方式Q你可以无数ơ地使用那些已有的解x(chng)案,无需在重复相同的工作。主要用C(jin)MVC的设计模式。用来开发JSP/Servlet或者J2EE的相兛_用。简单工厂模式等?
2、UML斚w (tng)有哪五种图视 (tng)
{:(x)标准建模语言UML。用例图,?rn)态图(包括cd、对象图和包?,行ؓ(f)?交互?序?合作?,实现?
JavaScript斚w
1、如何校验数字型?
var re=/^\d{1,8}$|\.\d{1,2}$/;
var str=document.form1.all(i).value;
var r=str.match(re);
if (r==null)
{
sign=-4;
break;
}
else{
document.form1.all(i).value=parseFloat(str);
}
LINUX斚w
1、LINUX下线E,GDIcȝ解释?/font>
{:(x)LINUX实现的就是基于核?j)轻量q程?一对一"U程模型Q一个线E实体对应一个核?j)轻量q程Q而线E之间的理在核外函数库中实现?
GDIcMؓ(f)囑փ讑֤~程接口cd?br />
变态试题集
1。变态指?4
int x=4;
System.out.println("value is " +((x>4)?99.9:9));
{案 9.0 问号表达式的后面两个条g有要?因ؓ(f)前面的是float,所以后面{为float.
估计出题者才通过SCJP的考试?/font>
2.变态指?5
public class Test {
public static void main(String[] args) {
int x = 4;
java.util.Date date = (x > 4) ? new A() : new B();
}
}
class A extends java.util.Date {}
class B extends java.util.Date {}
{案 ~译不通过,
不知道出题(sh)h的意?/font>
3.变态指?6
String s=new String("abc");
创徏?jin)几个String对象Q?br />{案 2?
q样的公司最好不要去
4.变态指?7
const是不是java的关键字Q?br />{案 const是java的关键字,但是java没有实现?
一般hl对用不到它
5.变态指?8
Qshort s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
{案 1?对,1因ؓ(f)向上转型?最后导致类型不匚w错误 ,
因ؓ(f)s1?=是一个操作符Q能够自动{?
short s1 = 1;
s1 = s1+1;q句话在c++里面可以?
不知道出题(sh)h的意?/font>
6.变态指?9
上v贝尔的面试题:你认为效率最高的Ҏ(gu),实现?加到100.
{案 1-100的篏加相当于?0?01Q这样@环次C100ơ降?0ơ:(x)
int sun = 0
for(int i = 1,j = 100 ; i <= 50 ; i++,j--){
(tng) (tng) (tng) sun = sun + i + j;
} (tng)
出题?sh)子有问?直接(1+100)*50不是最?..其实cMq样的优化应该不是程序员考虑的范畴吧
7.变态指?10
(tng)System.out.println(5.0942*1000);
(tng) (tng) (tng) (tng) System.out.println(5.0943*1000);
(tng) System.out.println(5.0944*1000);的结?br />{案 :5094.2 5094.299999999999 5094.400000000001
原理和QҎ(gu)的计机表示方式有关 ,你不用上?q对了(jin),你最好去微Y,接替安d?dng)?
q是好友面试的一道题Q其实我知道使用的区别,StringBuffer必须new出来QStringBuffer的append的效率比string?=的效率高Q?BR>其实发现q有很大的区别,看了(jin)看以前scjp的考题
public class Test {
public static void stringReplace (String text) {
text = text.replace('j' , 'i');
}
public static void bufferReplace (StringBuffer text) {
text = text.append("C");
}
public static void main (String args[]) {
String textString = new String ("java");
StringBuffer textBuffer = new StringBuffer ("java");
stringReplace (textString);
bufferReplace (textBuffer);
System.out.println (textString + textBuffer);
}
}
{案?javajavaC
q是Java参数传?by value)造成?是不可变?immutable).,例如 基本cdQString传|复制?jin)g递过去;可变的(ObjectQ传|复制?jin)引用传递过厅R?
而题目中W七行text = text.append (“C?QappendҎ(gu)?x)改变text中的?BR>而这个text与main中的textBuffer是指向同一个对象,所以对应的输出是javac?BR>string的值永q不?x)改变?/FONT>
String a = "a";//假设a指向地址0x0001Q?BR>a = "b";//重新负值后a指向地址0x0002Q但0x0001地址中保存的"a"依旧存在Q但已经不再是a所指向的?BR>从表面上看Stringcd的对象改变(sh)(jin)|但事实是他不能改变|只能改变指向的地址
StringBuffer则不同,直接改变指向的地址中保留的?BR>q有
StringBuffer s1 = new StringBuffer("a");
StringBuffer s2 = new StringBuffer("a");
s1.equals(s2)//Z么是false
String s1 = new String("a");
String s2 = new String("a");
s1.equals(s2)//Z么是true
StringBuffercM没有重新定义equalsq个Ҏ(gu)Q因此这个方法就来自Objectc,
而ObjectcM的equalsҎ(gu)是用来比较地址的,所以等于false.
StringcM重新定义?jin)equalsq个Ҏ(gu)Q而且比较的是|而不是地址。所以会(x)?BR>true?BR>对于q样能不能面试出真正的水qI感到怀疑?/P>