Java面试必备知识点:核心概念与面试题解析
需积分: 9 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开发者的技术能力和面试准备都有很大帮助。
2018-04-17 上传
2023-06-12 上传
2023-06-12 上传
2024-12-31 上传
2024-12-31 上传
weixin_39434288
- 粉丝: 0
- 资源: 1
最新资源
- Lung-Cancer-Risk-Prediction:使用微调I3D神经网络从CT预测肺癌的风险
- android_system_incremental_delivery
- histograph:历史地理编码器-概述存储库
- daruserver
- 酒店点菜系统源代码java
- 一款简易好看的登陆界面
- wormhole-william-mobile:适用于Android的端到端加密文件传输。 一个Android Magic Wormhole客户端
- 使用Mixtral生成视频摘要
- demos:一些mongodb演示
- hyperBlog:Git和GitHub课程的测试存储库
- 计算机视觉:CSE527-2019秋季-作业
- mtg-tm:魔术证明聚会的完整性
- 第十三章 综合案例:拼图游戏
- c代码-出租车记价表
- pysalREST:该存储库包含一个自动Python库提取工具,该工具最初是为了将PySAL库公开为RESTful服务而开发的。
- simplified-dialect-wy-vscode:简化的方言wenyan-lang的vscode插件