浙江网新恒天面试

    技术2026-09-01  2

    最好要会英文口语

     

    面试时会问到:

    (1)Threadlocal的了解

    http://blog.csdn.net/qjyong/archive/2008/03/08/2158097.aspx

     

    笔试中考的比较多的

    (2)基础(线程,静态变量的使用)

     

    (3)单例模式

    public class Singleton{

       private Singleton(){}

       private static Singleton instance = new Singleton();

       public static Singleton getInstance(){

          return instance;

       }

    }

     

    (4)两个list,放的都是Integer,里面的数据从小到大排列。现放把两个合并到一个list中,按照从小到大排列。写出你认为的最快的方法。

    1、

    package test;

    import java.util.ArrayList;import java.util.List;

    public class Test {  public List MergeList(List list1,List list2){    List mList = new ArrayList();  int j = 0;  for(int i = 0;i < list1.size(); i++){   for (; j < list2.size(); j++) {    if ((Integer)list1.get(i) < (Integer)list2.get(j)) {     mList.add(list1.get(i));     break;    } else {     mList.add(list2.get(j));    }   }  }  if(j != (list2.size()-1)){   for(; j < list2.size(); j++){    mList.add(list2.get(j));   }  }  return mList; } public static void main(String[] args) {  Test test = new Test();  List list1 = new ArrayList();  List list2 = new ArrayList();  list1.add(0, 12);  list1.add(1, 23);  list1.add(2, 45);  list1.add(3, 56);  list2.add(0, 11);  list2.add(1, 24);  list2.add(2, 67);  list2.add(3, 78);  long a=System.currentTimeMillis();  System.out.println(test.MergeList(list1,list2).toString());  System.out.println("/r<br>执行耗时 : "+(System.currentTimeMillis()-a)); }}

    2、

    package test;

    import java.util.ArrayList;import java.util.List;

    public class Test1 {

     public List MergeList(List list1, List list2) {

      List mList = new ArrayList();  int j = 0;  if((Integer) list1.get(list1.size()) > (Integer) list2.get(list2.size())){   for (int i = 0; i < list1.size(); i++) {    for (; j < list2.size(); j++) {     if ((Integer) list1.get(i) < (Integer) list2.get(j)) {      mList.add(list1.get(i));      break;     } else {      mList.add(list2.get(j));     }    }   }  }else{   for (int i = 0; i < list2.size(); i++) {    for (; j < list1.size(); j++) {     if ((Integer) list2.get(i) < (Integer) list1.get(j)) {      mList.add(list2.get(i));      break;     } else {      mList.add(list1.get(j));     }    }   }  }  return mList; }

     /**  * @param args  */ public static void main(String[] args) {  // TODO Auto-generated method stub  Test test = new Test();  List list1 = new ArrayList();  List list2 = new ArrayList();  list1.add(0, 12);  list1.add(1, 23);  list1.add(2, 45);  list1.add(3, 56);  list2.add(0, 11);  list2.add(1, 24);  list2.add(2, 67);  list2.add(3, 78);  long a=System.currentTimeMillis();  System.out.println(test.MergeList(list1, list2).toString());  System.out.println("/r<br>执行耗时 : "+(System.currentTimeMillis()-a)); }

    }

    这两个我想到的,如果有更好的,希望哪位大侠可以提供下,小弟在这里先谢谢了。

     

    (5)HashMap和Hashtable的区别

    二者都实现了Map接口,是将惟一键映射到特定的值上;

    主要区别:

    (1)HashMap没有排序,允许一个null键和多个null值,而Hashtable不允许;

    (2)HashMap把Hashtable的contains方法去掉了,改成containsValue和containsKey,因为contains方法容易让人引起误解;

    (3)Hashtable继承自Dictionary类,HashMap是Java1.2引进的Map接口的实现;

    (4)Hashtable是Synchronize的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为之提供外同步。

    Hashtable和HashMap采用的hash/rehash算法大致一样,所以性能不会又很大差异。

     

    (6)JDBC连接

    1、

    public void add() throws Exception(){

       String url = "jdbc:mysql://localhost:3306/test";

       String user = "root";

       String password = "123456";

       Connection con = null;

       Statement stmt = null;

       try{

          Class.forName("com.myslq.jdbc.Driver");

          con = DriverManager.getConnection(url,user,password);

          stmt = con.createStatement();

          String sql = "insert into user values(1111,'123',12)";

          stmt.execute(sql);

       }finally{

          stmt.close();

          con.close();

       }

    }

    2、

    public class JDBC(){

       public static Connection getConnection(){

          String url = "jdbc:mysql://127.0.0.1:3306/test";

          String user = "root";

          String password = "123456";

          try{

             Class.forName("com.mysql.jdbc.Driver");

             return DriverManager.getConnection(url,user,password);

          }catch(ClassNotFoundException e){

             //TODO 找不到驱动

          }catch(SQLException e){

             //TODO 创建连接异常

          }

          return null;

       }

     

       public void get() throws SQLException(){

          String sql = "SELECT id,name FROM user WHERE id=?";

          PreparedStatement pstmt = null;

          Connection con = getConnection();

          try{

             pstmt = con.prepareStatement(sql);

             pstmt.setInt(1,1212);

             ResultSet rs = pstmt.executeQuery();

             while(rs.next()){

                System.out.print(rs.getString("id"));

                System.out.print(":");

                System.out.print(rs.getString("name") + "/r/n");

             }

             rs.close();

             pstmt.close();

          }finally{

             try{

                con.close();

             }catch(SQLException e){

                e.printStackTrace();

             }

          }

       }

    }

     

    (7)什么时候用抽象类和接口类

    接口就跟U盘的USB接口一样,可以插拔。。当你要完成一个功能的时候,两个事物联系不大,可以用接口。抽象类着重继承关系。如果两个东西可以看成继承关系,用抽象类。你要弄一个有警报器的门。你可以定义一个抽象door类,门有close和open的方法。也定义到这个抽象类里。但这个警报器,跟门一般关系不大。。所以,你可以用接口.然后这个带警报器的门就可以是继承door这个类并实现警报器接口。--摘自百度问答

     

    (8)事务是什么或你怎么理解事务

    事务是由相关操作构成的一个完整的操作单元。两次连续成功的COMMIT或ROLLBACK之间的操作,称为一个事务。在一个事务内,数据的修改一起提交或撤销,如果发生故障或系统错误,整个事务也会自动撤销。

     

    附加:hibernate延迟加载什么时候用到

    比如部门ENTITY和员工ENTITY,部门与员工1对多,如果lazy设置为 false,那么只要加载了一个部门的po,就会根据一对多配置的关系把所有员工的po也加载出来。但是实际上有时候只是需要用到部门的信息,不需要用到员工的信息,这时员工po的加载就等于浪费资源。如果lazy设置为true,那么只有当你访问部门po的员工信息时候才回去加载员工的po的信息。

    最新回复(0)