Java面试必备知识点:关键概念与问题解析
需积分: 10 131 浏览量
更新于2024-09-20
1
收藏 143KB PDF 举报
"Java面试题集,涵盖Java基础、语法特性、集合框架、多线程、内存管理等多个方面,旨在帮助求职者准备Java程序员面试。"
1. **final,finally,finalize的区别**
- `final` 关键字用于声明变量、方法或类,表示不可改变或不可覆盖。对于变量,一旦赋值就不能再改变;对于方法,不允许子类重写;对于类,表示该类不能被继承。
- `finally` 是异常处理语句的一部分,无论是否发生异常,finally块中的代码都会执行,通常用来释放资源。
- `finalize` 是一个特殊的方法,当垃圾收集器确定对象不再被引用时,会调用对象的`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 的使用**
- `assert` 用于断言,用于调试,断言条件如果为假,程序将抛出 AssertionError 错误。
8. **GC (Garbage Collector)**
- GC 是Java的自动内存管理系统,负责回收不再使用的对象占用的内存,防止内存泄漏。
- 有GC是因为程序员不需要手动管理内存,简化编程,同时也避免了内存泄露问题。
9. **String 对象的创建**
- 创建 String 对象如 `Strings = new String("xyz")` 会创建两个对象:常量池中的"xyz"和堆内存中的引用对象。
10. **Math.round() 方法**
- Math.round(11.5) 返回12,Math.round(-11.5) 返回-11。
11. **shorts1 = 1; s1 = s1 + 1; 与 shorts1 = 1; s1 += 1; 的区别**
- 前者在加法操作后需要强制类型转换,否则编译错误,因为s1+1的结果是int类型。
- 后者是复合赋值操作符,自动处理类型转换,所以不会出错。
12. **sleep() 与 wait()**
- sleep() 是 Thread 类的方法,使当前线程暂停指定时间,不释放锁。
- wait() 是 Object 类的方法,使当前线程等待,释放锁,需要在同步环境中使用。
13. **Java 没有 goto 关键字。**
14. **数组与 String.length()**
- 数组没有 length() 方法,但有 length 属性,如 `int len = array.length`。
- String 有 length() 方法,如 `int len = str.length()`。
15. **Overload 和 Override**
- Overload(重载)是同一个类中方法名相同但参数列表不同的方法,返回类型可以不同。
- Override(重写)是子类重写父类中同名同参的方法,返回类型和访问权限不能缩小。
16. **区分重复元素:equals() vs ==**
- equals() 比较对象内容是否相等,对于自定义类需要重写。
- == 比较对象的引用是否指向同一内存地址,对于基本类型比较数值。
17. **常见的 RuntimeException:例如 NullPointerException、ArithmeticException 等。**
18. **Error 和 Exception 的区别**
- Error 是严重问题,如系统资源耗尽,一般程序无法恢复。
- Exception 是程序可以预见并尝试处理的异常。
19. **List,Set,Map 与 Collection**
- List,Set 和 Map 都属于 Java 集合框架的一部分,但它们不是继承自 Collection 接口,而是直接或间接实现了该接口。
20. **abstract class 和 interface**
- 抽象类可以有构造方法、实例变量、非抽象方法,可以实现多继承。
- 接口只包含抽象方法和默认方法,不能有实例变量,支持多继承。
21. **abstract method 的限制**
- abstract 方法不能是 static,因为静态方法属于类而不是对象,与抽象概念不符。
- abstract 方法不能是 native,因为 native 方法由其他语言实现,而抽象方法需要子类提供实现。
- abstract 方法也不能是 synchronized,因为抽象方法没有具体实现,不需要同步控制。
22. **接口继承接口,抽象类实现接口**
- 接口可以继承接口,实现多继承。
- 抽象类可以实现接口,但抽象类也可以继承普通类。
23. **启动线程:start() vs run()**
- start() 用于启动线程,会自动调用 run() 方法,线程是在新的线程上执行。
- run() 直接调用则在当前线程执行,不会创建新线程。
24. **构造器 Constructor 不可被 override**
- 构造器不能被重写,但可以被重载。
25. **继承 String 类**
- Java 中 String 类是 final 的,因此不能被继承。
26. **线程同步**
- 当一个线程进入对象的 synchronized 方法后,其他线程无法同时进入该对象的其他 synchronized 方法或 synchronized(this) 代码块,直至该线程退出 synchronized 区域。
2022-06-09 上传
2013-12-05 上传
2013-02-22 上传
2009-05-09 上传
2016-02-04 上传
2010-09-17 上传
2022-07-14 上传
2021-05-05 上传
2022-06-09 上传
王小狼
- 粉丝: 1
- 资源: 49
最新资源
- BottleJS快速入门:演示JavaScript依赖注入优势
- vConsole插件使用教程:输出与复制日志文件
- Node.js v12.7.0版本发布 - 适合高性能Web服务器与网络应用
- Android中实现图片的双指和双击缩放功能
- Anum Pinki英语至乌尔都语开源词典:23000词汇会话
- 三菱电机SLIMDIP智能功率模块在变频洗衣机的应用分析
- 用JavaScript实现的剪刀石头布游戏指南
- Node.js v12.22.1版发布 - 跨平台JavaScript环境新选择
- Infix修复发布:探索新的中缀处理方式
- 罕见疾病酶替代疗法药物非临床研究指导原则报告
- Node.js v10.20.0 版本发布,性能卓越的服务器端JavaScript
- hap-java-client:Java实现的HAP客户端库解析
- Shreyas Satish的GitHub博客自动化静态站点技术解析
- vtomole个人博客网站建设与维护经验分享
- MEAN.JS全栈解决方案:打造MongoDB、Express、AngularJS和Node.js应用
- 东南大学网络空间安全学院复试代码解析