1.Static Nested Class 和 Inner Class的不同
Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。
Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。
注: 静态内部类(Inner Class)意味着
a.创建一个static内部类的对象,不需要一个外部类对象,
b不能从一个static内部类的一个对象访问一个外部类对象
2.用最高效的算法算出 x*8 =?
应该是用移位算法吧 x<<3
(移位能为我们实现整数除以或乘以2的n次方的效果,如:x>>1的结果和x/2的结果是一样的,
x<<2和x*4的结果也是一样的。总之,移个数左移n位,就等于这个数乘以2的n次方,一个数右移n位,
就等于这个数除以2的n次方)
3.请说出Servlet的生命周期
Servlet生命周期:以下是一个服务器调用servlet的过程。
(1), 在服务器启动时,当servlet被客户首次请求或被配置好,这时由服务器加载servlet.
Servlet的加载可以通过合用一个自定义的Java类加载工具(可允许自动Servlet重载)从本地或远程地址来实现.
这一步等同于Class c = Class.forName(“com.sourceStream.MyServlet”);
这里用的术语加载指同时加载和初始化servlet的过程。
(2).服务器创建一个servlet类实例来为所有请求服务。利用多线程,可以由单个servlet实例来服务于并行的请求。惟五的例外是,因为实现SingleThreadModel接口的servlet,这样,服务器会创建一个实例池并从中选择一个来服务于每一新的请求。此步相当于以下java代码:
Servlet s = (Servlet)c.newInstance();
(3). 服务器调用Servlet的init()方法。它用来保证完成在首次请求servlet处理以前的执行过程。如果servlet创建了多个servlet实例,则为每个实例调用一次init()方法。
(4).服务器从包括在客户请求中的数据里构造一个ServletRequest或HttpServletRequest对象,还构造一个ServletResponse或HttpServletResponse对象来返回响应提供方法。
其参数类型依赖于servlet是否分别扩展GenericServlet或HttpServlet.
(注意:如果服务器没有收到对这一servlet的请求,此步骤与以下5---7步骤将不会发生。)
(5).服务器调用servlet的service()方法(对于Httpservlet,service()将调用更为具体的方法:如:doGet() 或doPost()),在此步骤中作为参数传递结构化对象。
当并行的请求到来时,多个service()方法能够同时运行在独立的线程中。
(除非servlet实现了SingleThreadModel接口)
(6).通过分析ServletReuest或HttpServletRequest对象。Service()方法处理客户的请求.并调用ServletResponse或HttpServletResponse对象来响应。
(7).如果服务器收到另一胩对该servlet的请求,这个处理过程从5步骤重复。(8).一旦servlet容器检测到一个servlet要被卸载,这可能是因为要回收资源或因为它正在被关闭,
服务器会在所有servlet的service()线程完成之后(或在服务器规定时间后)调用servlet的destroy()方法。
然后servlet就可以进行无用存储单元收集清理。
Servlet容器不需要为保留一个servlet而指定时间。
4.用Servlet向数据库提交一条插入语句;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;public class OrderHandler extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse res)
throws ServletException,IOException{
res.setContentType("text/plain");
PrintWriter out = res.getWriter();
Connection con = null;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
con = DriverManager.getConnection("jdbc:odbc:ordersdb","user","passwd");
con.setAutoCommit(false);
Statement stmt = con.createStatement();
stmt.executeUpdate("Insert into mytable values(1,2,3)");
con.commit();
out.println("Successful!");
}
catch(Exception e){
try{
con.rollback();
}catch(SQLException ignored){}
out.println("Order failed.")
}
finally{
try{
if(con!=null)con.close();
}
catch(SQLException ignored){}
}
}
}
5.用javascript写出当天的日期
<script language ="JavaScript" type="text/JavaScript">
function dateexample(){
today = new date();
document.wirte("今天是: ")
document.write(today.getYear());
document.write("年");
document.write(today.getMonth() + 1);
document.write("月");
document.write(today.getdate());
document.write("日")
}
</script>
6.用java语句在网页中打印出当前日期
<%!
String gedate(){
String str;
str = new java.util.date.toString();
return str;
}
%>
<%=getdate()%>
7.创建多线程的方法
两种方法:继承Thread类和实现Runnable接口