Java面试精华:基础类型、多态与集合比较

需积分: 9 0 下载量 26 浏览量 更新于2024-10-14 收藏 78KB DOC 举报
Java面试题集涵盖了一系列关键的Java编程概念,这些问题旨在测试求职者的基础知识、深入理解以及实际编程能力。以下是对每个问题的详细解释: 1. 多态示例: 在Java中,多态是通过方法重写和继承实现的。例如,你可以定义一个父类Animal,然后创建子类Dog和Cat,它们都重写了父类的`makeSound()`方法。调用这些对象的`makeSound()`方法时,将显示不同子类的声音,体现了多态性。 2. 基本数据类型与String: Java的基本数据类型包括:byte, short, int, long, float, double, char, boolean, 和void。String虽然经常用于存储文本,但不是基本数据类型,而是字符序列,属于引用类型。 3. `int`和`Integer`: `int`是原始数据类型,而`Integer`是其包装类,提供了诸如自动装箱/拆箱的功能。`int`直接存储整数值,`Integer`则作为对象存在,提供额外的方法和内存管理。 4. `String`与`StringBuffer`: `String`是不可变的,每次操作都会创建新的字符串对象;而`StringBuffer`是线程安全的可变字符串,允许在原有基础上进行修改,效率更高。 5. `Collection`与`Collections`: `Collection`是集合框架的接口,包含了多个集合类型如List, Set, Map等;`Collections`是工具类,提供了针对集合的操作方法,如排序、查找等。 6. `&`和`&&`: `&`是按位与运算符,用于操作二进制位;`&&`是逻辑与运算符,用于条件判断。两者功能和用法截然不同。 7. Overload和Override: Overload是指在同一类中定义相同名称但参数列表不同的方法;Override是子类重写父类方法的行为,用于实现多态。通过实例代码演示,如: ```java class Base { public void print(int x) { ... } } class Derived extends Base { @Override public void print(String s) { ... } } ``` 8. `error`与`exception`: `error`表示系统运行时环境异常,通常是无法恢复的严重问题;`exception`表示预期的运行时错误,可通过异常处理机制进行捕获和处理。 9. `abstractclass`与`interface`: `abstractclass`可以包含抽象方法和非抽象方法,且可以有构造方法;`interface`只包含抽象方法(没有实现),类可以实现多个接口。它们的继承关系不同。 10. `final`, `finally`, `finalize`: `final`修饰类、变量或方法,分别表示最终的、常量的和不可改变的;`finally`是Java中的关键字,用于定义无论是否发生异常都要执行的代码块;`finalize()`是垃圾回收器在对象被删除前调用的方法。 11. `assert`: 用于验证程序中的假设,在开发阶段使用,如果条件不成立会抛出AssertionError。例如:`assert condition : "Message when condition is false"`。 12. `forward`与`redirect`: 这两个词通常用于Web开发,`forward`是服务器内部请求转发,保留原始请求信息;`redirect`是客户端重定向,发送新的HTTP状态码告知浏览器。 13. `GC`: Garbage Collection(垃圾收集)是Java自动回收不再使用的内存的过程,防止内存泄漏。Java需要GC来管理堆内存,提高程序的内存利用效率。 14. 数组初始化问题: `shorts1=1;s1=s1+1;`中`s1`是`int`类型,导致溢出错误,而`shorts1=1;s1+=1;`正确地操作了`short`类型。`Math.round()`会四舍五入,`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 15. 线程并发与控制: 题目要求设计一个并发场景,四个线程分别增加和减少一个共享变量`j`,这涉及到同步机制的使用,如`synchronized`关键字。 16. Java没有`goto`关键字,仅支持`break`和`continue`。 17. 启动线程使用`start()`方法,而非`run()`,后者是执行线程体。 18. 应用服务器例子:Tomcat, JBoss, WebLogic, Apache Axis等。 19. 接口与抽象类特性: 接口可以继承接口,但不能继承类;抽象类可以实现接口,也可以有具体方法。类不能同时继承一个类并实现一个接口,因为这违反单一继承原则。 20. `Set`的元素唯一性检测: 使用`equals()`方法比较元素内容是否相等,`equals()`在对象间比较逻辑,`==`用于比较对象引用是否相同。 21. 构造器重写: 构造器是可以重写的,但仅限于子类覆盖父类的无参构造器或具有特定参数列表的构造器。 22. `String`类: 不可继承,`switch`关键字适用于int, char, String,枚举类型,不适用于byte和long。 23. `try-catch-finally`结构: 如果`try`块内有`return`语句,`finally`块的代码仍会执行,因为`finally`用于清理工作,不受`return`影响。 24. 编程题:使用位运算快速计算2 * 8,例如`((int)8 << 1)`。 25. 参数传递与引用传递: 当方法改变传入对象属性并返回结果时,是引用传递,因为方法内部操作的是对象本身。 26. 线程同步限制: 当一个线程进入`synchronized`方法后,其他线程不能再进入同一对象的其他`synchronized`方法,除非该方法使用了不同的锁。 27. 最终编程题:根据需求编写代码,可能涉及循环、条件判断等,具体实现依赖于题目细节。