Java基础知识点总结:从JRE到多线程
需积分: 7 164 浏览量
更新于2024-08-26
收藏 514KB PDF 举报
Java面试总结.pdf
本文档总结了Java面试的30个问题,涵盖了Java基础知识和多线程知识。下面是对每个问题的详细解释:
**Java基础**
1. JRE和JDK有什么区别?
JRE(Java Runtime Environment)是Java运行环境,为Java的运行提供了所需环境。JDK(Java Development Kit)是Java开发工具包,提供了Java的开发环境和运行环境。JDK包含了JRE,同时还包含了编译Java源码的编译器javac,还包含了很多Java程序调试和分析的工具。
2. ==和equals的区别
== 是基本类型和引用类型的使用区别。基本类型比较的是值是否相同,而引用类型比较的是引用是否相同。equals是方法,String类等复写了该方法,使得引用类型比较的时候比较的是值而不是地址。
3. hashcode()是什么?
hashcode()是Java对象的哈希码,用于标识对象的唯一性。它可以用来判断两个对象是否相等。
4. final的作用
final是Java中的关键字,用于修饰变量、方法和类。final变量的值不能被改变,final方法不能被重写,final类不能被继承。
5. Java的数据类型?
Java的数据类型分为基本类型和引用类型。基本类型包括整型、浮点型、布尔型、字符型等。引用类型包括数组、类、接口等。
6. java中操作字符串都有哪些类?它们之间有什么区别?
Java中操作字符串有多种类,包括String、StringBuilder、StringBuffer等。String是不可变的,StringBuilder和StringBuffer是可变的。StringBuilder是线程不安全的,而StringBuffer是线程安全的。
7. 普通类和抽象类有哪些区别?
普通类是可以实例化的类,而抽象类不能被实例化。抽象类是为其他类提供共享方法和变量的。
8. 抽象类能使用final修饰吗?
不能。抽象类不能被final修饰,因为抽象类是为其他类提供共享方法和变量的。
9. 接口和抽象类有什么区别?
接口是抽象类的特殊形式,所有的方法都是抽象的。抽象类可以有抽象方法和非抽象方法,而接口只能有抽象方法。
10. java中IO流分为几种?
Java中的IO流分为字节流和字符流。字节流是以字节为单位的,而字符流是以字符为单位的。
11. BIO、NIO、AIO有什么区别?
BIO(Blocking I/O)是阻塞式IO,NIO(Non-Blocking I/O)是非阻塞式IO,AIO(Asynchronous I/O)是异步IO。BIO是在读取或写入数据时阻塞的,NIO是在读取或写入数据时不阻塞的,AIO是在读取或写入数据时使用回调机制。
12. Files的常用方法都有哪些?
Files类提供了多种方法,包括读取文件、写入文件、删除文件、复制文件等。
13. java容器
Java容器包括Collection、List、Set、Map等。Collection是所有容器的父接口,List是有序的,Set是无序的,Map是键值对的。
14. Collection和Collections有什么区别?
Collection是所有容器的父接口,Collections是工具类,提供了多种操作容器的方法。
15. List、Set、Map之间的区别是什么?
List是有序的,Set是无序的,Map是键值对的。
16. HashMap和HashTable的区别?
HashMap和HashTable都是Map的实现类,但HashMap是非线程安全的,而HashTable是线程安全的。
17. 说一下HashMap的实现原理?
HashMap的实现原理是使用哈希表和链表来存储键值对的。
18. 说一下HashSet的实现原理?
HashSet的实现原理是使用哈希表来存储元素的。
19. ArrayList和LinkedList的区别是什么?
ArrayList是基于数组的实现,LinkedList是基于链表的实现。ArrayList的随机访问速度快,而LinkedList的插入和删除速度快。
20. ArrayList和Vector的区别是什么?
ArrayList和Vector都是基于数组的实现,但ArrayList是非线程安全的,而Vector是线程安全的。
21. Array和ArrayList有何区别?
Array是Java中的基本类型,ArrayList是基于数组的实现的类。
22. Iterator是什么?
Iterator是Java中的迭代器,用于遍历容器中的元素。
**Java多线程**
1. 并行和并发有什么区别?
并行是指多个任务同时执行,而并发是指多个任务交替执行。
2. 线程和进程的区别?
线程是轻量级的进程,进程是重量级的进程。线程可以共享进程的资源,而进程不能共享资源。
3. 守护线程是什么?
守护线程是Java中的特殊线程,用于执行一些辅助任务。
4. 创建线程有哪几种方式?
创建线程有两种方式:继承Thread类和实现Runnable接口。
5. runnable和callable的区别在哪里?
Runnable是无返回值的接口,而Callable是有返回值的接口。
6. 线程的状态有哪些?
线程的状态包括新建、运行、等待、阻塞、死亡等。
7. sleep()和wait()有什么区别?
sleep()是使线程睡眠一段时间,而wait()是使线程等待其他线程的通知。
8. notify()和notifyAll()有什么区别?
notify()是通知一个线程,而notifyAll()是通知所有线程。
2023-02-28 上传
2021-09-23 上传
2021-12-18 上传
2022-01-23 上传
2023-01-13 上传
2020-06-22 上传
2019-11-21 上传
2021-08-12 上传
2020-09-05 上传
曹叡rui
- 粉丝: 7
- 资源: 3
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章