zoukankan      html  css  js  c++  java
  • java 面试基础典型题及答案

    1、switch能否作用在byte、int、long、String?
    答案:switch能作用在byte、int、enum常量, 补充:jdk7可以作用在String上


    2、short s = 1; s = s + 1;有什么错? short s = 1; s += 1;有什么错?
    答案: s = s + 1; 在计算右边的表达式时,隐式的将s转换为int,将一个int类型赋值给short出错,必须强制转换,即: s = (short)(s+1); 而s+=1; 编译器会首先将+=后面的1强制转换为+=前面的数据类型。故无错。


    3、char型变量中能不能存贮一个中文汉字?为什么?
    答案: 可以,因为java默认采用unicode编码表示一个字符。


    4、用最有效率的方法算出2乘以8等於几?
    答案: 2<<3 将2左移3位,2的3次方等于8;


    5、使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?
    答案: 引用不能变,而引用对象的值可以改变,
    比如final StringBuffer BUFF = new StringBuffer("123");
    BUFF.append("456"); //打印后是123456的字符串


    6、静态变量和实例变量的区别?
    答案:静态变量又叫类变量,属于类而不是对象,用static关键字修饰;而实例变量属于对象,必须先实例化一个对象后,才能使用实例变量。


    7、是否可以从一个static方法内部发出对非static方法的调用?
    答案: 不能,因为static方法属于类,而非static方法属于实例化对象,静态类方法不知道调用哪个对象的非静态方法。


    8、Math.round(11.5)等於多少? Math.round(-11.5)等於多少?
    答案:12, -11;原因:向最大方向四舍五入。


    9、请说出作用域public,private,protected,以及不写时的区别
    答案:同一个包下的类认为是朋友:friendly。默认为friendly
    public: 当前类、子类、同一包、其他包
    protected: 当前类、子类、同一包
    private: 当前类
    friendly: 当前类、同一包


    10、Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    答案: Overloaded是重载,Override是重写。Overloaded在方法参数列表不同时,可以改变返回值的类型。


    11、构造器Constructor是否可被override?
    答案: Constructor即构造方法,不能被继承,当然不能被重写。


    12、接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
    答案:接口可以被继承,使用extends关键字;抽象类可以实现接口;抽象类可以继承具体类;抽象类中可以有静态main方法,也可以有静态方法。


    13、写clone()方法时,通常都有一行代码,是什么?
    答案: super.clone(); clone即克隆,将一个对象拷贝给另一个对象,这两个对象属于独立的对象,改变其中一个对象,不会改变另一个对象。注意有浅克隆和深克隆之分。


    14、抽象类和接口的区别:
    答案: 1、面向对象中,所有对象都用类来描述,但是并不是所有类都用来描述对象。如果一个类中没有足够的信息来描述具体的对象,我们称之为抽象类。是对一系列看上去不同,但本质相同的具体概念的抽象。
    2、语法上,用abstract class和interface区别,实现分别用extends和implements实现。
    3、抽象类可以有非抽象方法但接口只能有抽象方法
    4、一个类只能继承一个类,但可以实现多个接口。
    5、抽象类中的字段可以不被初始化,但接口中定义字段时必须被初始化。


    15、什么是内部类?Static Nested Class 和 Inner Class的不同。
    答案: 内部类:是定义在类中的类。static nested class(嵌套类)是静态内部类:1、创建嵌套类的对象,并不需要其外部类的对象。 2、不能从嵌套类的对象中访问非静态的外部类对象。


    16、是否可以继承String类?
    答案: 不能,String类是一个final终结类。


    17、String s = new String("xyz");创建了几个String Object? 二者之间有什么区别?
    答案:两个。"xyz"作为一个常量字符串首先被创建,它保存在”常量“区,一旦创建不能修改,因此下次需要一个相同的字符串时,不必创建。引用一个常量串没有任何危险,因为它是只读的。当new String("xyz")调用时,再在堆(heap)中创建一个对象,值为常量区字符串的拷贝。区别:一个在常量池,一个在堆中。


    18、String 和StringBuffer、StringBuilder的区别?
    答案:都不是基本数据类型,都是final类不能被继承。String对象是一个不可变对象,一旦创建不能修改它的值。对于已经存在的String对象修改它的值,会重新创建一个新的对象,然后把新的值保存进去。对String对象的连接操作(+)实际上是会建立一个StringBuffer类对象,然后把字符串添加进去,最后调用toString()方法。 StringBuffer类是一个可变对象,当对它进行修改时不会像String那样重新建立一个对象,调用append()方法即可。 StringBuffer是线程安全的,而Stringbuilder不是线程安全的。所谓线程安全,就是每个修改容器中数据的是同步的,因此保证了线程安全。


    19、如何把一段逗号分割的字符串转换成一个数组?
    答案: 调用String类中的实例方法split(); str.split(",");


    20、数组有没有length()这个方法? String有没有length()这个方法?
    答案: 数组没有length()方法,有一个length字段,String有length()方法。


    21、下面这条语句一共创建了多少个对象:String s="a"+"b"+"c"+"d";
    答案:5个对象,现在常量池创建了"a","b","c","d",4个对象。再在堆中创建了一个"abcd"对象。


    22、try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后?
    答案: finally{}里的代码一定会被执行。return之后执行finally,再执行了return,但是finally修改后的值,return的是修改之前的值。


    23、final, finally, finalize的区别。
    答案:final 用于声明属性,方法和类,分别表示属性不可变,方法不可覆盖,类不可继承。
    finally是异常处理语句结构的一部分,表示总是执行。
    finalize是Object类的一个方法,在垃圾收集器执行的时候会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。


    24、error和exception有什么区别? 
    答案: 相同处:Error类和Exception类都继承自Throwable类。不同处:Exception: 1、可以是可被控制(checked)或不可控制的(unchecked); 2、表示一个有程序员导致的错误。3、应该在应用程序级被处理。Error: 1、总是不可控制的(unchecked); 2、经常用来用于表示系统错误或底层资源错误。 3、如果可能的话,应该在系统级被捕获。


    25、运行时异常与一般异常有何异同?
    答案: 1、一般异常指checked exception: 这类异常都是Exception的子类。异常向上抛出,可能导致的问题:代码效率低,耦合度过高。 2、运行时异常unchecked exception:这类异常都是RuntimeException的子类,虽然RuntimeException同样也是Exception的子类,但是他们是不同的,他们不能通过用户代码来试图解决。


    26、请写出你最常见到的5个runtime exception?
    答案: ClassCastException类型转换异常, ArithmeticException算数运算异常,NullPointerException空指针异常,IndexOutOfBoundsException索引越界异常。


    NegativeArraySizeException负数作为数组大小异常,BufferOverflowException缓冲区溢出异常。
  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/anyuan9/p/6171573.html
Copyright © 2011-2022 走看看