Java面试必备知识点:基础篇

需积分: 9 1 下载量 15 浏览量 更新于2024-07-20 收藏 2.31MB PDF 举报
"这是一份2017版的Java面试指南,涵盖了Java基础知识、语法特性、面向对象概念、多态性、内存管理等多个方面的问题,旨在帮助求职者准备Java编程的面试。" Java面试宝典2017版中包含了一系列针对Java程序员面试的经典问题,以下是对这些知识点的详细解释: 1. 一个".java"源文件可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共的(non-public)。 2. Java语言中没有goto语句,它遵循结构化编程原则,鼓励使用流程控制结构如if/else、for、while等。 3. &是位运算符,&&是逻辑运算符。位运算符会在任何情况下都进行操作,而逻辑运算符在左操作数为假时会短路,不会评估右操作数。 4. 跳出多重嵌套循环可以使用label + break语句,例如:`outer: for (...) { ... inner: for (...) { ... if (condition) break outer; } }` 5. switch语句不能用于byte,因为Java 7之前不支持,但Java 7及以后版本可以;不能用于long,目前不支持;Java 7之后可以用String作为case条件。 6. short s1 = 1; s1 = s1 + 1; 错误,因为s1 + 1的结果是int类型,需要显式转换。而s1 += 1; 是合法的,编译器会自动处理类型提升。 7. char型变量可以存储一个中文汉字,因为UTF-16编码下,一个中文字符占两个字节。 8. 计算2乘以8最有效率的方法是直接使用`2 * 8`。 9. 设计一个一百亿的计算器要考虑数值溢出问题,可以使用BigInteger类来处理大整数。 10. final修饰变量时,引用不能变,但引用的对象内容可以变。如果对象是不可变对象(如String),则对象本身也不能变。 11. "=="比较的是对象的引用,equals方法比较的是对象的内容。 12. 静态变量属于类,实例变量属于对象。静态变量被所有实例共享,实例变量每个实例都有自己的一份副本。 13. 不可以从static方法内部直接调用非static方法,因为static方法与对象无关,无法访问对象的实例变量或调用实例方法。 14. Integer是包装类,int是基本类型。Integer对象需要额外的内存开销,而int是直接存储值。此外,Integer提供了一些额外的方法,如比较、缓存等。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. 代码不妥之处可能涉及到变量初始化、异常处理、资源关闭等问题,需要具体代码分析。 17. public、private、protected和默认访问修饰符分别代表公共、私有、包内可见和仅类内可见的访问权限。 18. Overload是重载,方法名相同但参数列表不同;Override是重写,子类方法覆盖父类方法。重载不改变返回类型,但重写方法签名必须完全一致。 19. 构造器不能被override,但可以被重载。 20. 接口可以继承接口;抽象类可以实现接口;抽象类可以继承具体类;抽象类中可以有静态的main方法,但不会作为程序入口。 21. clone()方法通常需要调用super.clone()来创建并返回一个浅拷贝。 22. 面向对象的特征包括封装、继承、多态。 23. Java中实现多态主要通过方法的重写(Override)和接口的实现(Implements)。 24. abstract class可以包含方法实现,而interface只能声明方法。抽象类可以有构造器,而接口没有。抽象类可以包含非抽象方法,而接口的所有方法都是抽象的。 25. abstract method不能是static,因为静态方法与类关联而不是与对象关联;不能是native,因为native方法需要C/C++实现;不能是synchronized,因为抽象方法没有具体实现。 26. 内部类分为匿名内部类、局部内部类、成员内部类和静态嵌套类。StaticNestedClass是静态嵌套类,不需要对外部类的引用,而InnerClass是成员内部类,需要外部类实例才能创建。 27. 问题未完,但通常涉及内部类的生命周期、作用域、以及它们如何与外部类交互。 这份面试宝典涵盖了Java语言的关键点,包括基础语法、面向对象、异常处理、集合框架、多线程、IO流等方面,是准备Java面试的重要参考资料。