写点什么

独家!精挑细选三个月的臻品 Java 面试题,无糟粕!高质量

用户头像
白亦杨
关注
发布于: 20 小时前

 


点击并拖拽以移动


前言:

在各大 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 需要注意些什么?



点击并拖拽以移动


由于文章篇幅原因,这里只展示了部分文档和答案,需要完整面试资料的,点击此处即可免费获取到

用户头像

白亦杨

关注

还未添加个人签名 2021.07.06 加入

还未添加个人简介

评论

发布
暂无评论
独家!精挑细选三个月的臻品Java面试题,无糟粕!高质量