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

需积分: 9 2 下载量 153 浏览量 更新于2024-07-18 收藏 566KB DOC 举报
"Java面试测试题目2018张大成总结" 在Java编程语言中,面试经常涉及到一些核心概念和技术的考察。以下是对所给Java面试题目的详细解答: 1. **int和Integer的区别**:`int`是原始数据类型,直接存储数值;而`Integer`是`int`的封装类,提供了更多的方法和特性,如自动装箱和拆箱。 2. **String和StringBuffer的区别**:`String`是不可变的,每次修改都会创建新的对象,而`StringBuffer`是可变的,修改时不会创建新对象,适合大量字符串拼接。 3. **Overload和Override的区别**:重载(Overload)是在同一类中方法名相同但参数列表不同的方法,返回值类型不能作为重载依据。构造器不能被重写(Override),但可以被重载。 4. **abstract class和interface的区别**:抽象类可以包含方法实现,接口只能声明方法,不包含实现。一个类可以继承一个抽象类,但可以实现多个接口。 5. **final, finally, finalize的区别**:`final`修饰变量表示不可更改,修饰方法表示不能被重写,修饰类表示不能被继承。`finally`用于异常处理,确保代码块始终执行。`finalize`是垃圾回收前调用的对象清理方法。 6. **array和list的优缺点**:数组访问速度快,但大小固定,插入和删除元素效率低。List接口的实现类如ArrayList和LinkedList,插入和删除灵活,但访问速度相对较慢。 7. **线程的实现方法**:通过继承Thread类、实现Runnable接口或Callable接口。同步实现方法包括`synchronized`关键字、wait/notify机制、Lock接口和ReentrantLock等。 8. **sleep()和wait()的区别**:`sleep()`使当前线程暂停指定时间,不释放锁;`wait()`使线程进入等待状态,释放对象锁,需其他线程调用`notify()`或`notifyAll()`唤醒。 9. **创建线程的关键字**:`synchronized`用于修饰同步方法,确保同一时间只有一个线程执行。 10. **==和equals的区别**:`==`比较基本类型变量的值,对象引用比较的是内存地址;`equals()`是Object类的方法,比较对象的内容。 11. **&和&&的区别**:`&`是逻辑与运算符,无论条件真假都会执行;`&&`是短路与运算符,如果左侧为假,右侧不会执行。 12. **提取"or"字符串**:`String str = "Hello_World"; String orStr = str.substring(str.indexOf("_") + 1, str.indexOf("_", str.indexOf("_") + 1));` 13. **short变量错误**:`short s1 = 1; s1 = s1 + 1;`会导致编译错误,因为s1+1的结果是int型,需要强制类型转换。`s1 += 1;`则会自动进行类型转换。 14. **String对象不变性**:`String s = "Hello"; s = s + "world!";`原始的String对象内容不变,s引用指向了新创建的字符串对象。 15. **权限修饰符**:`public`允许任何地方访问,`private`限制在类内部,`protected`允许同包及子类访问,无修饰符表示同包访问。 16. **集合接口关系**:List、Set和Map都继承自Collection接口。List按顺序存储元素,Set不允许重复元素,Map存储键值对。 17. **StringObject数量**:`Strings = new String("xyz");`创建了1个StringObject,因为字符串字面量"xyz"在常量池中只创建一次。 18. **char存储中文**:char只能存储单个Unicode字符,中文汉字占两个字节,无法直接存储。 19. **调用父类构造方法**:使用`super()`语句在子类构造器中调用父类的构造方法。 20. **重载方法问题**:这两个方法有相同的名字和参数,但返回类型不同,构成了方法重载,是合法的。 21. **禁止继承**:使用`final`关键字修饰类,可以防止被继承。 22. **HashMap和Hashtable的区别**:HashMap非线程安全,允许null键值对;Hashtable线程安全,不允许null键值对,且迭代顺序不确定。 23. **ArrayList和LinkedList的区别**:ArrayList基于动态数组,访问速度快,插入删除慢;LinkedList基于双向链表,插入删除快,访问慢。 24. **hashCode方法**:用于对象哈希映射,返回对象的哈希码,相同的对象应返回相同的哈希码。 25. **静态变量和实例变量的区别**:静态变量属于类,生命周期始于类加载,结束于JVM退出;实例变量属于对象,随着对象创建而存在,对象销毁后消失。 26. **Math.round()**:`Math.round(11.5)`等于12,`Math.round(-11.5)`等于-11。 27. **clone()方法**:通常在实现`Cloneable`接口的类中,会包含`super.clone()`调用以创建对象副本。 28. **Java多态机制**:基于继承、接口和方法重写,使得一个对象能表现出多种形态。 29. **JDK中的"**:这部分信息不完整,通常JDK中涉及多态、集合、异常处理、IO流、线程、反射等核心概念。这些知识点都是Java程序员必备的技能。 以上内容涵盖了Java编程语言的基础到高级知识,对提升Java开发者的技术能力和面试准备都有很大帮助。