• 独家!Java面试题整理,源自真实面试经历


    前言:

    在各大IT交流平台上都搜索不到的最新最完整详细的Java面试题文档
    2022年一眨眼就到十一月了,这段时间熬夜总结了下半年各类Java面试题,初中级和中高级都有,包括Java OOP面试题、Java集合/泛型面试题、Java异常面试题、Java种的IO与NIO面试题、Java反射面试题、Java序列化面试题、Java注解面试题、多线程与并发面试题、JVM面试题、MySQL面试题、Redis面试题、Memcached面试题、MongoDB面试题、String面试题、Spring Boot面试题、Spring Cloud面试题、RabbitMQ面试题、Dubbo 面试题、MyBatis 面试题、ZooKeeper 面试题、数据结构面试题、算法面试题、Elasticsearch 面试题、Kafka 面试题、微服务面试题、Linux面试题。

    足够详细!足够完整!足够精选!没有那么多糟粕,留下的都是精华!行与不行,看完说话!

    Spring 面试专题

    Spring 框架是一个为 Java 应用程序的开发提供了综合、广泛的基础性支持的 Java 平台。

    • 什么是 Spring 框架?Spring 框架有哪些主要模块?
    • 使用 Spring 框架能带来哪些好处?
    • 什么是控制反转(IOC)?什么是依赖注入?
    • 请解释下 Spring 框架中的 IoC?
    • BeanFactory 和 ApplicationContext 有什么区别?
    • Spring 有几种配置方式?
    • 如何用基于 XML 配置的方式配置 Spring?
    • 如何用基于 Java 配置的方式配置 Spring?
    • 怎样用注解的方式配置 Spring?
    • 请解释 Spring Bean 的生命周期?
    • Spring Bean 的作用域之间有什么区别?
    • 什么是 Spring inner beans?
    • Spring 框架中的单例 Beans 是线程安全的么?
    • 请举例说明如何在 Spring 中注入一个 Java Collection?
    • 如何向 Spring Bean 中注入一个 Java.util.Properties?
    • 请解释 Spring Bean 的自动装配?
    • 请解释自动装配模式的区别?
    • 如何开启基于注解的自动装配?
    • 请举例解释@Required 注解?
    • 请举例解释@Autowired 注解?
    • 请举例说明@Qualifier 注解?
    • 构造方法注入和设值注入有什么区别?
    • Spring 框架中有哪些不同类型的事件?
    • FileSystemResource 和 ClassPathResource 有何区别?
    • Spring 框架中都用到了哪些设计模式?

    Spring Boot 面试专题

    Spring Boot 已经建立在现有 spring 框架之上。使用spring 启动,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring Boot 可以帮助我们以最少的工作量,更加健壮地使用现有的 Spring 功能。

    • 什么是 Spring Boot?
    • Spring Boot 有哪些优点?
    • 什么是 JavaConfig?
    • 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
    • Spring Boot 中的监视器是什么?
    • 如何在 Spring Boot 中禁用 Actuator 端点安全性?
    • 如何在自定义端口上运行 Spring Boot 应用程序?
    • 什么是 YAML?
    • 如何实现 Spring Boot 应用程序的安全性?
    • 如何集成 Spring Boot 和 ActiveMQ?
    • 如何使用 Spring Boot 实现分页和排序?
    • 什么是 Swagger?你用 Spring Boot 实现了它吗?
    • 什么是 Spring Profiles?
    • 什么是 Spring Batch?
    • 什么是 FreeMarker 模板?
    • 如何使用 Spring Boot 实现异常处理?
    • 您使用了哪些 starter maven 依赖项?
    • 什么是 CSRF 攻击?
    • 什么是 WebSockets?
    • 什么是 AOP?
    • 什么是 Apache Kafka?
    • 我们如何监视所有 Spring Boot 微服务?

    JVM 面试专题

    JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。

    • 内存模型以及分区,需要详细到每个区放什么。
    • 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
    • 对象创建方法,对象的内存分配,对象的访问定位。
    • GC 的两种判定方法:
    • SafePoint 是什么
    • GC 第三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
    • GC 收集器有哪些?CMS 收集器与 G1 收集器的特点。
    • Minor GC 与 Full GC 分别在什么时候发生?
    • 几种常用的内存调试工具:jmap、jstack、jconsole、jhat
    • 类加载的几个过程:
    • JVM 内存分哪几个区,每个区的作用是什么?
    • 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
    • 简述 java 垃圾回收机制?
    • java 中垃圾收集的方法有哪些?
    • java 内存模型
    • java 类加载过程?
    • 简述 java 类加载机制?
    • 类加载器双亲委派模型机制?
    • 什么是类加载器,类加载器有哪些?
    • 简述 java 内存分配与回收策略以及 Minor GC 和 Major GC

    Dubbo 面试专题

    Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之。

    • dubbo 服务集群配置(集群容错模式)
    • dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多:
    • dubbo 通信协议 dubbo 协议为什么不能传大包:
    • dubbo 通信协议 dubbo 协议为什么采用异步单一长连接:
    • dubbo 通信协议 dubbo 协议适用范围和适用场景
    • RMI 协议
    • Hessian 协议
    • http
    • Webservice
    • Thrif
    • Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
    • dubbo 服务负载均衡策略?
    • Dubbo 在安全机制方面是如何解决的
    • dubbo 连接注册中心和直连的区别

    MySQL 面试专题

    MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

    • 数据库三范式是什么?
    • 有哪些数据库优化方面的经验?
    • 请简述常用的索引有哪些种类?
    • 以及在 mysql 数据库中索引的工作机制是什么?
    • MySQL 的基础操作命令:
    • mysql 的复制原理以及流程。
    • mysql 支持的复制类型?
    • mysql 中 myisam 与 innodb 的区别?
    • mysql 中 varchar 与 char 的区别以及 varchar(50)中的 50 代表的涵义?
    • MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
    • 表中有大字段 X(例如:text 类型),且字段 X 不会经常更新,以读为为主,将该字段拆成子表好处是什么?
    • MySQL 中 InnoDB 引擎的行锁是通过加在什么上完成(或称实现)的?
    • MySQL 中控制内存分配的全局参数,有哪些?
    • 若一张表中只有一个字段 VARCHAR(N)类型,utf8 编码,则 N 最大值为多少(精确到数量级即可)
    • *[SELECT ] 和[SELECT 全部字段]的 2 种写法有何优缺点?
    • HAVNG 子句 和 WHERE 的异同点?
    • MySQL 当记录不存在时 insert,当记录存在时 update,语句怎么写?
    • MySQL 的 insert 和 update 的 select 语句语法

    Redis 面试专题

    Redis即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

    • 什么是 Redis?简述它的优缺点?
    • Redis 与 memcached 相比有哪些优势?
    • Redis 支持哪几种数据类型?
    • Redis 主要消耗什么物理资源?
    • Redis 有哪几种数据淘汰策略?
    • Redis 官方为什么不提供 Windows 版本?
    • 为什么 Redis 需要把所有数据放到内存中?
    • Redis 集群方案应该怎么做?都有哪些方案?
    • Redis 集群方案什么情况下会导致整个集群不可用?
    • MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?
    • redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。
    • Redis 有哪些适合的场景?
    • Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
    • Redis 和 Redisson 有什么关系?
    • Jedis 与 Redisson 对比有什么优缺点?
    • 说说 Redis 哈希槽的概念?
    • Redis 集群的主从复制模型是怎样的?
    • Redis 集群会有些操作丢失吗?为什么?
    • Redis 集群之间是如何复制的?
    • Redis 集群最大节点个数是多少?
    • Redis 集群如何选择数据库?
    • Redis 中的管道有什么用?
    • 怎么理解 Redis 事务?
    • Redis 事务相关的命令有哪几个?
    • Redis key 的过期时间和永久有效分别怎么设置?
    • Redis 如何做内存优化?
    • Redis 回收进程如何工作的?
    • 加锁机制
    • 锁互斥机制
    • watch dog 自动延期机制
    • 可重入加锁机制
    • 释放锁机制
    • 上述 Redis 分布式锁的缺点
    • 使用过 Redis 分布式锁么,它是怎么实现的?
    • 使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?
    • 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?

    Linux 面试专题

    Linux,全称GNU/Linux,是一套免费使用和自由传播的类UNIX操作系统

    • ** Linux 中主要有哪几种内核锁?**
    • Linux 中的用户模式和内核模式是什么含义?
    • 怎样申请大块内核内存?
    • 用户进程间通信主要哪几种方式?
    • 通过伙伴系统申请内核内存的函数有哪些?
    • Linux 虚拟文件系统的关键数据结构有哪些?(至少写出四个)
    • 对文件或设备的操作函数保存在哪个数据结构中?
    • Linux 中的文件包括哪些?
    • 创建进程的系统调用有哪些?
    • 调用 schedule()进行进程切换的方式有几种?
    • Linux 调度程序是根据进程的动态优先级还是静态优先级来调度进程的?
    • 进程调度的核心数据结构是哪个?
    • 如何加载、卸载一个模块?
    • 模块和应用程序分别运行在什么空间?
    • Linux 中的浮点运算由应用程序实现还是内核实现?
    • 模块程序能否使用可连接的库函数?
    • TLB 中缓存的是什么内容?
    • Linux 中有哪几种设备?
    • 字符设备驱动程序的关键数据结构是哪个?
    • 设备驱动程序包括哪些功能函数?
    • 如何唯一标识一个设备?
    • Linux 通过什么方式实现系统调用?
    • Linux 软中断和工作队列的作用是什么?

    并发面试专题

    所谓并发编程是指在一台处理器上“同时”处理多个任务。并发生在同一实体上的多个事件。多个事件在同一时间间隔发生。

    Synchronized 相 关 问 题

    **问 题 一 : **Synchronized 用过吗,其原理是什么?

    **问 题 二 : **你刚才提到获取对象的锁,这个 “ 锁 ” 到底是什么?如何确定对象的锁?

    **问 题 三 : **什么是可重入性,为什么说Synchronized是可重入锁?

    **问 题 四 : **JVM对Java的原生锁做了哪些优化?

    **问 题 五 : **为什么说Synchronized是非公平锁?

    **问 题 六 : **什么是锁消除和锁粗化?

    **问 题 七 : **为什么说Synchronized是一个悲观锁?乐观锁的实现原理又是什么?什么是CAS,它有什么特性?

    **问 题 八 : **乐观锁一定就是好的吗?

    可重入锁ReentrantLock及其他显式锁相关问题

    问 题 一 :跟 Synchronized 相比, 可重入锁 ReentrantLock 其实现原理有什么不同?

    **问 题 二 : **那么请谈谈 AQS 框架是怎么回事儿?

    **问 题 三 : **请尽可能详尽地对比下 Synchronized 和 ReentrantLock 的异同。

    **问 题 四 : **ReentrantLock 是如何实现可重复性的?

    **问 题 五 : **除了 ReetrantLock,你还接触过 JUC 中的哪些并发工具?

    **问 题 六 : **请谈谈 ReadWriteLock 和 StampedLock。

    **问 题 七 : **如何让 Java 的线程彼此同步?你了解过哪些同步器? 请分别介绍下。

    **问 题 八 : **CyclicBarrier 和 CountDownLatch 看起来很相似,请对比下呢?

    Java 线 程 池 相 关 问 题

    **问 题 一 : **Java 中的线程池是如何实现的?

    **问 题 二 : **创建线程池的几个核心构造参数?

    **问 题 三 : **线程池中的线程是怎么创建的?是一开始就随着线程池的启动创建好的吗?

    **问 题 四 : **既然提到可以通过配置不同参数创建出不同的线程池,那么 Java 中默认实现好的线程池又有哪些呢?请比较它们的异同。

    **问 题 五 : **如何在 Java 线程池中提交线程?

    Java 内存模型相关问题

    **问 题 一 : **什么是 Java 的内存模型, Java 中各个线程是怎么彼此看到对方的变量的?

    **问 题 二 : **请谈谈 volatile 有什么特点,为什么它能保证变量对所有线程的可见性?

    **问 题 三 : **既然 volatile 能够保证线程间的变量可见性,是不是就意味着基于 volatile 变量的运算就是并发安全的?

    **问 题 四 : **请对比下 volatile 对比 Synchronized 的异同。

    **问 题 五 : **请谈谈 ThreadLocal 是怎么解决并发安全的?

    **问 题 六 : **很多人都说要慎用 ThreadLocal,谈谈你的理解,使用 ThreadLocal 需要注意些什么?

  • 相关阅读:
    R语言的DICE模型实践技术
    C++面试常见问题 — C++语言基础
    用go封装一下二级认证功能
    代理模式(CGLIB和JDK)
    获取PDF中的布局信息——如何获取段落
    海事无人机解决方案
    蓝桥杯练习
    动态IP代理是什么?一文看懂动态代理IP
    Python数值方法和可视化
    Python函数递归
  • 原文地址:https://blog.csdn.net/LBWNB_Java/article/details/127745643