2017 Java面试深度解析,一站式通关指南

需积分: 30 12 下载量 131 浏览量 更新于2024-07-19 收藏 497KB DOC 举报
"这份资料包含了2017年最新的Java面试题大全,涵盖了Java基础知识、算法与编程、前端技术、Java Web、数据库、XML、框架与新技术、软件工程与设计模式、J2EE、EJB、Web服务以及Linux等多个方面,旨在帮助求职者充分准备Java相关职位的面试。" Java面试中的知识点详解: 1. Java基础: - 一个`.java`源文件可以包含多个类,但只能有一个公开的类(public class),其他类可以是非公开的(如private或包访问权限)。 - Java没有`goto`关键字,它鼓励使用结构化编程方式。 - `&`和`&&`的主要区别在于短路逻辑:`&&`只有在左侧表达式为真时才会计算右侧,而`&`总是会计算两边的表达式。 - 跳出多重嵌套循环可以使用`break`配合标签来实现。 2. 数据类型与运算: - `switch`语句不能直接作用于`byte`,`long`,但在Java 7及以后版本可以用于`enum`;不能直接作用于`String`,但在Java 7后引入了字符串支持。 - `short s1 = 1; s1 = s1 + 1;`会导致类型提升,需要强制转换;而`s1 += 1;`会自动进行类型提升,无需额外转换。 - `char`型变量可以存储单个Unicode字符,因此可以存储中文汉字。 3. 方法与控制流: - `final`修饰变量表示其值不可变,对于基本类型,值不可变;对于引用类型,引用本身不可变,但引用的对象内容可以变。 - `==`比较的是对象的引用,而`equals()`方法比较的是对象的内容。 - 静态变量属于类,实例变量属于对象。静态变量在类加载时初始化,实例变量在对象创建时初始化。 - 不能从静态方法内部直接调用非静态方法,因为静态方法与类关联,而非静态方法与对象关联。 4. 类与对象: - `Integer`是`int`的包装类,两者在性能和内存占用上有区别,Integer自动装箱拆箱可能带来额外开销。 - `Math.round()`方法用于四舍五入,`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 - 内部类可以访问外部类的所有成员,包括私有成员,但外部类不能直接访问非静态的内部类成员。 5. 多态与接口: - 多态是面向对象的三大特性之一,体现在子类对象可以当做父类对象使用。 - `overload`(重载)是方法名相同但参数列表不同的方法,返回类型不能作为重载的依据。 - `constructor`不能被覆盖(`override`),但可以重载。 - 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类(concrete class)。 - 抽象类可以有静态的`main`方法,但不能实例化,因为抽象类不能创建对象。 6. 其他概念: - `clone()`方法通常会包含`super.clone()`,以创建对象的浅复制。 - 面向对象的特征包括封装、继承、多态。 - Java实现多态主要依靠接口和继承,以及方法的覆盖和重载。 - `abstract class`与`interface`的主要区别在于抽象类可以有方法实现,可以有非抽象方法和实例变量,而接口只有抽象方法和常量。 - `abstract`方法不能同时是`static`,`native`,`synchronized`,因为这些特性与抽象方法的定义相冲突。 - 内部类分为静态内部类(Static Nested Class)和非静态内部类(Inner Class),静态内部类可以直接通过类名创建对象,非静态内部类必须依托于外部类实例。 这些知识点是Java开发者需要掌握的基础,对于面试和实际开发都至关重要。通过深入理解并熟练运用这些概念,可以在面试中展现出扎实的技术功底,并在实际工作中提高编程效率和代码质量。