Java面试必备:基础题集

需积分: 6 0 下载量 60 浏览量 更新于2024-07-23 收藏 570KB DOC 举报
"这是一份综合性的Java面试题集,涵盖了Java基础知识,包括语法特性、数据类型、操作符、流程控制、类与对象、接口、多态性、内存管理等多个方面,适合Java开发者进行面试准备。" 以下是这些面试题涉及的知识点详解: 1. 一个".java"源文件中可以包含多个类,但只能有一个公开类(public class),其他的类可以是非公开类(如package-private,默认权限)。 2. Java中没有goto语句,它遵循结构化编程原则,提倡使用break、continue和return来控制程序流程。 3. &是位运算符,用于按位与操作;&&是逻辑运算符,用于短路逻辑与。当使用&&时,如果第一个操作数为假,则不会评估第二个操作数。 4. 要跳出多重嵌套循环,可以使用label + break语句,如:`outer: for (...) { inner: for (...) { if (condition) break outer; }}` 5. switch语句不能作用于byte,因为Java 7之前switch仅支持byte, char, short, int和枚举类型,但可以作用于Java 7引入的字符串(String)。 6. shorts1=1;s1=s1+1; 这里的错误在于short类型需要强制转换,因为s1+1的结果是int类型。而s1+=1则自动处理了类型转换。 7. char类型可以存储一个中文汉字,因为UTF-16编码中,一个中文字符占两个字节,char在Java中正好可以容纳这两个字节。 8. 计算2乘以8最有效率的方式是直接赋值:`int result = 2 * 8;` 9. 设计一个一百亿的计算器要考虑大数计算,可以使用BigInteger类来处理。 10. 使用final关键字修饰变量,意味着该变量一旦初始化后就不能再改变。如果是引用类型,引用本身不能改变,但引用的对象状态可以改变。 11. "=="比较的是变量的值,equals方法比较的是对象的内容。对于基本类型,两者意义相同;对于对象,"=="比较引用是否相等,equals比较内容是否相等。 12. 静态变量属于类,而实例变量属于对象。静态变量可以被类的所有实例共享,实例变量是每个实例独有的。 13. 不可以从static方法内部直接调用非static方法,因为static方法与类关联,而非static方法与类的实例关联。 14. Integer是int的包装类,它们之间存在自动装箱拆箱。Integer对象占用更多内存,且有缓存池,int是原始类型,效率更高。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11。round方法将浮点数四舍五入到最接近的整数。 16. 代码不妥之处可能涉及变量作用域、异常处理、资源关闭等问题,具体问题需看代码内容。 17. public表示全局可见,private表示仅限本类访问,protected表示在同一包或子类中可见,无修饰符表示同一包内可见。 18. Overload是重载,允许方法名相同但参数列表不同。Override是重写,子类方法必须与父类方法签名完全一致。Overloaded方法不能改变返回值类型。 19. 构造器Constructor不能被override,但可以被重载。 20. 接口可以继承接口,抽象类可以实现接口,抽象类可以继承具体类,静态main方法不能作为抽象类的实例入口点。 21. 实现clone()方法时,通常会包含`super.clone()`以创建对象副本。 22. 面向对象的特征包括封装、继承、多态。 23. Java中通过方法的重写(Override)和接口的多实现来实现多态。 24. abstract class可以包含方法实现,而interface中所有方法默认都是abstract(无实现)。接口强调“是什么”,抽象类强调“怎么做”。 25. abstract method不能同时是static,不能同时是native,也不能同时是synchronized,因为这些属性与抽象方法的定义相冲突。 26. 内部类是定义在一个类内部的类,分为静态嵌套类(StaticNestedClass)和非静态嵌套类(Inner Class)。静态嵌套类不持有外部类的引用,可以直接创建,而内部类需要外部类实例才能创建。 27. 内部类可以引用其包含类的成员,包括私有成员,但不能访问静态成员,除非通过外部类引用。静态嵌套类不能直接访问非静态成员,需要通过外部类实例访问。