1. Java基础
1.Math.round(11.5) 等于多少? Math.round(-11.5)等于多少? 【基础】
答:Math.round(11.5)12 Math.round(-11.5)-11 round 方法返回与参数最接近的长整数,参数加1/2 后求其floor。
2.swtich 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上? 【基础】
答:switch(expr1)中,expr1 是一个整数表达式。因此传递给switch 和case语句的参数应该是int、short、char 或者byte。long,string 都不能作用于swtich。
3.有没有length()这个方法? String 有没有length()这个方法?【基础】
答:数组没有length()这个方法,有length 的属性。String 有length()这个方法。
4.是否可以继承String 类? 【基础】
答:String 类是final 类,故不可以继承。
5.当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递? 【基础】
答:是值传递。Java 编程语言只有值传递参数。当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的。
6.String, StringBuffer StringBuilder 的区别。【基础】
答:String 的长度是不可变的;StringBuffer 的长度是可变的,如果你对字符串中的内容经常进行操作,特别是内容要修改时,那么使用StringBuffer,如果最后需要String,那么使用StringBuffer 的toString()方法;线程安全;StringBuilder 是从JDK 5 开始,为StringBuffer 该类补充了一个单个线程使用的等价类;通常应该优先使用StringBuilder 类,因为它支持所有相同的操作,但由于它不执行同步,所以速度更快。
7.Overload 和Override 的区别。Overloaded 的方法是否可以改变返回值的类型? 【基础】
答:1.方法的重写Overriding 和重载Overloading 是Java 多态性的不同表现。(重写Overriding 是父类与子类之间多态性的一种表现,重载Overloading 是一个类中多态性的一种表现。)
2.如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写(Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被“屏蔽”了。
(重写:子类实现父类的方法;方法名参数相同;访问修饰符不低于父类;返回类型以及抛出异常是父类的子类)
(重载:同一类中;方法名相同参数列表不同;)
8.描述一下JVM 加载class 文件的原理机制? 【基础】
答:JVM 中类的装载是由ClassLoader 和它的子类来实现的,Java ClassLoader是一个重要的Java 运行时系统组件。它负责在运行时查找和装入类文件的类。
9.abstract class 和interface 有什么区别? 【基础】
答:1)声明方法的存在而不去实现它的类被叫做抽象类(abstract class)。
抽象类包含:抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。(其可以有非抽象的方法)
抽象类必须被继承,才能被使用。
然而可以创建一个变量,其类型是一个抽象类,它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。接口(interface)是抽象类的变体。新型多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的,所有成员变量都是publicstatic final 的。一个类可以实现多个接口,当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。