Java面试必备知识:基础篇

需积分: 9 0 下载量 116 浏览量 更新于2024-07-26 收藏 593KB DOC 举报
"Java面试宝典2012版,主要涵盖了Java编程语言的基础知识、语法特性、面向对象概念、类与对象、接口、多态性、内存管理等多个方面的面试常见问题。" Java面试宝典2012版中包含了众多Java编程语言的关键知识点,这些知识点对于理解和掌握Java技术至关重要,同时也是面试官考察应聘者技术水平的常见问题。以下是对部分知识点的详细解释: 1. Java源文件中的类限制:一个`.java`源文件可以包含多个类,但只能有一个公开的类(public class),且这个公开类的名称必须与文件名相同。 2. `goto`关键字:Java中没有`goto`关键字,这与其他一些编程语言不同,如C和C++。 3. `&`与`&&`的区别:`&`是逻辑与运算符,无论两侧条件如何都会执行;而`&&`是短路与运算符,当左侧表达式为假时,右侧表达式不会执行。 4. 跳出多重嵌套循环:在Java中,可以使用`break`语句跳出最内层循环,配合标签(label)可以跳出特定层循环。 5. `switch`语句的适用类型:`switch`语句可以作用在`byte`, `short`, `char`, `int`以及枚举类型上,Java 7以后还支持`String`类型。 6. `short`变量加法问题:直接使用`s1=s1+1`会导致数据溢出,因为表达式会先提升到`int`类型,应使用`s1+=1`,这样会自动转换回`short`类型。 7. `char`型存储中文:可以存储中文,因为`char`在Java中占用两个字节,足够表示一个中文字符。 8. 效率计算2乘以8:最简单的方式是`2 << 3`,这是位左移操作,等同于乘以2的3次方。 9. 设计大整数计算器:需要考虑大整数的存储和运算,可能需要用到BigInteger类。 10. `final`关键字:修饰变量时,如果是基本类型,其值不可变;如果是引用类型,引用不可变,但引用的对象内容可能可变。 11. `==`与`equals`的区别:`==`比较的是变量的值,而`equals`比较的是对象的内容。对于基本类型,两者效果相同;对于对象,`equals`需要重写以达到预期的比较效果。 12. 静态变量与实例变量:静态变量属于类,所有类实例共享;实例变量属于每个实例对象,每创建一个对象,实例变量都会有一份拷贝。 13. 从静态方法中调用非静态方法:不允许直接调用,因为静态方法不依赖于任何实例对象,而非静态方法需要对象实例才能调用。 14. `Integer`与`int`的区别:`Integer`是包装类,`int`是基本类型,`Integer`对象可以作为引用类型处理,支持一些额外的方法,如自动装箱拆箱。 15. `Math.round()`方法:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 代码不妥之处:可能是指未初始化的变量、异常处理缺失或类型转换错误等。 17. 访问修饰符的区别:`public`表示公共访问,可以在任何地方访问;`private`表示私有访问,仅在类内部可访问;`protected`表示保护访问,类内部及子类和同一包内的类可访问;默认(无修饰符)则限制在同一包内访问。 18. `Overload`与`Override`:`Overload`是方法重载,允许方法名相同但参数列表不同的多个方法;`Override`是方法覆盖,用于子类重写父类的已定义方法。 19. 构造器`Constructor`不可被`override`,但可以重载。 20. 接口与抽象类:接口不能包含实现方法,只定义方法签名;抽象类可以包含实现方法。接口可以继承接口,抽象类可以实现接口,但不能继承具体类(除非是Java 8的匿名类特殊情况)。 21. `clone()`方法:通常需要调用`super.clone()`以完成浅复制。 22. 面向对象特征:封装、继承、多态。 23. 多态机制:通过方法的重写(Override)和向上转型(Upcasting)实现,使得子类对象能够被父类引用,调用子类特有的方法。 24. `abstract class`与`interface`区别:抽象类可以包含方法实现,可以有构造器,可以有非抽象方法,但接口只能定义方法签名,不能包含方法实现,没有构造器。 25. `abstract`与`static`, `native`, `synchronized`组合:`abstract`方法不能是`static`或`native`,也不能是`synchronized`。 26. 内部类:类的内部可以定义其他类,分为静态嵌套类(Static Nested Class)和非静态嵌套类(Inner Class)。静态嵌套类不依赖于外部类的实例,而内嵌类需要外部类实例。 27. 内部类与外部类成员:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员。 28. 匿名内部类:没有名字的内部类,通常用于快速创建一次性的、简洁的类实例。 以上只是部分知识点的概述,实际面试中可能需要深入理解并能灵活应用这些概念。