Java常见面试题200+,学习、面试必备

简介: Java常见面试题200+,学习、面试必备

本套Java面试题,选取了企业面试最常问到的问题,可以做为Java工程师的面试宝典,也可以做为想要不断完善和扩充自己 java 技术的学习者。


主要包含:


Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。


初学者不需要看后面的框架和 JVM 模块的知识


Java常见面试题


一、Java 基础


1.JDK 和 JRE 有什么区别?


2.== 和 equals 的区别是什么?


3.两个对象的 hashCode()相同,则 equals()也一定为 true,对吗?


4.final 在 java 中有什么作用?


5.java 中的 Math.round(-1.5) 等于多少?


6.String 属于基础的数据类型吗?


7.java 中操作字符串都有哪些类?它们之间有什么区别?


8.String str=”i”与 String str=new String(“i”)一样吗?


9.如何将字符串反转?


10.String 类的常用方法都有那些?


11.抽象类必须要有抽象方法吗?


12.普通类和抽象类有哪些区别?


13.抽象类能使用 final 修饰吗?


14.接口和抽象类有什么区别?


15.java 中 IO 流分为几种?


16.BIO、NIO、AIO 有什么区别?


17.Files的常用方法都有哪些?


二、容器


18.java 容器都有哪些?


19.Collection 和 Collections 有什么区别?


20.List、Set、Map 之间的区别是什么?


21.HashMap 和 Hashtable 有什么区别?


22.如何决定使用 HashMap 还是 TreeMap?


23.说一下 HashMap 的实现原理?


24.说一下 HashSet 的实现原理?


25.ArrayList 和 LinkedList 的区别是什么?


26.如何实现数组和 List 之间的转换?


27.ArrayList 和 Vector 的区别是什么?


28.Array 和 ArrayList 有何区别?


29.在 Queue 中 poll()和 remove()有什么区别?


30.哪些集合类是线程安全的?


31.迭代器 Iterator 是什么?


32.Iterator 怎么使用?有什么特点?


33.Iterator 和 ListIterator 有什么区别?


34.怎么确保一个集合不能被修改?


三、多线程


35.并行和并发有什么区别?


36.线程和进程的区别?


37.守护线程是什么?


38.创建线程有哪几种方式?


39.说一下 runnable 和 callable 有什么区别?


40.线程有哪些状态?


41.sleep() 和 wait() 有什么区别?


42.notify()和 notifyAll()有什么区别?


43.线程的 run()和 start()有什么区别?


44.创建线程池有哪几种方式?


45.线程池都有哪些状态?


46.线程池中 submit()和 execute()方法有什么区别?


47.在 java 程序中怎么保证多线程的运行安全?


48.多线程锁的升级原理是什么?


49.什么是死锁?


50.怎么防止死锁?


51.ThreadLocal 是什么?有哪些使用场景?


52.说一下 synchronized 底层实现原理?


53.synchronized 和 volatile 的区别是什么?


54.synchronized 和 Lock 有什么区别?


55.synchronized 和 ReentrantLock 区别是什么?


56.说一下 atomic 的原理?


125jz网原创文章。发布者:江山如画,转载请注明出处:http://www.125jz.com/3629.html


相关文章
|
17天前
|
Java 程序员
Java社招面试中的高频考点:Callable、Future与FutureTask详解
大家好,我是小米。本文主要讲解Java多线程编程中的三个重要概念:Callable、Future和FutureTask。它们在实际开发中帮助我们更灵活、高效地处理多线程任务,尤其适合社招面试场景。通过 Callable 可以定义有返回值且可能抛出异常的任务;Future 用于获取任务结果并提供取消和检查状态的功能;FutureTask 则结合了两者的优势,既可执行任务又可获取结果。掌握这些知识不仅能提升你的编程能力,还能让你在面试中脱颖而出。文中结合实例详细介绍了这三个概念的使用方法及其区别与联系。希望对大家有所帮助!
134 60
|
16天前
|
算法 安全 Java
Java线程调度揭秘:从算法到策略,让你面试稳赢!
在社招面试中,关于线程调度和同步的相关问题常常让人感到棘手。今天,我们将深入解析Java中的线程调度算法、调度策略,探讨线程调度器、时间分片的工作原理,并带你了解常见的线程同步方法。让我们一起破解这些面试难题,提升你的Java并发编程技能!
55 16
|
13天前
|
Java 程序员 调度
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
46 9
|
16天前
|
Java 调度 开发者
Java线程池ExecutorService学习和使用
通过学习和使用Java中的 `ExecutorService`,可以显著提升并发编程的效率和代码的可维护性。合理配置线程池参数,结合实际应用场景,可以实现高效、可靠的并发处理。希望本文提供的示例和思路能够帮助开发者深入理解并应用 `ExecutorService`,实现更高效的并发程序。
30 10
|
18天前
|
安全 Java 程序员
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
48 12
|
19天前
|
Java 数据库连接 数据库
【潜意识Java】深度分析黑马项目《苍穹外卖》在Java学习中的重要性
《苍穹外卖》项目对Java学习至关重要。它涵盖了用户管理、商品查询、订单处理等模块,涉及Spring Boot、MyBatis、Redis等技术栈。
51 4
|
19天前
|
前端开发 Java 数据库连接
【潜意识Java】深度解读JavaWeb开发在Java学习中的重要性
深度解读JavaWeb开发在Java学习中的重要性
25 4
|
19天前
|
存储 移动开发 算法
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
43 1
|
29天前
|
SQL Java 数据库连接
Java MyBatis 面试题
Java MyBatis相关基础面试题
|
29天前
|
存储 监控 算法
Java JVM 面试题
Java JVM(虚拟机)相关基础面试题