java工程师面试题积累中...


1、5个常见异常:
    1. Java.lang.NullPointerException   空指针
  2. java.lang.ClassNotFoundException  指定的类不存在
  3. java.lang.ArithmeticException  数学运算异常,好比程序中出现了除以零这样的运算就会出这样的异常
  4. java.lang.ArrayIndexOutOfBoundsException 数组下标越界
    5. java.lang.IllegalArgumentException 方法的参数错误,不少J2ME的类库中的方法在一些状况下都会引起这样的错误
  6. java.lang.IllegalAccessException   没有访问权限

2、Servlet的生命周期是什么:
    一、Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,
    二、service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,
    三、当服务器决定将实例销毁的时候调用其destroy方法。

3、ArrayList,Vector, LinkedList的存储性能和特性:
    ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增长和插入元素。
    它们都容许直接按序号索引元素,可是插入元素要涉及数组元素移动等内存操做,因此索引数据快而插入数据慢,
    Vector因为使用了synchronized方法(线程安全),一般性能上较ArrayList差。
    LinkedList使用双向链表实现存储,按序号索引数据须要进行前向或后向遍历,插入数据时只须要记录本项的先后项便可,插入速度较快。

4、多线程有几种实现方法?同步有几种方法?
    多线程有两种实现方法,分别是继承Thread类与实现Runnable接口。
    实现同步也有两种,一种是用同步方法,一种是用同步块。同步方法就是在方法返回类型后面加上synchronized,
    好比:public void synchronized add(){...}
    同步块就是直接写:synchronized (这里写须要同步的对象){...}
    
5、overload和override有什么区别:
    Overload是重载,是有相同的方法名,但参数类型或个数彼此不一样
    Override是重写,子类与父类中,子类中的方法的方法名,参数个数、类型都与父类中的彻底同样,在子类中覆盖掉了父类的改方法。

6、mysql 语句:
    一、分页查询语句:
        SELECT * FROM tb_goods_info WHERE auto_id >=2500 ORDER BY auto_id ASC LIMIT 0,20
        sql语句意思: LIMIT 0,20  :查询 0+20 行  去除前0行
    二、存储过程:
        create procedure 存储过程名字()
        (
            [in|out|inout] 参数 datatype           ------变量不用加@。直接 b int;   sqlserver须要@
        )
        begin
            MySQL 语句;     -------每条语句后都要加 ;  分号。     sqlserver不须要
        end;
        
        使用:call pr_no_param();
    三、修改列
        alter table 表名 change 列名称 列新名称 新数据类型;
    四、删除列
        alter table 表名 drop 列名称;
    五、分组
        select id ,count(id_id) group by id having count(id_id)>1
    
7、Java集合类框架的基本接口有哪些?
    一、Collection:表明一组对象,每个对象都是它的子元素。
    二、Set:不包含重复元素的Collection。
    三、List:有顺序的collection,而且能够包含重复元素。
    四、Map:能够把键(key)映射到值(value)的对象,键不能重复。
    
8、异常处的时候,finally代码块的重要性
    不管是否抛出异常,finally代码块老是会被执行。并且finally代码块主要用来释放资源,好比:I/O缓冲区,数据库链接。
    
9、Java中equals和==的区别
    基本数据类型也称原始数据类型:byte,short,char,int,long,float,double,boolean 用“==”比较的是他们的值。
    复合数据类型:好比String。 “==”比较的是存储地址。“equals”比较的是值。
        String str1="hello";
        String str2="he"+new String("llo");
        String str3="he"+"llo";
        System.out.println(str1==str2);   //false
        System.out.println(str1==str3);   //true
        
        String a = "hello2";
        final String b = "hello";     变量b被final修饰,所以会被当作编译器常量,在使用到b的地方会直接将变量b 替换为它的值
        String d = "hello";
        String c = b + 2;
        String e = d + 2;
        String f="hello"+2;
        System.out.println((a == c));    //true
        System.out.println((a == e));    //false
        System.out.println((a == f));    //true
    
        http://www.cnblogs.com/zhxhdean/archive/2011/03/25/1995431.html

10、java中final的用法:
    一、当用final修饰一个类时,代表这个类不能被继承。
    二、对于一个final变量,若是是基本数据类型的变量,则其数值一旦在初始化以后便不能更改;
        若是是引用类型的变量,则在对其初始化以后便不能再让其指向另外一个对象。
    三、使用final方法的缘由有两个。第一个缘由是把方法锁定,以防任何继承类修改它的含义;第二个缘由是效率。
        http://www.cnblogs.com/dolphin0520/p/3736238.html
        
11、存在js代码:var str="{name:\"aicai\"}",用多种方法把var 转换成json对象:
    一、function strToJson(str){
            var json = eval('(' + str + ')');
            return json;
        }
    二、function strToJson(str){
            var json = (new Function("return " + str))();
            return json;
        }
    三、function strToJson(str){
            return JSON.parse(str);
        }
        
12、java 中synchronized和java.util.concurrent.locks.lock的做用及异同
    主要相同点:Lock能完成synchronized所实现的全部功能
    主要不一样点:Lock有比synchronized更精确的线程语义和更好的性能。
    synchronized会自动释放锁,而Lock必定要求程序员手工释放,而且必须在finally从句中释放。











html

相关文章
相关标签/搜索