陈高杰

kingaragorn

常用链接

统计

最新评论

J2EE面试题集锦

J2EE面试题集锦(附答案)
http://www.ad0.cn/netfetch/read.php/369.htm
一、基础问答
1、下面哪些类可以被继承?
java.lang.Thread(T)               reason:   public class Thread extends Object implements Runnable
java.lang.Number(T)                           public abstract class Number extends Object implements Serializable
java.lang.Double(F)                             public final class Double extends Number implements Comparable
java.lang.Math(F)                                public final class Math extends Object
java.lang.Void(F)                                 public final class Void extends Object
java.lang.Class(F)                                public final class Class extends Object implements Serializable
java.lang.ClassLoader(T)                      public abstract class ClassLoader extends Object
总之一句话:
加了final后,表示自己被阉割了,成了太监,但是太监也有父母啊。

2、抽象类和接口的区别
(1)   接口可以被多重implements,抽象类只能被单一extends
(2)   接口只有定义,抽象类可以有定义和实现
(3)   接口的字段定义默认为:public static final,抽象类字段默认是friendly(本包可见)

3、Hashtable的原理,并说出HashMap与Hashtable的区别
Hashtable的原理:通过节点的关键码确定节点的存储位置,即给定节点的关键码k,通过一定的函数关系H(散列函数),得到函数值H(k),将此值解释为该节点的存储地址。
Java.util.Hashtable与HashMap作用基本相同,也实现了Map接口,采用哈希表的方式将"键"映射到相应的"值"。
Hashtable与HashMap的区别:
a、Hashtable中元素的键和值均不允许为null,而HashMap则允许。
b、Hashtable是同步的,即线程安全的,效率相对要低一些,适合在多线程环境下使用;而HashMap是不同步的,效率相对高一些,提倡在单线程环境中使用。
Hashtable与HashMap的用法格式完全相同。

4、XML的解析方法
Sax、DOM,JDOM

5、什么是Web Service?
Web Service就是为了是原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows、Linux)中使用。

6、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么?
多线程有两种实现方法,分别是继承Thread和实现Runnable接口
同步的实现方法有两种,分别是synchronized,wait与notify

二、Java编程与程序运行结果

1、用Java实现打印昨天的当前时刻

import java.util.Calendar;

public class YesterdayCurrent {
    public static void main(String args[]) {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.DATE, -1);
        System.out.println(cal.getTime());
    }
}

运行结果:
Thu Jul 10 20:28:01 CST 2008

2、指出下面程序的运行结果
class A {
    static {
        System.out.print("1");
    }

    public A() {
        System.out.print("2");
    }
}

class B extends A {
    static {
        System.out.print("a");
    }

    public B() {
        System.out.print("b");
    }
}

public class Hello {
    public static void main(String[] ars) {
        A ab = new B(); //执行到此处,结果: 1a2b
        ab = new B(); //执行到此处,结果: 1a2b2b
    }
}
注:类的static 代码段,可以看作是类首次加载(被虚拟机加载)执行的代码,而对于类的加载,首先要执行其基类的构造,再执行其本身的构造

3、
写一个Singleton模式的例子
public class Singleton {
    private static Singleton single = new Singleton();

    private Singleton() {
    }

    public Singleton getInstance() {
        return single;
    }
}

4、写一段Jdbc连Oracle的程序,并实现数据查询
import java.sql.*;
public class Jdbc {

    String dbUrl = "jdbc:oracle:thin:@127.0.0.1:1521:test";
    String theUser = "user";
    String thePw = "password";
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
   
    public Jdbc() {
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
            conn = DriverManager.getConnection(dbUrl, theUser, thePw);
            stmt = conn.createStatement();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
   
    public boolean executeUpdate(String sql) {
        try {
            stmt.executeUpdate(sql);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
   
    public ResultSet executeQuery(String sql) {
        try {
            rs = stmt.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }
   
    public void close() {
        try {
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
   
    public static void main(String [] args) {
        ResultSet rs;
        Jdbc stmt = new Jdbc();
        rs = stmt.executeQuery("select * from TBL_CLASS_TREES");
        try {
            while(rs.next()) {
                System.out.println(rs.getString("VEST_AREA_ID"));
                System.out.println(rs.getString("CLASS_NAME"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

下面是使用MySQL

import java.sql.*;
public class Jdbc {

    String dbUrl = "jdbc:mysql://localhost:3306/chapter13?useUnicode=true&characterEncoding=gb2312";
    String theUser = "root";
    String thePw = "";
    Connection conn = null;
    Statement stmt = null;
    ResultSet rs = null;
   
    public Jdbc() {
        try {
            Class.forName("org.gjt.mm.mysql.Driver");
            conn = DriverManager.getConnection(dbUrl, theUser, thePw);
            stmt = conn.createStatement();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }
   
    public boolean executeUpdate(String sql) {
        try {
            stmt.executeUpdate(sql);
            return true;
        } catch (SQLException e) {
            e.printStackTrace();
            return false;
        }
    }
   
    public ResultSet executeQuery(String sql) {
        try {
            rs = stmt.executeQuery(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return rs;
    }
   
    public void close() {
        try {
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
   
    public static void main(String [] args) {
        ResultSet rs;
        Jdbc stmt = new Jdbc();
        rs = stmt.executeQuery("select * from users");
        try {
            while(rs.next()) {
                System.out.println(rs.getString("UserID"));
                System.out.println(rs.getString("UserName"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}


posted on 2008-07-11 19:54 陈高杰 阅读(74) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: