Java面试必备知识点:基础题与核心概念解析

需积分: 3 3 下载量 193 浏览量 更新于2024-07-23 收藏 512KB DOC 举报
"这份文档包含了Java面试中常见的基础题,主要涵盖了Java语言的核心概念、类库使用、异常处理、多线程、内存管理等方面的知识,是准备Java面试的参考资料。" 1. **面向对象的特征**:面向对象编程的特征包括封装、继承、多态。封装是指将数据和操作这些数据的方法绑定在一起,对外只暴露有限的接口;继承允许子类继承父类的属性和行为,实现代码重用;多态则是指同一种行为在不同对象上表现出不同的形态。 2. **String类型**:String在Java中并非基本数据类型,而是对象,它代表不可变的字符序列。 3. **int和Integer**:int是Java的基本数据类型,而Integer是其对应的包装类,可以支持更多的操作,如比较、转换等。 4. **String和StringBuffer**:String是不可变的,每次修改都会生成新的对象;StringBuffer是可变的,修改时不会创建新对象,因此在多线程环境下或频繁修改字符串时,StringBuffer更高效。 5. **运行时异常与一般异常**:运行时异常是程序运行时可能抛出的异常,不需要显式捕获;一般异常(检查异常)需要程序员通过try-catch语句进行处理。 6. **ArrayList,Vector,LinkedList**:ArrayList基于动态数组,访问快,插入删除慢;Vector与ArrayList类似,但线程安全;LinkedList基于双向链表,插入删除快,访问慢。 7. **Collection和Collections**:Collection是所有集合接口的父接口,表示单个元素的集合;Collections是工具类,提供对集合的各种操作方法。 8. **&和&&的区别**:&是按位与运算符,&&是逻辑与运算符,后者具有短路效果,即如果第一个条件不满足,不会评估第二个条件。 9. **HashMap和Hashtable**:HashMap是非同步的,允许null键和值;Hashtable是同步的,不允许null键和值。 10. **final,finally,finalize**:final修饰变量表示不可改变,修饰方法表示不可覆盖,修饰类表示不能有子类;finally用于保证代码块的执行,即使发生异常;finalize是对象被垃圾回收前调用的方法。 11. **sleep()和wait()**:sleep()是Thread类的方法,让当前线程暂停指定时间,不释放锁;wait()是Object类的方法,使线程等待,释放锁,需要在同步环境中使用。 12. **Overload和Override**:Overload(重载)是方法名相同,但参数列表不同;Override(重写)是子类方法覆盖父类方法,保持方法名和参数列表一致。重写方法不能改变返回类型和访问权限。 13. **error和exception**:Error是严重问题,如系统错误、虚拟机错误,通常不需捕获;Exception是程序运行时可能出现的问题,需要捕获处理。 14. **同步和异步**:同步确保操作按顺序执行,适用于资源竞争和顺序依赖;异步允许并发执行,提高效率。根据任务性质选择使用,例如读写文件适合同步,网络请求适合异步。 15. **abstractclass和interface**:抽象类可以包含实现的方法,最多只能继承一个;接口只包含方法声明,可以多继承。抽象类适合定义类的公共行为,接口适合定义契约。 16. **heap和stack**:堆是存放对象的内存区域,支持动态分配和回收;栈是存放基本类型和对象引用的内存区域,由系统自动管理。 17. **StaticNestedClass和InnerClass**:静态嵌套类(Static Nested Class)与外部类之间没有隐含引用,可以直接实例化;内部类(Inner Class)与外部类有隐含引用,需要外部类实例才能创建。 18. **assert**:断言语句,用于测试假设条件,仅在调试模式下启用。 19. **GC(Garbage Collection)**:Java的自动内存管理机制,负责回收不再使用的对象所占用的内存,避免内存泄漏。 20. **short变量的计算**:直接相加会导致数据溢出,应使用short s1 = 1; s1 += 1; 避免类型提升。 21. **Math.round()**:Math.round(11.5)等于12,Math.round(-11.5)等于-11。 22. **String对象创建**:new String("xyz")创建两个对象,一个是常量池中的"xyz",另一个是堆中的新对象;"xyz"创建一个对象。 23. **Java的goto**:Java不支持goto语句,鼓励使用结构化编程。 24. **启动线程**:使用start()方法启动线程,调用run()方法只是执行线程体,不会启动新线程。 25. **常见运行时异常**:NullPointerException,当试图访问null对象的成员时抛出。 26. **接口与抽象类**:接口可以继承其他接口;抽象类可以实现接口,也可以继承其他类(单一继承)。 27. **List,Set,Map与Collection**:List和Set继承自Collection接口,Map不是,它继承自Object。 28. **abstract,static,native,synchronized**:抽象方法不能是static或final,不能是native,可以是synchronized。 29. **length()方法**:数组有length属性,String有length()方法。 30. **Set的唯一性**:Set中的元素通过equals()和hashCode()方法区分,不允许重复。使用equals()方法比较对象内容,hashCode()方法用于哈希表的快速定位。 以上是Java面试中常见的知识点,掌握这些将有助于理解和解答面试中的基础问题。对于更深入的面试,还应涵盖多线程、设计模式、JVM内存模型、IO/NIO、数据库操作、网络编程等内容。