Java笔试必备知识点:从final到Override的深度解析

需积分: 3 4 下载量 113 浏览量 更新于2024-09-23 收藏 24KB DOCX 举报
"Java程序员应聘笔试相关知识点" Java程序员在应聘过程中可能会遇到各种笔试题目,这些题目涵盖了语言基础、类与对象、集合框架、多线程、内存管理等多个方面。以下是对部分题目所涉及知识点的详细解释: 1. **final, finally, finalize的区别**: - `final` 用于声明变量不可变,类不能被继承,或者方法不能被重写。 - `finally` 用于异常处理,无论是否发生异常,finally块中的代码总会被执行。 - `finalize` 是Object类的一个方法,用于对象被垃圾回收前进行清理工作。 2. **匿名内部类**: - 匿名内部类可以继承其他类,也可以实现一个或多个接口,但只能在一个地方定义。 3. **StaticNestedClass和InnerClass**: - StaticNestedClass(静态嵌套类)不持有对外部类的引用,可以直接通过类名访问,而无需外部类实例。 - InnerClass(内部类)持有对外部类的引用,必须在外部类实例上下文中创建。 4. **&和&&的区别**: - `&` 运算符用于逻辑与操作,同时也可用于按位与运算。 - `&&` 是短路逻辑与,如果第一个操作数为假,第二个操作数不会被执行。 5. **HashMap和Hashtable**: - HashMap是非同步的,允许null键和null值,遍历顺序不固定。 - Hashtable是同步的,不允许null键和null值,遍历顺序也不固定。 6. **Collection和Collections的区别**: - Collection是所有单列集合的父接口,代表一组对象。 - Collections是针对集合操作的工具类,提供了一系列静态方法,用于对集合进行排序、搜索、修改等操作。 7. **assert的使用**: - `assert` 用于断言,用于在开发阶段检查程序状态,生产环境中默认关闭。 8. **GC(Garbage Collector)**: - GC是Java自动内存管理的一部分,负责回收不再使用的对象占用的内存,避免内存泄漏。 9. **Strings=newString("xyz")创建的String对象数量**: - 创建了一个String对象和一个常量池中的"xyz"字符串。 10. **Math.round()的结果**: - Math.round(11.5) 等于 12,Math.round(-11.5) 等于 -11。 11. **short变量的加法问题**: - `short s1 = 1; s1 = s1 + 1;` 有编译错误,因为结果是int类型。 - `short s1 = 1; s1 += 1;` 正确,编译器会自动处理类型转换。 12. **sleep()和wait()的区别**: - sleep() 让当前线程休眠指定时间,不释放对象锁。 - wait() 让当前线程等待,释放对象锁,等待其他线程调用notify()或notifyAll()唤醒。 13. **Java没有goto语句**: - Java中没有goto语句,设计者认为它可能导致代码难以理解和维护。 14. **数组和String的length()方法**: - 数组没有length()方法,但有length属性。 - String有length()方法,返回字符串的字符数。 15. **Overload和Override的区别**: - Overload(重载)是在同一个类中,方法名相同但参数列表不同的方法。 - Override(重写)是子类重新定义父类中已存在的方法。 16. **Set中的元素区分**: - Set中的元素不重复,使用equals()方法判断元素是否重复,而不是==。 17. **最常见的RuntimeException**: - `NullPointerException` 是最常见的运行时异常,表示尝试访问空对象时抛出。 18. **Error和Exception的区别**: - Error表示系统级错误,如虚拟机错误,一般程序员无法处理。 - Exception是应用程序可以捕获并处理的异常。 19. **List, Set, Map与Collection的关系**: - List、Set、Map都继承自根接口Collection。 20. **abstract class和interface的区别**: - 抽象类可以包含非抽象方法,可以有构造函数,可以有成员变量。 - 接口只能包含抽象方法和常量,不能有构造函数,不能有实例变量。 21. **abstract method的特性**: - abstract method不能是static、native或synchronized。 22. **接口与接口继承,抽象类与接口实现**: - 接口可以继承接口。 - 抽象类可以实现接口,也可以继承普通类。 23. **启动线程**: - 使用`start()`方法启动线程,执行run()方法。 24. **Constructor是否可被override**: - 构造器不能被重写,但可以被覆盖(隐藏)。 25. **是否可以继承String类**: - 不可以,String类是final的,不能被继承。 26. **线程同步**: - 当一个线程进入对象的synchronized方法后,其他线程不能进入此对象的其他synchronized方法,除非该线程退出了同步方法。