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

需积分: 9 1 下载量 59 浏览量 更新于2024-07-22 收藏 590KB DOC 举报
"这是一份2013年的Java面试基础题集,涵盖了Java语言的基础知识,包括语法、数据类型、运算符、控制结构、类和对象、接口、多态等方面的问题,旨在帮助学习者复习和巩固Java编程的核心概念。" 1. 一个".java"源文件中可以包含多个类,但只能有一个公共类(public class),其他类可以是非公共的(非public)。 2. Java中没有goto语句,它鼓励使用结构化的控制流。 3. &是按位与运算符,&&是逻辑与运算符。&会始终计算两边的操作数,而&&会根据第一个操作数的真假决定是否计算第二个操作数,这是短路逻辑。 4. 要跳出多重嵌套循环,可以使用标签(label)配合break语句,如:`outer: for (...) { inner: for (...) { ... break outer; } }` 5. switch语句可以作用于byte、char、short和int类型,Java 7及以后版本支持enum,但不支持long和String。 6. 第二个例子`s1+=1`是正确的,因为它会自动提升short到int进行运算再赋值,而第一个例子`s1=s1+1`会直接导致编译错误,因为结果是int类型无法直接赋值给short。 7. char型变量可以存储一个中文汉字,因为Java的char类型是16位Unicode编码,足以表示大部分汉字。 8. 计算2乘以8的最有效率方式是直接使用`2 * 8`,因为这是编译器优化过的操作。 9. 设计一个一百亿的计算器要考虑数值溢出问题,可能需要使用BigInteger类处理大整数运算。 10. 使用final关键字修饰变量,意味着其引用一旦初始化后不能改变,对于基本类型,值不能改变;对于对象,引用不能指向其他对象,但对象内容可以修改。 11. "=="比较的是两个变量的引用是否相同,而equals方法用于比较两个对象的内容是否相等。 12. 静态变量属于类,生命周期与类相同,而实例变量属于对象,随对象创建和销毁。 13. 不可以从static方法内部直接调用非static方法,因为非static方法依赖于对象实例。 14. Integer是int的包装类,它们之间存在自动装箱拆箱,但性能和内存占用上有差异,Integer在某些情况下会有缓存优化。 15. Math.round(11.5)等于12,Math.round(-11.5)等于-11,round方法四舍五入到最接近的整数。 16. 缺失代码,无法判断不妥之处。 17. public、private、protected分别代表公开、私有、受保护的访问权限,不写时表示包内可见。 18. Overload是重载,可以改变参数列表,但不能改变返回值类型。Override是重写,必须保持方法签名一致。 19. 构造器不能被override,但可以被重载。 20. 接口可以继承接口,抽象类可以实现接口,但抽象类不能继承具体类,抽象类可以有静态的main方法。 21. 实现克隆时,通常会包含`super.clone()`来调用父类的克隆方法。 22. 面向对象的特征包括封装、继承、多态。 23. Java中的多态是通过方法的重写(Override)和向上转型(Upcasting)实现的。 24. abstract class可以包含抽象方法和非抽象方法,而interface只能包含抽象方法,且方法默认是public和abstract的。 25. abstract method不能是static或native,也不能是synchronized,因为这些特性与抽象方法的定义相冲突。 26. 内部类是定义在另一个类内部的类,StaticNestedClass是静态内部类,不需要外部类的实例即可创建,而InnerClass是普通内部类,需要外部类的实例。 27. 内部类可以引用包含类的成员,包括私有成员,但静态内部类不能直接访问非静态成员,需要通过外部类实例访问。 28. 匿名内部类可以直接继承一个类或实现一个接口,无需声明名称。