Java面试必备:核心概念与题目解析
需积分: 0 49 浏览量
更新于2024-09-12
收藏 52KB DOC 举报
"Java面试题及答案"
Java面试题涵盖了多个关键知识点,这些知识点对于理解和掌握Java编程语言至关重要。以下是对这些面试题的详细解答:
1. **final, finally, finalize的区别**
- `final` 关键字用于声明变量、方法或类不可变。
- `finally` 用于异常处理,确保在程序执行过程中,无论是否发生异常,都会执行的代码块。
- `finalize` 是一个特殊的方法,当垃圾收集器确定对象不再被引用时,会调用此方法进行清理工作。
2. **AnonymousInnerClass(匿名内部类)**
- 匿名内部类可以继承其他类,但只能继承一个类。
- 它可以实现一个或多个接口。
3. **StaticNestedClass和InnerClass的不同**
- 静态嵌套类(Static Nested Class)与外部类之间没有实例关联,可以直接通过类名访问。
- 内部类(Inner Class)与外部类有实例关联,需要外部类的实例才能创建内部类的对象。
4. **& 和 && 的区别**
- `&` 操作符是按位与运算符,也可以在逻辑表达式中使用,此时它会始终计算两边的操作数。
- `&&` 是逻辑与运算符,如果第一个操作数为假,不会计算第二个操作数。
5. **HashMap和Hashtable的区别**
- `HashMap` 不是线程安全的,而 `Hashtable` 是线程安全的。
- `HashMap` 允许使用 `null` 键和值,而 `Hashtable` 不允许。
- `HashMap` 使用 `HashMap.Entry` 来存储键值对,而 `Hashtable` 使用 `Dictionary`。
6. **Collection和Collections的区别**
- `Collection` 是所有集合接口的根接口,代表一组不特定类型的对象集合。
- `Collections` 是一个工具类,提供了一系列静态方法,用于操作集合,如排序、搜索和修改。
7. **assert的使用**
断言(assert)用于在开发阶段检查代码的正确性,通常在测试环境中启用,生产环境中禁用。
8. **GC是什么?为什么要有GC?**
垃圾收集器(Garbage Collector, GC)是Java自动内存管理的一部分,负责回收不再使用的对象所占用的内存。它避免了程序员手动管理内存,减少了内存泄漏和内存溢出的问题。
9. **Strings=newString("xyz"); 创建了几个StringObject?**
创建了两个对象:一个在字符串常量池中,一个在堆上。
10. **Math.round(11.5) 和 Math.round(-11.5)**
`Math.round(11.5)` 等于 12,`Math.round(-11.5)` 等于 -11。`Math.round()` 方法四舍五入到最接近的整数。
11. **shorts1=1;s1=s1+1; 与 shorts1=1;s1+=1; 的错误**
第一句会导致编译错误,因为短整型无法直接与整型相加,需要进行类型转换。第二句是合法的,因为Java会自动处理这种类型提升。
12. **sleep() 和 wait() 的区别**
- `sleep()` 使当前线程休眠指定的毫秒数,不会释放对象锁。
- `wait()` 让当前线程等待,直到其他线程调用 `notify()` 或 `notifyAll()` 方法,释放对象锁。
13. **Java是否有goto?**
Java中没有 `goto` 关键字。
14. **数组是否有length()方法?String是否有length()方法?**
数组没有 `length()` 方法,但有一个 `length` 属性。字符串 `String` 类有 `length()` 方法。
15. **Overload 和 Override 的区别**
- 重载(Overload)是指在同一个类中,方法名相同但参数列表不同的方法。
- 重写(Override)是指子类对父类方法的重新定义,要求方法名、返回类型和参数列表完全一致。
16. **Set里的元素区分重复与否**
Set使用 `equals()` 方法来判断元素是否重复,基于对象的平等性。
17. **常见的RuntimeException**
例如 `NullPointerException`,当试图访问或操作空对象时抛出。
18. **error和exception的区别**
- Error 是程序无法恢复的严重问题,如 `OutOfMemoryError`。
- Exception 是程序可以捕获并尝试恢复的异常情况。
19. **List, Set, Map是否继承自Collection接口?**
List 和 Set 继承自 Collection 接口,而 Map 不是,Map 接口继承自 `Iterable` 接口。
20. **abstractclass和interface的区别**
- 抽象类可以有构造方法、字段、初始化块以及非抽象方法。
- 接口只有抽象方法和常量,不能有字段和初始化块。
21. **abstract的method是否可同时是static**
抽象方法不能是静态的,因为静态方法属于类,而抽象方法需要在子类中被覆盖,与实例相关联。
2023-05-11 上传
2023-12-26 上传
2021-06-02 上传
2018-04-08 上传
2015-10-21 上传
2008-03-20 上传
2023-01-15 上传
2023-04-21 上传
雅格格
- 粉丝: 0
- 资源: 1
最新资源
- guess-number-java
- shortcuts-ios-repo:我一直在使用的一些快捷方式的最新快照
- amsjs-workshop
- TSP_Genethic:遗传算法求解旅行商问题
- ignite-todo-list:Desafio 01-待办事项清单-点燃
- 电子功用-基于隧道二极管的窄脉冲发生电路
- PushServer:使用EJB3技术中的piggy-back技术实现服务器推送机制
- pforcs-problem-sheet:网络安全存储库(GMIT)编程
- 改进渣浆泵过流件铸造工艺及硬度的措施.rar
- protobuf-rpc-js:基于协议缓冲区的轻量级RPC for JS
- 销毁工具:使用哈巴狗,SCSSSASS和BEM进行实际布置
- PedroLucas-M-m:我的GitHub个人资料的配置文件
- linux-bin:一些Linux脚本
- 离心泵叶轮内流数值模拟的现状和展望.rar
- MyCom _Thread.rar
- jasmine-rspec-syntax:RSpec-y附加到Jasmine