Java面试必备知识点:基础、多线程与集合

需积分: 4 1 下载量 61 浏览量 更新于2024-07-19 收藏 2.58MB PDF 举报
"Java面试宝典是一份针对Java开发者准备面试的重要参考资料,涵盖了Java基础知识、多线程、集合等核心领域的问题。这份宝典旨在帮助求职者深入理解JDK与JRE的区别,掌握Java语法特性,如关键字static、方法覆盖与重载,以及接口与抽象类的关系。此外,还涉及线程的创建与管理、同步机制,以及集合框架的使用,如HashMap、ArrayList和LinkedList等数据结构。" Java就业面试宝典中包含的知识点详细解析: 1. JDK与JRE的区别:JDK(Java Development Kit)是Java开发工具包,包括JRE(Java Runtime Environment)和编译器、调试器等开发工具,用于编写、测试和部署Java应用程序。而JRE仅提供运行Java程序所需的环境,不含开发工具。 2. path与classpath:path是系统路径,用于查找可执行文件;classpath是Java特定的环境变量,用于定位类文件或JAR包,以便运行时加载。 3. Java关键字:Java中没有`goto`关键字。其他关键字如`static`用于声明静态成员,不能被覆盖。 4. `static`关键字:表示类级别的变量或方法,与实例无关。不能覆盖静态方法或私有方法,因为它们不是面向对象特性的。 5. 方法覆盖与重载:覆盖(Override)发生在子类对父类方法的重新定义,需保持方法签名一致。重载(Overloading)是在同一类中创建多个同名方法,通过参数列表区分。 6. Overload与Override的区别:覆盖涉及继承,改变父类方法的行为;重载发生在一个类内部,不涉及继承。 7. 接口与抽象类:接口是完全抽象的,只能包含抽象方法和常量;抽象类可以有非抽象方法,但至少有一个抽象方法。接口可继承其他接口,抽象类可实现接口,实体类可继承抽象类。 8. Java数据类型:包括基本类型(如int、char、boolean等)和引用类型(类、接口、数组)。引用类型可以指向对象实例。 9. char存储中文:单个char变量可以存储一个Unicode字符,因此可以存储中文。 10. &与&&的区别:`&`是位运算符,也用作逻辑与;`&&`是逻辑与运算符,只有当第一个操作数为真时,才会评估第二个操作数。 11. 垃圾回收:Java自动管理内存,垃圾回收器回收不再使用的对象所占的内存。回收时机由JVM决定。 12. 对象引用置为null:置为null不会立即触发垃圾回收,但使对象无法被引用,可能在下次GC时回收。 13. 多线程: - 进程是资源分配的最小单位,线程是执行的最小单位。 - 创建线程有多种方式,如实现Runnable接口、继承Thread类、使用ExecutorService等。 - 线程有新建、就绪、运行、阻塞、终止等状态。 - 同步方法使用`synchronized`修饰,同步代码块通过`synchronized`包裹代码。 - 死锁(Deadlock)是两个或多个线程相互等待对方释放资源导致的僵局。 14. 避免死锁:避免循环等待条件,设置超时,使用死锁检测算法等。 15. `sleep()`与`wait()`:`sleep()`让当前线程暂停指定时间,不释放锁;`wait()`使线程进入等待状态,释放锁,需调用`notify()`或`notifyAll()`唤醒。 16. 集合框架: - 基本接口有List、Set、Map等。 - 集合类未实现Cloneable和Serializable,但其元素可能需要实现。 - 迭代器用于遍历集合,Iterator和ListIterator有不同功能,后者支持双向遍历和修改集合。 - `hashCode()`与`equals()`对于对象比较和存储在哈希表中至关重要。 - HashMap与Hashtable的区别:HashMap非线程安全,允许null键值对;Hashtable线程安全,不允许null。 - ArrayList与LinkedList:ArrayList基于数组,访问快,插入删除慢;LinkedList基于链表,插入删除快,访问慢。 - Comparable用于元素自然排序,Comparator用于自定义排序策略。 以上内容是Java面试宝典中涉及的部分重点知识点,深入理解和熟练应用这些概念将有助于在面试中表现出色。