Java程序员面试必备知识:基础到高级

5星 · 超过95%的资源 需积分: 10 11 下载量 187 浏览量 更新于2024-09-19 收藏 508KB DOC 举报
"Java程序员面试宝典2011最新出炉,涵盖了Java基础、JavaWeb、JavaEE、数据库、算法和数据结构等多个方面的面试题目,旨在帮助Java软件工程师准备笔试和面试。" 以下是对这些知识点的详细说明: 1. Java源文件与类的关系:一个`.java`源文件可以包含多个类,但只能有一个公开类(public class),其他类可以是非公开类(如private或包访问类)。 2. `goto`关键字:Java中没有`goto`关键字,它采用更安全的控制流语句,如`break`、`continue`和`return`。 3. `&`与`&&`的区别:`&`是逻辑与运算符,无论两侧表达式是否为真都会计算;而`&&`是短路与运算符,只有当左侧为真时才会计算右侧。 4. 跳出多重嵌套循环:使用`break`语句可以跳出最内层循环,配合标签(label)可以跳出特定层次的循环。 5. `switch`语句:在Java 7及之前,`switch`不能作用于`byte`、`long`和`String`,但从Java 7开始,可以作用于`String`,但仍然不能用于`long`。 6. `short`类型的变量赋值:`short s1 = 1; s1 = s1 + 1;`会丢失精度,因为加法结果会转换为`int`。而`s1 += 1;`编译器会自动处理类型提升,避免丢失精度。 7. `char`存储中文字符:`char`可以存储单个Unicode字符,包括中文汉字。 8. 计算2乘以8:`2 << 3`是最有效率的方式,利用位移操作。 9. 设计大整数计算器:需要考虑大整数的表示和运算,例如使用字符串存储,然后实现加减乘除的算法。 10. `final`关键字:`final`修饰的变量,其引用一旦赋值后不能改变,但如果是引用类型,被引用的对象内容是可以改变的。 11. `==`与`equals`的区别:`==`比较基本类型值的相等,引用类型比较的是内存地址是否相同;`equals`方法用于对象的相等性比较,一般需要重写以实现自定义比较逻辑。 12. 静态变量与实例变量:静态变量属于类,所有实例共享;实例变量属于对象,每个实例有自己的副本。 13. 从`static`方法调用非`static`方法:不允许直接调用,因为`static`方法与对象无关,无法访问对象相关的非`static`成员。 14. `Integer`与`int`:`Integer`是`int`的包装类,用于对象化整数;`int`是基本类型,性能更高,但不支持自动装箱拆箱。 15. `Math.round()`:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 16. 代码不妥之处:可能涉及到类型转换、数组越界、空指针异常等问题。 17. 作用域的区别:`public`全局可见,`private`仅限类内部,`protected`允许同包及子类访问,无修饰符则为包访问权限。 18. `Overload`与`Override`:`Overload`是重载,方法名相同但参数列表不同;`Override`是重写,子类方法覆盖父类方法,要求方法名、参数列表和返回类型完全一致。 19. 构造器不可被`override`,但可以被重载。 20. 接口与接口继承、抽象类与接口:接口可以继承接口,抽象类可以实现接口,但不能继承具体类。静态`main`方法在抽象类中可以存在,但不会作为程序入口。 21. `clone()`方法:通常包含`super.clone()`以创建对象的浅复制。 22. 面向对象的特征:封装、继承、多态。 23. 多态机制:通过接口或继承实现,子类对象可以被视为父类类型,调用父类中的方法。 24. `abstract class`与`interface`:`abstract class`可以有非抽象方法和字段,可以有构造器,可以实现多继承;`interface`只能有抽象方法和常量,不能有构造器,支持多继承。 25. `abstract`、`static`、`native`、`synchronized`的组合:`abstract`不能与`static`、`native`一起使用,因为它们代表不同的概念;`synchronized`可以与`abstract`和`native`一起使用。 26. 内部类:定义在类内部的类,分为静态内部类(StaticNestedClass)和非静态内部类(InnerClass)。静态内部类与普通类相似,非静态内部类可以访问外部类的私有成员。 27. 内部类与外部类成员:内部类可以直接访问外部类的所有成员,包括私有成员,但外部类不能直接访问内部类的私有成员,需要通过内部类实例。 28. 匿名内部类:没有名字的内部类,常用于实现接口或继承其他类,提供简洁的代码实现。