• 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三者的区别可以通过下图展示出来:


  • 相关阅读:
    gojs常用API (中文文档)
    webpack的安装
    win10如何将wps设置成默认应用
    gojs常用API-画布操作
    Access中替代case when的方法 .
    C++ 11 中的右值引用
    形参前的&&啥意思?
    【C语言学习笔记】字符串拼接的3种方法 .
    java项目打jar包
    教你用DrawLayout 实现Android 侧滑菜单
  • 原文地址:https://www.cnblogs.com/jessonlv/p/4387991.html
Copyright © 2020-2023  润新知