Java面试和笔试题是评估Java开发者技能的重要工具,涵盖了各种核心概念和技术。以下是一些关键知识点的详细解释: 1. **final, finally, finalize的区别**: - `final` 关键字用于声明变量、方法或类,表示不可变或不可重写。 - `finally` 用于异常处理,确保代码块在任何情况下都会执行,即使有异常发生。 - `finalize` 是一个特殊方法,用于对象被垃圾收集器回收前进行清理工作,但不保证一定会调用。 2. **匿名内部类**: - 可以继承其他类并实现接口,但只能在一个地方实例化,通常用于简化代码,比如作为参数或返回值。 3. **Static Nested Class 和 Inner Class**: - Static Nested Class 不依赖于外部类的实例,可以独立存在,类似普通类,但仍然有访问外部类的权限。 - Inner Class(非静态嵌套类)需要外部类的实例才能创建,可以访问外部类的私有成员。 4. **& 和 && 的区别**: - `&` 是位运算符,用于按位与操作;在逻辑表达式中,`&` 运算符两边都计算,无论结果如何。 - `&&` 是逻辑与运算符,只有当左边表达式为真时,才会计算右边的表达式,这是一种短路操作。 5. **HashMap 和 Hashtable**: - HashMap 不是线程安全的,允许null键和null值。 - Hashtable 是线程安全的,不允许null键和null值。 6. **Collection 和 Collections**: - Collection 是接口,它是所有集合框架的根接口,表示一组对象。 - Collections 是工具类,提供了一系列静态方法,用于操作集合,如排序、查找、填充等。 7. **assert关键字**: - 用于断言条件是否满足,用于调试,生产环境中通常关闭。 8. **GC (Garbage Collector)**: - GC 是Java中的自动内存管理机制,负责回收不再使用的对象以释放内存。 - 需要有GC是因为手动内存管理容易导致内存泄漏和碎片。 9. **String对象创建**: - `String s = new String("xyz");` 创建了两个对象,一个在常量池,一个在堆内存。 - 对于字符串拼接,使用`+`或`StringBuilder`/`StringBuffer`更高效。 10. **Math.round()**: - `Math.round(11.5)` 返回12,`Math.round(-11.5)` 返回-11。 11. **short变量自增**: - `s1 = s1 + 1;` 错误,因为结果会自动提升为int类型,需要强制转换回short。 - `s1 += 1;` 自动处理类型转换,不会报错。 12. **sleep() 和 wait()**: - sleep() 是Thread类的方法,使当前线程暂停执行一段时间。 - wait() 是Object类的方法,用于线程间通信,让当前线程等待其他线程的通知。 13. **面向对象的特征**: - 抽象、继承、封装和多态是面向对象编程的四大特性。 - 抽象简化问题,继承实现代码复用,封装保护数据,多态提高灵活性。 14. **基本数据类型和引用类型**: - 基本数据类型如int、char等,直接存储值。 - 引用类型如Integer、String等,存储的是对象的引用或地址。 15. **String 和 StringBuffer的区别**: - String是不可变的,每次修改都会生成新的对象。 - StringBuffer是可变的,可以在原对象上进行修改,更高效。 16. **运行时异常与一般异常**: - 运行时异常(RuntimeException)不需要显式捕获,如空指针异常。 - 一般异常(非运行时异常)需要显式声明或捕获,否则编译不通过。 以上知识点是Java面试和笔试中常见的,理解并掌握它们对于成为一名合格的Java开发者至关重要。
剩余63页未读,继续阅读
- 粉丝: 0
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0