??xml version="1.0" encoding="utf-8" standalone="yes"?>
在一个JSP文gW一ơ被hӞJSP引擎把该JSP文g转换成ؓ一个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()Ҏ被执行,jspInit()Ҏ在servlet的生命周期中只被执行一ơ。然后jspService()Ҏ被调用来处理客户端的h。对每一个请求,JSP引擎创徏一个新的线E来处理该请求。如果有多个客户端同时请求该JSP文gQ则JSP引擎会创建多个线E。每个客Lh对应一个线E。以多线E方式执行可大大降低对系l的资源需?提高pȝ的ƈ发量及响应时?但应该注意多U程的编E限Ӟ׃该servlet始终M内存Q所以响应是非常快的?如果.jsp文g被修改了Q服务器根据设|决定是否对该文仉新编译,如果需要重新编译,则将~译l果取代内存中的servletQƈl箋上述处理q程?虽然JSP效率很高Q但在第一ơ调用时׃需要{换和~译而有一些轻微的延迟?此外Q如果在M时候如果由于系l资源不的原因QJSP引擎以某种不确定的方式servlet从内存中Ud。当q种情况发生时jspDestroy()Ҏ首先被调? 然后servlet实例便被标记加入"垃圾攉"处理?jspInit()及jspDestory()格式如下Q可在jspInit()中进行一些初始化工作,如徏立与数据库的q接Q或建立|络q接Q从配置文g中取一些参数等Q在jspDestory()中释攄应的资源?
<%!二、服务端的输出缓冲区
~省情况?服务端要输出到客L的内?不直接写到客L,而是先写C个输出缓冲区?只有在下面三中情况下Q才会把该缓冲区的内容输出到客户端上Q?BR>
三、服务端输出重定?/P>
有以?U方法可以做到输出重定向:
说明Q?BR>1. Ҏ(1),(2)可以使用变量表示重定向的地址;Ҏ(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. 采用Ҏ(1),(2)request中的变量(通过request.setAttribute()保存到request中的?不能在新的页面中采用,采用Ҏ(3)? lg,我们应该采用(1),(2)重定向比较好.
四、JSP中正应用类:
应该把类当成JAVA BEAN来用Q不要在<% %> 中直接? 如下的代?1)l过JSP引擎转化后会变ؓ代码(2):
从中可看出如果把一个类在JSP当成JAVA BEAN 使用,JSP会根据它的作用范围把它保存到相应的内部对象中.
如作用范围ؓrequest,则把它保存到request对象?q且只在W一ơ调?对象的gؓnull)它时q行实例? 而如果在<% %>中直接创cȝ一个对?则每ơ调用JSP?都要重新创徏该对?会媄响性能.
代码(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");
%>
代码(2)
demo.com.testdemo test = (demo.com.testdemo)request.getAttribute("test");
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.不过更重要的是知道错误生的原因及解x法。下面对一些JSP~程常见错误q行分析?
(1).java.lang.NullPointerException异常
一般是对一个ؓNULL值的变量q行操作引v?如下面的操作׃抛出
java.lang.NullPointerException
String a = null;
a.substring(0,1);
为避免这U异常最好在对变量操作之前检查看它是否ؓNULL??
<% String ss=Session.getAttribute("NAME")
if isnull(ss)
{
}
else
{
}
%>
(2).JSP是用JAVA写的Q所以它是大写敏感的,用过其他~程语言的h最Ҏ犯这个错误。另外在览器的地址栏中输入的访问JSP的地址也是区分大小写的.如http://localhost:7001/demo/t.jsp与http://localhost:7001/Demo/t.jsp是不一L
(3).在jsp中判断字W串要用compareToҎQ不要用==Q因为在java中String变量不是一个简单的变量而是一个类实例Q不同的Ҏ会得?不同的结果,如下所C:
(4)防止JSP或SERVLET中的输出被浏览器保存在缓冲区?
览器在默认情况下会把浏览过的网保存在~冲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选项/常规/讄/的检察所存页面的较新版本,设ؓ每次讉K该页旉?
六、COOKIE
HTTP COOKIE实质是服务端与在客户端之间传送的普通HTTP?可保存也可不保存在客L盘?如果保存,每一个文件大不过4K的文本文?多个COOKIE可保存到同一个文件中. 如果从编E角度来?在JSP中COOKIE是JAVA提供的一个类.常用的方法如下所表示Q因为客L可能不接受COOKIEQ所以徏议不用它Q改用SESSION{其他方式?
如何查一个客L是否支持COOKIE的方?
用下面的Ҏ写一个COOKIE到客L,q确认成?
try
{
Cookie c = new Cookie("mycookie","COOKIE TEST");
response.addCookie(c);
}
catch(Exception e)
{
System.out.println(e);
}
然后在一个新的JSP文g?用下面的Ҏ取客L的COOKIE到cookies? 如果cookies.length ==0,说明该客L的浏览器不支持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是采用了老的CGI方式Q是一句一句输出,所以,~写和修改HTML非常不方ѝ?后来SUN推出了类gASP的JSPQ把JAVA代码嵌套到HTML语句中,q样Q就大大化和方便了网늚设计和修攏VASPQPHPQJSP都是嵌套型的SCRIPT语言?一个分布式pȝ应分Z层:表示?业务逻辑?数据存取?在J2EE体系l构?SERVLET用来写业务逻辑层是很强大的Q但是对于写表示层就很不方便。JSP则主要是Z方便写表C层而设计的。ENTITY BEAN实现数据存取层,SESSION BEAN实现业务逻辑层。如果是单的应用pȝ,可采用JSP+BEANS的结构进行设?JSP中应该仅仅存放与表示层有关的东西Q也是_只放输出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语言很快到达了他的功能上限Q而组件技术就能大q度提高功能上限Q加快执行速度。另外一斚wQ纯SCRIPT语言表C层和业务逻辑层在一P造成修改不方便,q且代码不能重复利用Q采用组件技术就只改lg可以了?对于复杂的应用,应该采用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>
当客LW一ơ请求某一个JSP文gӞ服务端把该JSP~译成一个CLASS文gQƈ创徏一个该cȝ实例Q然后创Z个线E处理CLIENT端的h。如果有多个客户端同时请求该JSP文gQ则服务端会创徏多个U程。每个客Lh对应一个线E。以多线E方式执行可大大降低对系l的资源需?提高pȝ的ƈ发量及响应时?对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?/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)
{
......
}
调用方式改ؓ:
<%
buyinfo userbuy = new buyinfo();
userbuy.name=request.getParameter("name");
userbuy.product=request.getParameter("product");
userbuy.quantity=request.getParameter("quantity");
savebuy(userbuy);
%>
所以最好是?,因ؓ1,2会降低系l的性能.
多线E问题一般只有在在大q发量访问时Q才有可能出玎ͼq且很难重复出现Q所以应在编E时时L意?
2、ArrayList和Vector的区?HashMap和Hashtable的区?/font>
{: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不是同步的
?|只有HashMap可以让你空gZ个表的条目的key或value
3、char型变量中能不能存贮一个中文汉?Z?
{:是能够定义成Z个中文的Q因为java中以unicode~码Q一个char?6个字节,所以放一个中文是没问题的
4、多U程有几U实现方?都是什?同步有几U实现方?都是什?
{:多线E有两种实现ҎQ分别是l承ThreadcM实现Runnable接口
同步的实现方面有两种Q分别是synchronized,wait与notify
5、承时候类的执行顺序问?一般都是选择?问你会打印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、内部类的实现方?
{: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
再一个例题:
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?
一.静态内部类可以有静态成员,而非静态内部类则不能有静态成员??A、B ?
?静态内部类的非静态成员可以访问外部类的静态变量,而不可访问外部类的非静态变量;return d1 出错?
?D ?
?非静态内部类的非静态成员可以访问外部类的非静态变量??C 正确
?{案为C、E
7、垃圑֛收机?如何优化E序?
希望大家补上Q谢?
8、float型float f=3.4是否正确?
{?不正。精度不准确,应该用强制类型{换,如下所C:float f=(float)3.4
9、介lJAVA中的Collection FrameWork(包括如何写自q数据l构)?
{: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中的多Ş与承?
希望大家补上Q谢?
12、抽象类与接口?
{:抽象cM接口都用于抽象,但是抽象c?JAVA?可以有自q部分实现Q而接口则完全是一个标?同时有多重承的功能)?
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:~写一个截取字W串的函敎ͼ输入Z个字W串和字节数Q输Zؓ按字节截取的字符丌Ӏ?但是要保证汉字不被截半个Q如“我ABC?Q应该截为“我AB”,输入“我ABC汉DEF”,6Q应该输Zؓ“我ABC”而不是“我ABC+汉的半个”?/font>
{:代码如下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:
request 用户端请求,此请求会包含来自GET/POSTh的参?
response |页传回用户端的回应
pageContext |页的属性是在这里管?
session 与请求有关的会话?
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与静态INCLUDE的区别?
{:动态INCLUDE用jsp:include动作实现
<jsp:include page="included.jsp" flush="true" />它L会检查所含文件中的变化,适合用于包含动态页面,q且可以带参?
静态INCLUDE用include伪码实现,定不会检查所含文件的变化Q适用于包含静态页?
<%@ include file="included.htm" %>
4、两U蟩转方式分别是什?有什么区?
{:有两U,分别为:
<jsp:include page="included.jsp" flush="true">
<jsp:forward page= "nextpage.jsp"/>
前者页面不会{向include所指的面Q只是显C늚l果Q主面q是原来的页面。执行完后还会回来,相当于函数调用。ƈ且可以带参数.后者完全{向新面Q不会再回来。相当于go to 语句?
Servlet斚w
1、说一说Servlet的生命周?
{?servlet有良好的生存期的定义Q包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroyҎ表达。?br />
2、Servlet版本?忘了问的是哪两个版本?的不?
希望大家补上Q谢谢?br />
3、JAVA SERVLET API中forward() 与redirect()的区别?
{?前者仅是容器中控制权的转向Q在客户端浏览器地址栏中不会昄{向后的地址Q后者则是完全的跌{Q浏览器会得到跌{的地址Qƈ重新发送请求链接。这P从浏览器的地址栏中可以看到跌{后的链接地址。所以,前者更加高效,在前者可以满需要时Q尽量用forward()ҎQƈ且,q样也有助于隐藏实际的链接。在有些情况下,比如Q需要蟩转到一个其它服务器上的资源Q则必须使用sendRedirect()Ҏ。?br />
4、Servlet的基本架?/font>
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response) throws
ServletException, IOException {
}
}
Xml斚w
1、xml有哪些解析技?区别是什?
{?有DOM,SAX,STAX{?
DOM:处理大型文g时其性能下降的非常厉実뀂这个问题是由DOM的树l构所造成的,q种l构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随问SAX:不现于DOM,SAX是事仉动型的XML解析方式。它序dXML文gQ不需要一ơ全部装载整个文件。当遇到像文件开_文档l束Q或者标{ּ头与标签l束Ӟ它会触发一个事Ӟ用户通过在其回调事g中写入处理代码来处理XML文gQ适合对XML的顺序访?
STAX:Streaming API for XML (StAX)
2、你在项目中用到了xml技术的哪些斚w?如何实现?
{?用到了数据存贮,信息配置两方面。在做数据交换^台时Q将不能数据源的数据l装成XML文gQ然后将XML文g压羃打包加密后通过|络传送给接收者,接收解密与解压羃后再同XML文g中还原相关信息进行处理。在做Y仉|时Q利用XML可以很方便的q行QY件的各种配置参数都存贮在XML文g中?
设计模式斚w
1、开发中都用C那些设计模式?用在什么场?
{:每个模式都描qC一个在我们的环境中不断出现的问题,然后描述了该问题的解x案的核心。通过q种方式Q你可以无数ơ地使用那些已有的解x案,无需在重复相同的工作。主要用CMVC的设计模式。用来开发JSP/Servlet或者J2EE的相兛_用。简单工厂模式等?
2、UML斚w 有哪五种图视
{:标准建模语言UML。用例图,静态图(包括cd、对象图和包?,行ؓ?交互?序?合作?,实现?
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>
{:LINUX实现的就是基于核心轻量q程?一对一"U程模型Q一个线E实体对应一个核心轻量q程Q而线E之间的理在核外函数库中实现?
GDIcMؓ囑փ讑֤~程接口cd?br />
变态试题集
1。变态指?4
int x=4;
System.out.println("value is " +((x>4)?99.9:9));
{案 9.0 问号表达式的后面两个条g有要?因ؓ前面的是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 {}
{案 ~译不通过,
不知道出题h的意?/font>
3.变态指?6
String s=new String("abc");
创徏了几个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因ؓ向上转型?最后导致类型不匚w错误 ,
因ؓs1?=是一个操作符Q能够自动{?
short s1 = 1;
s1 = s1+1;q句话在c++里面可以?
不知道出题h的意?/font>
6.变态指?9
上v贝尔的面试题:你认为效率最高的Ҏ,实现?加到100.
{案 1-100的篏加相当于?0?01Q这样@环次C100ơ降?0ơ:
int sun = 0
for(int i = 1,j = 100 ; i <= 50 ; i++,j--){
sun = sun + i + j;
}
出题子有问题,直接(1+100)*50不是最?..其实cMq样的优化应该不是程序员考虑的范畴吧
7.变态指?10
System.out.println(5.0942*1000);
System.out.println(5.0943*1000);
System.out.println(5.0944*1000);的结?br />{案 :5094.2 5094.299999999999 5094.400000000001
原理和QҎ的计机表示方式有关 ,你不用上?q对了,你最好去微Y,接替安d森.
q是好友面试的一道题Q其实我知道使用的区别,StringBuffer必须new出来QStringBuffer的append的效率比string?=的效率高Q?BR>其实发现q有很大的区别,看了看以前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传|复制了g递过去;可变的(ObjectQ传|复制了引用传递过厅R?
而题目中W七行text = text.append (“C?QappendҎ会改变text中的?BR>而这个text与main中的textBuffer是指向同一个对象,所以对应的输出是javac?BR>string的值永q不会改变!
String a = "a";//假设a指向地址0x0001Q?BR>a = "b";//重新负值后a指向地址0x0002Q但0x0001地址中保存的"a"依旧存在Q但已经不再是a所指向的?BR>从表面上看Stringcd的对象改变了|但事实是他不能改变|只能改变指向的地址
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个ҎQ因此这个方法就来自Objectc,
而ObjectcM的equalsҎ是用来比较地址的,所以等于false.
StringcM重新定义了equalsq个ҎQ而且比较的是|而不是地址。所以会?BR>true?BR>对于q样能不能面试出真正的水qI感到怀疑?/P>