zoukankan      html  css  js  c++  java
  • 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三者的区别可以通过下图展示出来:


  • 相关阅读:
    LeetCode "Super Ugly Number" !
    LeetCode "Count of Smaller Number After Self"
    LeetCode "Binary Tree Vertical Order"
    LeetCode "Sparse Matrix Multiplication"
    LeetCode "Minimum Height Tree" !!
    HackerRank "The Indian Job"
    HackerRank "Poisonous Plants"
    HackerRank "Kundu and Tree" !!
    LeetCode "Best Time to Buy and Sell Stock with Cooldown" !
    HackerRank "AND xor OR"
  • 原文地址:https://www.cnblogs.com/jessonlv/p/4387991.html
Copyright © 2011-2022 走看看