Java面试必备:基础篇

需积分: 33 1 下载量 124 浏览量 更新于2024-07-21 1 收藏 2.14MB PDF 举报
"Java面试宝典 完整版 - 最新最全的Java面试题" 在Java编程领域,面试往往是对求职者技能的一种全面检验。本面试宝典涵盖了多个核心知识点,旨在帮助Java开发者准备面试,提升自己的技术水平。以下是部分关键问题及解答,涉及Java的基础知识、语法特性、类与对象、接口、多态等方面: 1. 一个.java源文件中可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共的(如private或默认访问级别)。 2. Java没有goto语句,它遵循结构化编程原则,鼓励使用break、continue或return来控制程序流程。 3. &和&&的主要区别在于短路逻辑:&始终会计算两边的操作数,而&&只有在左侧操作数为真时才会计算右侧。 4. 跳出多重嵌套循环,可以使用label配合break语句,例如:`outer: for {...} inner: for {...} if (...) break outer;`。 5. switch语句不能直接作用于byte、long和String类型,但JDK 7后支持byte和char,JDK 14后支持了字符串(String)。 6. 在shorts1=1; s1=s1+1;中,加法的结果会自动提升为int类型,导致编译错误。而s1+=1;会自动转换回short类型,是合法的。 7. char型变量可以存储一个中文汉字,因为一个中文汉字在UTF-16编码中占用两个字节,Java的char类型恰好是16位。 8. 计算2乘以8的最有效率方法是直接使用`2 * 8`。 9. 设计一个能处理一百亿数值的计算器,需要考虑数据类型的使用,如使用BigInteger类来处理大整数。 10. 使用final修饰变量,意味着引用不可变,即不能重新赋值。如果引用的是对象,对象的属性仍可改变,除非对象本身也是final。 11. "=="比较的是对象的引用,而equals()比较的是对象的内容。对于基本类型,两者效果相同;对于对象,需要重写equals()方法以进行自定义比较。 12. 静态变量属于类,实例变量属于对象。静态变量被所有实例共享,而实例变量是每个实例独有的。 13. 不能从一个静态方法内部直接调用非静态方法,因为静态方法属于类,而非静态方法属于对象。 14. Integer是int的封装类,两者之间的主要区别在于:int是原始类型,直接存储值;Integer是对象,需要额外内存,但支持一些额外方法如compareTo()。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11。 16. 下面的代码可能不妥,比如缺少分号、未初始化变量、语法错误等,具体问题需看代码详情。 17. public、private、protected和默认访问权限的区别在于可见性:public对所有类可见,private仅在本类内可见,protected在同包和子类中可见,而默认(包级私有)只在同一包内可见。 18. Overload(重载)是方法名相同但参数列表不同的方法,不改变返回值类型。Override(覆盖)是子类重写父类方法,方法名、参数列表和返回值类型必须完全一致。 19. 构造器Constructor不能被override,但可以重载。 20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类(concrete class)。抽象类中可以有静态的main方法,但无法作为程序入口。 21. 写clone()方法时,通常会包含`super.clone()`来创建对象的副本。 22. 面向对象的特征包括封装、继承、多态。 23. Java中实现多态主要通过方法重写(Override)和接口实现。 24. abstract class和interface的区别在于:抽象类可以包含非抽象方法和实例变量,而接口只能包含常量和抽象方法;类可以继承一个抽象类,但可以实现多个接口。 25. abstract的method不能同时是static,因为抽象方法需要被重写,而静态方法与类相关联;也不能是native,因为native方法与C/C++代码关联;更不能是synchronized,因为同步方法在类实例上进行。 26. 内部类(Inner Class)是定义在另一个类内部的类,分为静态嵌套类(Static Nested Class)和非静态嵌套类。静态嵌套类不持有对外部类的隐式引用,非静态嵌套类则可以访问外部类的所有成员,包括私有成员。 27. 内部类可以引用其包含类的成员,但非静态内部类需要外部类实例才能存在,因此不能在没有外部类实例的情况下访问静态成员。 28. A类中定义了一个内部类B,那么在A类中可以直接创建B类的实例,而在A类的外部需要通过A类的实例来创建B类的实例。 以上仅是部分Java面试中的常见问题和解答,实际面试中可能涉及更多高级概念和技术细节,如集合框架、并发编程、异常处理、设计模式等。深入理解并掌握这些知识点,将有助于在面试中脱颖而出。