大厂面试力推!精挑细选打造的“Java面试题”没有那么多糟粕,留下的都是精华!行与不行,客官看完说话!

 

前言:

CSDN首发!在各大IT交流平台上都搜索不到的最新最完整详细的Java面试题文档,文章概括:

“Spring+JVM+Spring Boot+Dubbo+MySQL+Redis+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 需要注意些什么?

由于文章篇幅原因,这里只展示了部分文档和答案,需要完整面试资料的,三连后“加我助理VX”即可免费获取到

猜你喜欢

转载自blog.csdn.net/a159357445566/article/details/108979038