现在的位置: 首页 > 综合 > 正文

面试的问题

2013年06月22日 ⁄ 综合 ⁄ 共 2873字 ⁄ 字号 评论关闭
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接口

抱歉!评论已关闭.