java面试题

最近总结了一下Java的面试题

jessonlv--吕国栋原创文章,转载请注明出处:http://blog.csdn.net/jessonlv

1、面向对象的特征
抽象、封装、继承、多态性
2、String和StringBuffer、StringBuilder 的区别
String  字符串常量,每当值改变时就等于新生成了一个对象。
StringBuffer 字符串变量,它在赋值的时候都是对对象本身进行操作,而不是像string一样生成新的对象,
java.lang.StringBuilder一个可变的字符序列是5.0新增的。此类提供一个与 StringBuffer 兼容的 API,但不保证同步。该类被设计用作 
StringBuffer 的一个简易替换,用在字符串缓冲区被单个线程使用的时候(这种情况很普遍)。如果可能,建议优先采用该类,因为在大多数实现
中,它比 StringBuffer 要快。两者的方法基本相同。
3、ArrayList、Vector、LinkedList的存储性能和特性

ArrayList和Vector都是使用数组方式存储数据,ArrayList数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。

4、Abstract class 和 interface 的区别
interface被继承时用的关键字是implements,而且可以同时implements多个interface,而abstract class被继承时用的关键字是extends,而且只能同时extends一个abstract class。 
interface内定义的方法都是public的,而abstract class内的则不一定。 
interface内定义的成员对象都是static & final的,而abstract class不是 
interface的方法不能有默认实现,只有一个申明,而abstract class内申明abstract的方法不能有实现,非申明abstract的方法可以有默认实现。 
interface被implements时,所有方法都必须被实现,必须申明是public的,而abstract class被extends时只有abstract的方法才必须被实现,别的有默认实现的直接被继承过来
5、heap 和 stack 的区别
引用网上广泛流传的“Java堆和栈的区别”里面对堆和栈的介绍;
          "Java 的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。"
        “栈的优势是,存取速度比堆要快,仅次于寄存器,栈数据可以共享。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量(,int, short, long, byte, float, double, boolean, char)和对象句柄。 ”
6、table标签的 border、cellpadding td标签的 colspan 和rowspan分别什么作用
border 边框   cellpadding 内边距   colspan  单元格横跨的列数  rowspan:规定单元格可横跨的行数
7、js的三种消息弹出提醒  警告  确认  信息输入
alert()   confirm() prompt()
8、编写一个方法,求一个字符串的字节长度
    由于Java是基于Unicode编码的,因此,一个汉字的长度为1,而不是2。但有时需要以字节单位获得字符串的长度。例如,“123abc长城”按字节长度计算是10,而按Unicode计算长度是8。为了获得10,需要从头扫描根据字符的Ascii来获得具体的长度。如果是标准的字符,Ascii的范围是0至255,如果是汉字或其他全角字符,Ascii会大于255。因此,可以编写如下的方法来获得以字节为单位的字符串长度。

public int getWordCount(String s){
        int length = 0;
        for(int i = 0; i < s.length(); i++)
        {
            int ascii = Character.codePointAt(s, i);
            if(ascii >= 0 && ascii <=255)
                length++;
            else
                length += 2;
                
        }
        return length;
        
    }


当然,也可以采用正则表达式来简化上面的方法,代码如下:
  public  int getWordCount(String s)
    {


        s = s.replaceAll("[^\\x00-\\xff]", "**");
        int length = s.length();
        return length;
    }


9、谈谈 innerHTML、outerHTML、innerText 之间的区别

outerHTML包括整个标签,而不仅限于标签内部的内容。对于一个id为"testdiv"的div来说,outerHTML、innerHTML以及innerTEXT三者的区别可以通过下图展示出来:


posted @ 2014-02-27 16:11  jessonlv  阅读(233)  评论(0编辑  收藏  举报