疫情当下、裁员浪潮,焦虑和不安充斥着这个金九银十。为了能让大家有更好的面试资料去面试大厂的技术岗位,花费了2个多月的时间,把市面上的所有的Java面试题,做了一个归纳

本文档是从阿里面试官整理的Java面试题其包含的内容模块有:基础、JVM、多线程与高并发、Spring、MyBatis、SpringBoot、MYSQL、SpringCloud、Dubbo、Nginx、MQ、数据结构与算法、Linux、Zookeeper、Redis、分布式、网络、设计模式、maven、ElasticSearch、git、软实力集训等!
注:熬夜整理最新《10w+字总结的Java面试题(附答案)》,篇幅原因,以下会列举全部的面试题,答案截图展现部分,但如果你也需要刷题造火箭,需要的小伙伴可以转发+关注+收藏之后,私信【Java面试题】即可!!
目录:

Java基础篇

- 1.什么是Java
- 2. Java的特点有哪些
- 3. JDK和JRE和JVM的区别
- 4. Oracle JDK 和 OpenJDK 的对比
- 5. Java有哪些数据类型
- 6. Java中引用数据类型有哪些,它们与基本数据类型有什么区别?
- 7. 从使用方面来说
- 8. Java中的自动装箱与拆箱
- 9. 为什么要有包装类型?
- 10. a=a+b与a+=b有什么区别吗?

字符串&集合面试题汇总
- 1. Java 中操作字符串都有哪些类?它们之间有什么区别?
- 2. String、StringBuffer和StringBuilder区别(类似上一题)
- 3、 相同点
- 4. String str="i"与 String str=new String("i")一样吗?
- 5. String 类的常用方法都有那些?
Java并发编程
- 1.多线程有什么用?
- 2.多线程和单线程的区别和联系?
- 3.简述线程、程序、进程的基本概念。以及他们之间关系是什么?
- .4. 线程的创建方式
- 5.线程有哪些基本状态?
- 6.如何停止一个正在运行的线程
- 7. start(方法和run(0方法的区别
- 8.为什么我们调用start0方法时会执行run(方法,为什么我们不能直接调用run0方法?
- 9. Runnable接C和C allable接口的区别
- 10.什么是线程安全?
- 11.线程的状态转换?
- 12.在多线程中,什么是上下文切换(context- switching)?
- 13. Java中堆和栈有什么不同?
- 14.如何确保线程安全?
- 15.什么是竞态条件?你怎样发现和解决竞争?
- 16.用户线程和守护线程有什么区别?
- 17.如何创建守护线程?以及在什么场合来使用它?
- 18.线程安全的级别
- 19.你对线程优先级的理解是什么?
- 20.什么是线程调度器(Thread Scheduler)和时间分(Time Slicing)?
- 21. volatile关键字的作用
- 22. volatile 变和atomic变量有什么不同?
- 23. volatile是什么?可以保证有序性吗?
- 24.什么是Java内存模型
- 25. sleep方法和wait方法有什么区别
- 26.线程的sleep0方法和yield0方法有什么区别?
- 27. Thread.sleep(0)的作用是什么
- . 28.线程类的构造方法、静态块是被哪个线程调用的
- 29.在线程中你怎么处理不可控制异常?
- 30.同步方法和同步块,哪个是更好的选择
- 31.有三个线程T1,T2,T3,如何保证顺序执行? .
- 32.什么是CAS
- 33. CAS? CAS有什么缺陷,如何解决?
- . 34.什么是AQS
- 35.线程池作用
- 36. ThreadLocal是什么
- 37. ThreadLocal有什么用
- 38. ThreadLocal原理,使用注意点,应用场景有哪些?
- 39. notify0和notifyAll()有什么区别?
- 40.为什么wait(方法和notify0/notifyAlI0方法要在同步块中被调用
- 41. wait(方法和notify()/notifyAll0方法在放弃对象监视器时有什么区别
- 42. wait0方法和notify0/notifyAII0)方法在放弃对象监视器时有什么区别
- 43.线程中断是否能直接调用stop,为什么?
- 44.什么是阻塞(Blocking) 和非阻塞(Non- Blocking) ?
- 45.什么是自旋
- 46.自旋锁的优缺点?
- 47.什么是线程池?为什么要使用它?
- 48.常用的线程池模式以及不同线程池的使用场景?
- 49.在Java中Executor、ExecutorService、 Executors的区别?
- 50.请说出与线程同步以及线程调度相关的方法。
- 51.举例说明同步和异步。
- .52.不使用stop停止线程?
- . 53.如何控制某个方法允许并发访问线程的大小?
- 54.如何创建线程池
- 55.高并发、任务执行时间短的业务怎样使用线程池?并发不高、任务执行时间长的业务怎样使用线程池
- 56.什么是线程安全
- . 57. Java中interrupted和isInterruptedd方法的区别?

JVM面试题
- . 1.什么是Java虚拟机?为什么Java被称作是”平台无关的编程语言' ?
- . 2. Java内存结构?
- .3. Java内存分配
- 4. Java堆的结构是什么样子的?什么是堆中的永久代(Perm Gen space) ?
- 5. Java中堆和栈有什么区别?
- 6.解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
- . 7. JVM内存分哪几个区,每个区的作用是什么?
- 8.怎么获取Java程序使用的内存?堆使用的百分比?
- 9. JVM有哪些内存区域? (VM的内存布局是什么? )
- 10.鄰载器
- 11. JVM加载class文件的原理机制?
- 12. Java类加载过程
- 13. JVM中对象的创建过程
- 14. Java对象结构
- 15.类的生命周期
- 16.如何判断对象可以被回收?
- 17.如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
- 18. Java的四种引用,强弱软虚
- 19.什么情况下会发生栈溢出?
- . 20. GC是什么?为什么要有GC
- . 21.简述Java垃圾回收机制。
- 22. JVM的永久代中会发生垃圾回收么?
- 23.什么是分布式垃圾回收(DGC) ?它是如何工作的?
- . 24. JVM垃圾处理方法
- 25.你能说出来机个垃圾收集器
- .26.简单描述一 下(分代)垃圾回收的过程
- 27.你都用过G 1垃圾回收器的哪几个重要参数?

数据结构与算法
- 1.什么是数据结构?
- 2.为什么我们需要数据结构?
- 3.常见的数据结构
- 4.冒泡排序
- .5.插入排序
- 6.选择排序
- . 7.归并排序
- 8.快速排序
- 9.二分查找
- 10.二分查找II
- : 11.删除排序数组中的重复项
- : 12.删除排序数组中的重复项II
- 13.移除元素
- 14.移动零
- 15.数组中重复的数字
- 16.旋转数组
- 17.螺旋矩阵
- 18.两数之和
- 19.三数之和
- 20.四数之和
- . 21.较小的三数之和
- 22.最接近的三数之和
- . 23.合并两个有序数组
- 24.寻找旋转排序数组中的最小值
- .25.寻找旋转排序数组中的最小值II
- 26.除自身以外数组的乘积
网络协议面试题
- 1.什么是网络编程
- 2.网络编程中两个主要的问题
- : 3.网络协议是什么
- 4.为什么要对网络协议分层
- 5.计算机网络体系结构
- 6.什么是TCP/IP和UDP
- .7. TCP与UDP区别:
- 8. TCP和UDP的应用场景:
- 9.形容一下TCP和UDP
- 10.运行在TCP或UDP的应用层协议分析。
- 11.什么是Http协议?
- 12. Http和Https的区别?
- 13.什么是http的请求体?
- 14. HTTP的响应报文有哪些?
- 15. HTTPS I作原理
- 16.三次握手与四次挥手
- 17.为什么TCP链接需要三次握手,两次不可以么?
- 18.用现实理解三次握手的具体细节
- 19.建立连接可以两次握手吗?为什么?
- 20.为什么要四次挥手?
- . 21. TCP协议如何来保证传输的可靠性

数据库
MySQL面试题
- 1. MySQL中的varchar和char有什么区别.
- 2. varchar(10)和int(10)代表什么含义?
- 3. MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义
- 4. innodb的事务与日志的实现方式
- 5. MySQl的binlog有有几种录入格式?分别有什么区别?**
- 6.超大分页怎么处理?**
- 7.关心过业务系统里面的sq|耗时吗?统计过慢查询吗?对慢查询都怎么优化过?**
- 8. .上面提到横向分表和纵向分表,可以分别举一个适合他们的例子吗?
- 9.什么是存储过程?有哪些优缺点?
- 10.说-说三个范式

52条SQL性能优化策略

由于篇章太多需要的小伙伴可以转发+关注+收藏之后,私信【Java面试题】即可!!
由一千行SQL命令
- 干行SQL命令
- 基本操作
- 数据库操作
- 表的操作
- 数据操作
- 字符集编码
- 数据类型(列类型)
- 列属性(列约束)

Redis面试题
- 1.什么是Redis? 简述它的优缺点?
- . 2.为什么要用redis/为什么要用缓存
- . 2. Redis与memcached相比有哪些优势?
- . 3. Redis支持哪几种数据类型?
- 4. Redis主要消耗什么物理资源?
- . 5. Redis有哪几种数据淘汰策略?
- 6. Redis官方为什么不提供Windows版本?
- 7.-个字符串类型的值能存储最大容量是多少?
- 8.为什么Redis需要把所有数据放到内存中?
- 9.如何保证缓存与数据库双写时的数据一致性?
- 10. Redis中数据库默认是多少个db即作用?
- .11. Redis集群方案应该怎么做?都有哪些方案?
- . 12. Redis集群方案什么情况下会导致整个集群不可用?
- .13. MySQL里有2000w数据, redis帜存20w的数据,如何保证redis中的数据都是热点数据?
- 14. Redis有哪些适合的场景?
- 15.说说Redis哈希槽的概念?
- 16. Redis集群的主从复制模型是怎样的?

MongoDB面试题
- 1. mongodb是什么?
- 2. mongodb有哪些特点?
- : 3. mongodb的结构介绍
- 4. MongoDB的优势有哪些
- 5.什么是集合
- . 6.什么是文档
- .7.什么是NoSQl数据库?NoSQl与RDBMS直接有什么区别?为什么要使用和不使用NoSQl数据库?说
- 8. NoSQl数据库有哪些类型?
- 9. MySQL与MongoDB之间最基本的差别是什么?
- 10.你怎么比较MongoDB、CouchDB及CouchBase?
- . 11. MongoDB成为最好NoSQL数据库的原因是什么? .
- 12. journa回放在条目(entry)不完整时(此如恰巧有-一个中途故障了)会遇到问题吗?
- 13.分析器在MongoDB中的作用是什么?
- 14. 如果用户移除对象的属性,该属性是否从存储层中删除?
- 15.能否使用日志特征进行安全备份?
- 16.允许空值nul吗?

框架相关面试题
Spring面试题
- 1.什么是spring?
- 2.说说你对Spring的理解
- 3.使用Spring框架的好处是什么?
- 4. Spring由哪些模块组成?
- *5. Spring框架使用了哪些设计模式
- 6. Spring支持的ORM
- " 7. Spring Framework有哪些不同的功能?
- 8.什么是Spring的MVC框架?
- 9. springmvc常用到的注解,作用是什么,原理。
- 10.在Spring中,有几种配置Bean的方式?
- 11.请解释一下 Spring Bean的生命周期?
- 12. BeanF actory和ApplicationContext有什么区别?

MyBatis面试题
- .1.什么是Mybatis?
- . 2. Mybaits的优点:
- - 3. MyBatis框架的缺点: .
- 4、MyBatis框架适用场合:
- . 5、MyBatis与Hibernate有哪些不同?
- 6. Mybatis比IBatis比较大的几个改进是什么?
- . 7. ORM是什么
- 8.为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
- . 9.传统JDBC开发存在什么问题?
- 10. JDBC编程有哪些不足之处,MyBatis是如何解决的?
- 11. MyBatis编程步骤是什么样的?
- 12.请说说MyBatis的工作原理
- 13. MyBatis的功能架构是怎样的
- 14. MyBatis的框架架构设计是怎么样的
- 15.什么是DBMS
- 16.为什么需要预编译
- . 17. #{}和${的区别是什么?
- 18.当实体类中的属性名和表中的字段名不一样,怎么办?
- 19.模糊查询like语句该怎么写?
- . 20. Mybatis都有哪些Executor执行器?它们之间的区别是什么?
- 21. Mybatis中如何指定使用哪一种Executor执行器?
- .22.通常- 个Xm|映射文件, 都会写一个Dao接口与之对应,请问,这个Dao接口的工作原理是什么?
- . 23. Mybatis是如何进行分页的?分页插件的原理是什么?
- 24. Mybatis是如何将sq|执行结果封装为目标对象并返回的?都有哪些映射形式?
- . 25.如何获取自动生成的(主)键值?
- 26.在mapper中如何传递多个参数?
- . 27. Mybatis是否支持延迟加载?如果支持,它的实现原理是什么?
SpringBoot面试题
- . 1.什么是springboot ?
- . 2. Springboot有哪些优点?
- 3. Spring Boot的目录结构是怎样的?
- . 4.怎么理解Spring Boot中”约定优于配置"
- . 5.如何在自定义端口上运行Spring Boot应用程序?
- 6. Spring Boot初始化环境变量流程?
- . 7. Spring Boot扫描流程?
- 8. Spring Boot配置加载顺序详解
- 9. Spring Boot如何定义多套不同环境配置?
- 10. Spring Boot有哪几种读取配置的方式?
- .11. SpringBoot实现热部置有哪几种方式?
- 12. Spring Boot支持哪些日志框架?推荐和默认的日志框架是哪个
- 13.如何重新加载Spring Boot上的更改,呒需重新启动服务器?
- 14.你如何理解Spring Boot中的Starters?
- 15. spring- boot- starter-parent有什么用?
- 16.什么是Spring Boot Stater ?
- 17. SpringBoot常用的starter有哪些?

Spring & SpringBoot常用注解
- 1. @SpringBootApplication
- 2. Spring Bean相关
- 3.处理常见的HTTP请求类型
- 4.前后端传值
- 5.读取配置信息
- 6.参数校验
- 7.全局处理Controller层异常
- 8. JPA相关
- 9. 事务 @Transactional
- 10. json数据处理
- L 11.测试相关

微服务
SpringCloud面试题
- 1.什么是微服务?
- 2.什么是微服务架构?
- . 3.微服务的优缺点是什么?说下你在项目中碰到的坑。
- 4.你所知道微服务的技术栈有哪些?列举一二。
- .5.微服务之间如何独立通讯的?
- 6. Spring Cloud的版本关系
- .7. Spring Cloud的子项目 (主要项目)
- 8. spring cloud的核心组件有哪些?
- 9. springcloud如何实现服务的注册?
- 10.什么是Eureka
- . 11. Eureka和zookeeper都可以提供服务注册与发现的功能, 请说说两个的区别?
- 12.你所知道的微服务技术栈?
- 13.使用Spring Cloud有什么优势?
- 14. SpringBoot和SpringCloud之间关系?
- 15. SpringCloud和Dubbo有哪些区别?
- 16.什么是Spring Cloud Config?
- 17.什么是Ribbon?
- 18.什么是feigin?它的优点是什么?
- 19. Ribbon和Feign的区别?
- 20.什么是Spring Cloud Gateway?
- .21.什么是Hystrix?它如何实现容错?
- . 22.什么是Hystrix断路器?我们需要它吗?
- . 23.什么是Netflix Feign?它的优点是什么?
- 24.什么是Spring Cloud Gateway?
- 25.服务注册和发现是什么意思? Spring Cloud如何实现?
- 26.负载平衡的意义什么?
- 27.什么是熔断?什么是服务降级?

中间件相关
Dubbo面试题
- 1. Dubbo是什么?
- .2.为什么要用Dubbo?
- 3. Dubbo和Spring Cloud有什么区别?
- 4. Dubbo都支持什么协议,推荐用哪种?
- 5. Dubbo需要Web容器吗?
- 6. Dubbo内置了哪几种服务容器?
- : 7. Dubbo里面有哪几种节点角色?
- 8.画一画服务注册与发现的流程图
- 9. Dubbo默认使用什么注册中心,还有别的选择吗?
- 10. Dubbo有哪几种配置方式?
- 11. Dubbo核心的配置有哪些?
- 12.在Provider.上可以配置的Consumer端的属性有哪些?

Nginx面试题
- 1.请解释一 下什么是Nginx?
- .2.什么是正向代理和反向代理?
- 3.使用”反向代理服务器的优点是什么?
- 4.请列举Nginx的一些特性。
- 5. Nginx的优缺点?
- 6.为什么Nginx性能这么高?
- . 7. Nginx应用场景?
- 8.请解释Nginx服务器上的Master和Worker进程分别是什么?
- 9.请解释你如何通过不同于80的端C开启Nginx?
- 10. Nginx负载均衡的算法怎么实现的?策略有哪些?
- ..11. Nginx配置可用性怎么配置?
- 12. Nginx怎么判断IP不可访问?
Zookeeper面试题
- 1. ZooKeeper是什么?
- .2. ZooKeeper提供了什么?
- 3. Zookeeper都有哪些功能?
- 4. Zookeeper文件系统
- 5.有哪些著名的开源项目用到了ZooKeeper?
- 6.说- -下Zookeeper的通知机制?
- .7. Zookeeper机制的特点
- 8. Zookeeper和Dubbo的关系?
- 9. Zookeeper的java客户端都有哪些?
- 10. Zookeeper的典型应用场景
- 11. Zookeeper怎么保证主从节点的状态同步?

MQ面试题
- 1. RabbitMQ是什么?
- 2.为什么要用RocketMq?
- :3.使用MQ的缺陷有哪些?
- 4.你了解哪些常用的MQ?
- 5. MQ有哪些使用场景?
- 6. RabbitMQ特点?
- .7. AMQP是什么? .
- 8. AMQP协议3层?
- 9. Rocketmq的工作流程是怎样的?
- 10. Rocketmq如何保证高可用性?
- 11. RocketMq如何负载均衡?
- 12. RocketMq的存储机制了解吗?
- 13. RocketMq的存储结构是怎样的?
- 14. RocketMq性能比较高的原因?
- 15. AMQP模型的几大组件?

KafKa面试题
- 1.什么是kafka
- .2.为什么要使用kafka, 为什么要使用消息队列
- 3. Kafka中的ISR、AR又代表什么? ISR的伸缩又指什么
- 4. Kafka中的broker于什么的
- 5.什么是消费者组?
- 6. Kafka中的zookeeper起到什么作用,可以不用zookeeper么**
- . 7. Kafka为什么那么快
- 8.如何设置Kafka能接收的最大消息的大小?
- 9.监控Kafka的框架都有哪些?
- 10.如何估算Kafka集群的机器数量?
- 11. Kafka能手动删除消息吗?
- 12._ consumer_
- offsets;是做什么用的?

ElasticSearch面试题
- 1.简要介绍一下Elasticsearch?
- 2.安装Elasticsearch需要依赖什么组件吗?
- 3.如何启动Elasticsearch服务器?
- 4. ElasticSearch中的集群、节点索引、文档、类型是什么?
- 5. Elasticsearch支持哪些类型的查询?
- 6.精准匹配检索和全文检索匹配检索的不同?
- : 7. ElasticSearch中的分片是什么?
- 8.请解释一下 Elasticsearch中聚合?
- 9.解释-下Elasticsearch Cluster?
- 10.解释一 下Elasticsearch Node?
- 11.解释一下Elasticsearch 集群中的Type的概念?
- 12.解释一 下Elasticsearch的分片?
- 13.定义副本、创建副本的好处是什么?
- 14. Elasticsearch Analyzer中的字符过滤器如何利用?
- 15. REST API在Elasticsearch方面有哪些优势?

Linux
- 启动网络命令
- . pwd命令
- Is命令
- cd命令
- mkdir命令
- rmdir命令
- touch命令
- rm命令
- . echo命令
- . >和>>命令
- 文件查看命令
- . 文件编辑命令
- cp命令
- . scp命令
- . mv命令
- . man命令
- free命令
- df命令
- . wc命令


限于篇幅原因,这几份文档已经被小编整理成PDF文档格式了,如果你有需要的小伙伴可以转发+关注+收藏之后,私信【Java面试题】即可!!