Java面试必备:基础题目与关键知识点解析

需积分: 3 2 下载量 3 浏览量 更新于2024-09-17 收藏 26KB TXT 举报
"Java面试题,适合找工作的同学和Java基础学习者,涵盖2012年校园招聘热门题目" 在Java编程语言中,面试题是评估应聘者技能的重要手段,尤其是在Java领域。这里我们主要关注Java的基础知识,包括字符串、集合框架(如String、Hashtable和HashMap)以及垃圾回收(GC)机制等核心概念。 1. 字符串(String)的内部实现 Java中的String类是不可变的,其内部由一个字符数组`value[]`、一个偏移量`offset`和一个字符计数`count`组成。这意味着一旦创建了String对象,就不能更改它的内容。String的这种设计保证了线程安全,但也会导致性能上的牺牲,因为每次修改字符串都会创建新的对象。 2. Hashtable与HashMap的区别 - 实现接口:Hashtable继承自Dictionary类,而HashMap继承自AbstractMap。 - 同步性:Hashtable是线程安全的,所有的方法都是同步的;HashMap不是线程安全的,如果需要线程安全,可以使用ConcurrentHashMap。 - null值处理:Hashtable不接受null键或值,而HashMap允许一个null键和任意数量的null值。 - 存储容量:Hashtable的默认初始容量是11,负载因子是0.75;HashMap的默认初始容量是16,负载因子也是0.75。 - 获取哈希值:Hashtable直接使用key的hashCode(),而HashMap则进行了二次哈希运算来降低冲突。 3. 垃圾回收(GC) - Java的内存管理主要依赖于垃圾回收机制,它自动回收不再使用的对象所占用的内存空间。 - Java对象的生命周期包括分配内存、使用、不再使用和垃圾回收。 - 当一个对象没有任何引用指向它时,该对象就会成为垃圾,GC会识别并释放这部分内存。 - 为了优化性能,Java引入了分代垃圾收集,将内存分为新生代和老年代,分别采用不同的GC策略。 - 一个对象如果没有在任何可达路径上,那么它就满足了可达性分析法的垃圾条件,可以被回收。 4. Java内存模型与内存泄漏 - Java内存分为堆内存(Heap)和栈内存(Stack),其中堆内存用于存储对象,栈内存用于存储基本类型和对象引用。 - 内存泄漏通常发生在对象不再使用但仍然有引用指向它时,这会导致GC无法回收这些对象,从而可能导致内存耗尽。 - 要防止内存泄漏,确保在不再需要对象时及时将其置为null,以便GC可以正确地回收它们。 5. Java的引用类型 - 弱引用(WeakReference):当垃圾回收器准备回收对象时,无论是否还有其他引用指向该对象,都会回收。 - 软引用(SoftReference):在系统内存不足时,软引用对象才会被回收。 - 虚引用(PhantomReference):虚引用仅用于跟踪对象何时被垃圾回收,而不阻止对象的回收。 6. 对象的初始化与构造函数 - Java类的实例化过程包括实例化(分配内存)、初始化(调用构造函数)和初始化块执行。 - 构造函数用于初始化新创建的对象,每个类都可以有一个或多个构造函数。 - 构造函数可以通过super关键字调用父类的构造函数,以确保正确的初始化顺序。 7. 枚举(enum)与常量 - Java枚举是一种特殊的类,可以定义一组相关的常量,提供了一种安全的、类型安全的方式来表示有限的值集。 - 枚举常量默认继承自java.lang.Enum类,且枚举类型是单例的,不允许实例化。 - 枚举常量可以包含方法和字段,可以与其他类和接口一起使用。 以上只是Java面试中可能涉及的一些核心知识点,实际上Java面试还可能涵盖异常处理、多线程、IO流、网络编程、设计模式等多个方面。深入理解和掌握这些知识对于成为一名合格的Java开发者至关重要。