前言
2021金三银四,年假准备跳槽的小伙伴注意了,小编在这里为你们准备了Java后端必备的35个专题面试技术栈!都是小编在各个大厂总结出来的面试真题,小编这次分享涵盖了Java后端面试必问的35个技术点:JVM、Linux、MyBatista、Spring Boot、Spring、SQL优化、Tomcat、Zookeeper、消息中间件、Dubbo、MongoDB、MySQL、RabbitMQ、Redis、Spring Cloud、并发编程、开源框架、ActiveMQ、等35个专题技术栈分享给到大家,希望年后能助大家一臂之力,挺进一线互联网大厂,冲刺年薪百万!
小编这篇分享篇幅可能有点长,观看的朋友可以先了解一下目录
- JVM面试专题
- Linux面试专题
- MyBatis面试专题
- SpringBoot面试专题
- Spring面试专题
- SQL优化面试专题
- Tomcat面试专题
- zookeeper面试专题
- 消息中间件面试专题
- Dubbo面试(上)
- Dubbo面试专题(下)
- MongoDB面试专题
- mysql面试专题
- RabbitMQ消息中间件面试专题
- redis面试题(上)
- Redis面试专题(下)
- SpringCloud面试专题
- 并发编程(上)
- 并发编程面试专题(下)
- 开源框架面试专题
- ActiveMQ消息中间件面试专题
- Java基础面试题
- Kafka面试专题
- memcached面试专题
- ElasticSearch面试题
- MySQL性能优化的21个最佳实践
- SpringMVC面试专题
- 面试必备之乐观锁与悲观锁
- 设计模式面试专题
- java后端面试题
- Netty面试专题
- Nginx面试专题
- 多线程面试专题
- 数据库面试专题
- 微服务面试专题
一、JVM面试专题
- 内存模型以及分区,需要详细到每个区放什么?
- 什么情况下会发生栈内存溢出?
- 详解JVM内存模型
- JVM内存为什么要分成新生代,老年代,持久代。新生代中为什么
- 要分为Eden和Survivor
- 堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
- GC 的两种判定方法:
- SafePoint 是什么
- GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
- GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
- 类加载的几个过程:
- JVM 内存分哪几个区,每个区的作用是什么?
- 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
- 简述 java 垃圾回收机制?
- java 内存模型
- 类加载器双亲委派模型机制?
- 垃圾收集器相关
- 怎么打出线程栈信息
- 强引用、软引用、弱引用、虚引用的区别?
- 什么是类加载器,类加载器有哪些?
- 内存屏障
- 说一下 JVM由那些部分组成,运行流程是什么?
- 说一下 JVM 运行时数据区
- 详细的介绍下程序计数器?(重点理解)
- 你能给我详细的介绍Java堆吗?
- 能不能解释一下方法区
- 什么是JVM字节码执行引擎
- 堆栈的区别是什么?
- Java会存在内存泄漏吗?请说明为什么?
- 垃圾回收器的原理是什么?有什么办法手动进行垃圾回收?
- 简单说说你了解的类加载器,可以打破双亲委派么,怎么打破。
- 为什么需要双亲委派模型?
- 说说你知道的几种主要的JVM参数
- 简述 java 内存分配与回收策率以及 Minor GC 和Major GC
- 对象优先在堆的 Eden 区分配。
- 大对象直接进入老年代.
- 长期存活的对象将直接进入老年代.
当 Eden 区没有足够的空间进行分配时,虚拟机会执行一次 Minor GC.Minor Gc 通
常发生在新生代的 Eden 区,在这个区的对象生存期短,往往发生 Gc 的频率较高,
回收速度比较快;Full Gc/Major GC 发生在老年代,一般情况下,触发老年代 GC
的时候不会触发 Minor GC,但是通过配置,可以在 Full GC 之前进行一次 Minor
GC 这样可以加快老年代的回收速度。
由于篇幅有限,获取完整面试题和答案解析可以转发后关注公众号:麒麟改bug获取
35.Jdk和Jre和JVM的区别
二、Linux面试专题
- Linux 中主要有哪几种内核锁?
- 怎样申请大块内核内存?
- 通过伙伴系统申请内核内存的函数有哪些?
- 如何加载、卸载一个模块?
- Linux 中的浮点运算由应用程序实现还是内核实现?
- 模块程序能否使用可链接的库函数?
- 字符设备驱动程序的关键数据结构是哪个?
- 如何唯一标识一个设备?
- 什么是Linux
- Unix和Linux有什么区别?
- Linux的基本组件是什么?
- BASH和DOS之间的基本区别是什么?
- Linux 开机启动过程?
- Linux 使用的进程间通信方式?
- Linux系统安装多个桌面环境有帮助吗?
- 什么是BASH?
- 什么是GUI?
- GNU项目的重要性是什么?
- 简单 Linux 文件系统?
- 什么是硬链接和软链接?
- 一台 Linux 系统初始化环境后需要做一些什么安全工作?
- 什么是网站数据库注入?
- 如何选择 Linux 操作系统版本?
- 请问当用户反馈网站访问慢,你会如何处理?
- Linux 性能调优都有哪几种方法?
- 基本命令:cd、pwd、ls、ll、touch、mkdir、cat、more、less、tail
三、MyBatis面试专题
1、什么是 MyBatis?
答:MyBatis 是一个可以自定义 SQL、存储过程和高级映射的持久层框架。
2、讲下 MyBatis 的缓存
答:MyBatis 的缓存分为一级缓存和二级缓存,一级缓存放在 session 里面,默认就有,二级缓
存放在它的命名空间里,默认是不打开的,使用二级缓存属性类需要实现 Serializable 序列化
接口(可用来保存对象的状态),可在它的映射文件中配置<cache/>
3、Mybatis 是如何进行分页的?分页插件的原理是什么?
4、简述 Mybatis 的插件运行原理,以及如何编写一个插件?
5、Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能简述一下动态 sql 的执行原理不?
6、为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
答:Hibernate 属于全自动 ORM 映射工具,使用 Hibernate 查询关联对象或者关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。而 Mybatis 在查询关联对象或关联集合对象时,需要手动编写 sql 来完成,所以,称之为半自动 ORM 映射工具。
7、MyBatis 与 Hibernate 有哪些不同?
8、MyBatis 的好处是什么?
9、MyBatis 实现一对一有几种方式?具体怎么操作的?
10、Mybatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区
别?
11、MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?
12、Mybatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
13、Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
14、当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?
15、Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
16、Mybatis 中如何执行批处理?
17、Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?
18、Mybatis 执行批量插入,能返回数据库主键列表吗?
19、Mybatis 是否可以映射 Enum 枚举类?
20、如何获取自动生成的(主)键值?
21、使用 MyBatis 的 mapper 接口调用时有哪些要求?
22、IBatis 和 MyBatis 在核心处理类分别叫什么?
23、Mybatis 是如何进行分页的?分页插件的原理是什么?
24、简述 Mybatis 的插件运行原理,以及如何编写一个插件
25、一级、二级缓存
26、简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系?
27、Mapper 编写有哪几种方式?
28、什么是MyBatis的接口绑定?有哪些实现方式?
29、使用MyBatis的mapper接口调用时有哪些要求?
30、这个Dao接口的工作原理是什么?Dao接口里的方法,参数不同时,方法能重载吗
31、简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?Xml映射文件中,除了常见的select|insert|updae|delete标签之外,还有哪些标签?
32、Mybatis能执行一对多,一对一的联系查询吗,有哪些实现方法
33、Mybatis是否可以映射Enum枚举类?
34、简述Mybatis的插件运行原理,以及如何编写一个插件。
四、SpringBoot面试专题
1、什么是 Spring Boot?
2、SpringBoot与SpringCloud 区别?
3、Spring Boot 有哪些优点?
4、推荐和默认的日志框架是哪个?
5、它主要由哪几个注解组成的?
6、Spring Boot 的核心注解是哪个?
7、Spring Boot 支持哪些日志框架?
8、SpringBoot的缺点
9、与 1.X 有什么区别?
10、SpringBoot Starter的工作原理
11、Spring Boot 2.X 有什么新特性?
12、SpringBoot支持什么前端模板?
13、Spring Boot 需要独立的容器运行吗?
14、SpringBoot的自动配置原理是什么?
15、SpringBoot 实现热部署有哪几种方式?
16、如何在 Spring Boot 启动的时候运行一些特定的代码?
17、什么是 JavaConfifig?
18、Spring Boot 是否可以使用 XML 配置 ?
19、什么是 YAML?
20、、bootstrap.properties 和application.properties 有何区别 ?
21SpringBoot多数据源拆分的思路
22、spring boot 核心配置文件是什么?b
23、Async异步调用方法:
24、保护 Spring Boot 应用有哪些方法?
25、比较一下 Spring Security 和 Shiro 各自的优缺点 ?
26、Spring Boot 中如何解决跨域问题 ?
27、Spring Boot 中的监视器是什么?
28、SpringBoot性能如何优化?
29、如何重新加载 Spring Boot 上的更改,而无需重新启动服务器?
30、Spring Boot项目如何热部署?
31、SpringBoot的特征?
32、如何快速构建一个SpringBoot项目?
33、SpringBoot支持配置文件的格式?
34、SpringBoot启动方式?
五、Spring面试专题
- 什么是 Spring 框架?
- Spring 框架有哪些主要模块?
- 使用 Spring 框架能带来哪些好处?
- 什么是依赖注入?
- 什么是控制反转(IOC)?
- 请解释下 Spring 框架中的 IoC?
- 核心容器(应用上下文) 模块
- XMLBeanFactory
- Spring的优缺点是什么?
- Spring框架的设计目标,设计理念,和核心是什么?
- Spring 框架中都用到了哪些设计模式?
- 解释 JDBC 抽象和 DAO 模块
- 解释对象/关系映射集成模块
- 什么是 Spring IOC 容器?
- BeanFactory 和 ApplicationContext有什么区别?
- Spring 如何设计容器的,BeanFactory和ApplicationContext的关系详解:
- 有哪些不同类型的依赖注入实现方式?
- Spring 有几种配置方式?
- 如何用基于 Java 配置的方式配置 Spring?
- 怎样用注解的方式配置 Spring?
六、SQL优化面试专题
- Mysql 的技术特点是什么?
- MySQL 中有哪几种锁?
- 唯一索引比普通索引快吗, 为什么?
- Heap 表是什么?
- MySQL 中有哪些不同的表格?
- MySQL由哪些部分组成, 分别用来做什么?
- 与 Oracle 相比,Mysql 有什么优势?
- 简述在MySQL 数据库中 MyISAM 和InnoDB 的区别?
- MySQL查询缓存有什么弊端, 应该什么情况下使用, 8.0版本对查询缓存有什么变更?
- 如何区分 FLOAT 和 DOUBLE?
- 区分 CHAR_LENGTH 和 LENGTH?
- MySQL 中InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?SQL 标准定义的四个隔离级别为?
- MyISAM和InnoDB的区别有哪些?
- MySQL怎么恢复半个月前的数据
- 如果一个表有一列定义为TIMESTAMP,将发生什么?
- 你怎么看到为表格定义的所有索引?
- 做过哪些MySQL索引相关优化?
- 一千万条数据的表, 如何分页查询
- MySQL_fetch_array 和MySQL_fetch_object 的区别是什么?
- MySQL 如何优化DISTINCT?
- 可以使用多少列创建索引?
- 订单表数据量越来越大导致查询缓慢, 如何处理
- 如果一个表有一列定义为 TIMESTAMP,将发生什么?
- 怎样才能找出最后一次插入时分配了哪个自动增量?
- 如何在 Unix 和 Mysql 时间戳之间进行转换?
- mysql_fetch_array 和 mysql_fetch_object 的区别是什么?
- 什么是通用 SQL 函数?
- MySQL 里记录货币用什么字段类型好
- MySQL 有关权限的表都有哪几个?
- MySQL 数据库作发布系统的存储,一天五万条以上的增量, 预计运维三年,怎么优化?
七、Tomcat面试专题
- tomcat 有哪几种Connector 运行模式(优化)?
- Tomcat有几种部署方式?
- Tomcat的缺省端口是多少,怎么修改?
- tomcat 如何优化?
- tomcat容器是如何创建servlet类实例?用到了什么原理?
- 垃圾回收策略调优
- 共享session处理
- 内存调优
- 专业点的分析工具有
- 添加JMS远程监控
- 打印类的加载情况及对象的回收情况
- 关于Tomcat的session数目
- 监视Tomcat的内存使用情况
- .Tomcat工作模式?
- get方式和post方式有何区别
- Servlet相关 API
- 什么是cookie?Session和cookie有什么区别?
八、zookeeper面试专题
- ZooKeeper和dubbo的区别?
- ZooKeeper是什么?
- ZooKeeper 提供了什么?
- 说说Zookeeper 文件系统:
- Zookeeper的java客户端都有哪些?
- 说说ZAB协议?
- 四种类型的数据节点 Znode
- Zookeeper Watcher 机制 — 数据变更通知
- Zookeeper节点宕机如何处理?
- Zookeeper的典型应用场景?
- 服务端处理 Watcher 实现
- ACL 权限控制机制
- 客户端回调 Watcher
- 服务器角色
- 说一下Zookeeper Watcher机制
- 服务端处理Watcher的流程?
- 客户端回调 Watcher流程?
- 客户端注册Watcher的流程?
- 说说ACL权限控制机制?
- Zookeeper 下 Server 工作状态
- zookeeper 是如何保证事务的顺序一致性的?
- 分布式集群中为什么会有 Master?
- 集群最少要几台机器,集群规则是怎样的?
- 集群支持动态添加机器吗?
- chubby 是什么,和 zookeeper 比你怎么看?
- ZAB 和 Paxos 算法的联系与区别?
由于篇幅有限,获取完整面试题和答案解析可以转发后关注公众号:麒麟改bug获取
九、消息中间件面试专题
- activemq 如果数据提交不成功怎么办?
- activemq 的几种通信方式:
- 如何解决消息重复问题
- activeMQ 发送消息的方式有哪些?
- 大量的消息每页被消费,能否发生 oom 异常?
- 消息通信的基本方式有哪两种?分别是哪些?
- 什么是死信队列?
- activeMQ 如何调优
- Basic.Reject 的用法是什么?
- 为什么不应该对所有的 message 都使用持久化机制?
- 向不存在的 exchange 发 publish 消息会发生什么?
- 为什么 heavy RPC 的使用场景下不建议采用 disk node ?
- 向不存在的exchange 发 publish 消息会发生什么?
- queue 执行 consume 动作会发生什么?
- 什么情况下 producer 不主动创建 queue 是安全的?
- “dead letter”queue 的用途?
十、Dubbo面试(上)
1、Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
- dubbo:
- rmi:
- webservice:
- http:
- hessian:
- memcache:
- redis:
2、Dubbo 超时时间怎样设置?有几种设计方式?
3、Dubbo 集群的负载均衡有哪些策略 ?
4、Dubbo 提供了哪些常见的集群策略实现?
5、Dubbo 是什么?
6、Dubbo 的主要应用场景?
7、Dubbo 的核心功能?
8、Dubbo 的架构设计?
9、Dubbo 框架设计一共划分了 10 个层,每个对应的作用是?
- 服务接口层(Service)
- 配置层(Config)
- 服务代理层(Proxy)
- 服务注册层(Registry)
- 集群层(Cluster)
- 监控层(Monitor)
- 远程调用层(Protocol)
- 信息交换层(Exchange)
- 网络传输层(Transport)
十一、Dubbo面试专题(下)
- dubbo 服务负载均衡策略?
- Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
- dubbo 连接注册中心和直连的区别?
- dubbo 服务集群配置(集群容错模式)
- Dubbo 在安全机制方面是如何解决的
- dubbo 通信协议 dubbo 协议为什么要消费者比提供者个数多:
- dubbo 通信协议 dubbo 协议为什么不能传大包:
- . RMI 协议
- dubbo 通信协议 dubbo 协议为什么采用异步单一长连接:
- dubbo 通信协议 dubbo 协议适用范围和适用场景
- Hessian 协议
- Webservice
- Thrif
十二、MongoDB面试专题
- MySQL 与 MongoDB 之间最基本的差别是什么?
- NoSQL 数据库有哪些类型?
- 为什么要使用和不使用NoSQL 数据库?
- 说一说 NoSQL 数据库的几个优点?
- 你说的 NoSQL 数据库是什么意思?
- NoSQL 与 RDBMS 直接有什么区别?
- 你怎么比较 MongoDB、CouchDB 及 CouchBase?
- 32 位系统上有什么细微差别?
- MongoDB 成为最好 NoSQL 数据库的原因是什么?
- 如果用户移除对象的属性,该属性是否从存储层中删除?
- 允许空值 null 吗?
- 分析器在 MongoDB 中的作用是什么?
- 更新操作立刻 fsync 到磁盘?
- 为什么我的数据文件如此庞大?
- 如何执行事务/加锁?
- 启用备份故障恢复需要多久?
- 我必须调用 getLastError 来确保写操作生效了么?
- 分片(sharding)和复制(replication)是怎样工作的?
- 数据在什么时候才会扩展到多个分片(shard)里?
- 我可以把 moveChunk 目录里的旧文件删除吗?
十三、mysql面试专题
- MySQL由哪些部分组成, 分别用来做什么?
- MySQL查询缓存有什么弊端, 应该什么情况下使用?
- 8.0版本对查询缓存有什么变更?
- 做过哪些MySQL索引相关优化
- MySQL事务的隔离级别, 分别有什么特点?
- MyISAM和InnoDB的区别有哪些?
- 一千万条数据的表, 如何分页查询?
- 做过哪些MySQL索引相关优化?
- 订单表数据量越来越大导致查询缓慢, 如何处理?
十四、RabbitMQ消息中间件面试专题
1、RocketMq是什么?
2、RocketMq有什么功能?
3、RoctetMq的架构有哪些组成?对应的功能是哪些?
- NameServer
- Broker
- Producer生产者
- Consumer消费者
4、消息的可用性
5、负载均衡
6、解耦、异步、削峰是什么?
7、消息队列有什么缺点
8、Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?
9、MQ 有哪些常见问题?如何解决这些问题?
10、RabbitMQ基本概念
11、RabbitMQ的工作模式
12、如何保证RabbitMQ消息的顺序性?
13、如何保证RabbitMQ消息的可靠传输?
十五、Redis面试题(上)
- 什么是 Redis?
- 简述它的优缺点?
- Redis 与 memcached 相比有哪些优势?
- Redis 的数据类型?
- Redis 相比Memcached 有哪些优势?
- Redis 有哪些适合的场景?
- Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?
- Redis 集群最大节点个数是多少?
- 一个字符串类型的值能存储最大容量是多少?
- Redis 常见性能问题和解决方案:
- Redis 的回收策略
- redis 过期键的删除策略?
- Redis 的同步机制了解么?
- 是否使用过 Redis 集群,集群的原理是什么?
- Redis 集群方案什么情况下会导致整个集群不可用?
- Redis 如何设置密码及验证密码?
- Redis 集群会有写操作丢失吗?为什么?
- 怎么理解 Redis 事务?
- Redis 如何做内存优化?
- 都有哪些办法可以降低 Redis 的内存使用情况呢?
- 一个 Redis 实例最多能存放多少的 keys?List、Set、SortedSet 他们最多能存放多少元素?
- Redis 最适合的场景?
十六、Redis面试专题(下)
- Redis 的全称是什么?
- Redis 主要消耗什么物理资源?
- Redis 有哪几种数据淘汰策略?
- 为什么 Redis 需要把所有数据放到内存中?
- Redis 集群方案什么情况下会导致整个集群不可用?
- Redis 和 Redisson 有什么关系?
- 说说 Redis 哈希槽的概念?
- Redis 集群的主从复制模型是怎样的?
- Redis 集群之间是如何复制的?
- Redis 集群会有写操作丢失吗?为什么?
- 怎么测试 Redis 的连通性?
- Redis 事务相关的命令有哪几个?
- Redis 回收进程如何工作的?
- 为什么要做 Redis 分区?
- 你知道有哪些 Redis 分区实现方案?
- Redis 持久化数据和缓存怎么做扩容?
- Twemproxy 是什么?
- Redis 的内存占用情况怎么样?
- 查看 Redis 使用情况及状态信息用什么命令?
- Redis 是单线程的,如何提高多核 CPU 的利用率?
十七、SpringCloud面试专题
- 为什么需要学习Spring Cloud
- 什么是微服务架构?
- 使用 Spring Cloud 有什么优势?
- Spring Cloud 如何实现?
- 服务注册和发现是什么意思?
- 什么是 Hystrix?它如何实现容错?
- 负载平衡的意义什么?
- SpringCloud的缺点?
- SpringBoot和SpringCloud的区别?
- Spring Cloud和SpringBoot版本对应关系
- 使用 Spring Boot 开发分布式微服务时,我们面临什么问题?
- 什么是Eureka
- Eureka和ZooKeeper都可以提供服务注册与发现的功能,请说说两个的区别!
- 既然Nginx可以实现网关?为什么还需要使用Zuul框架?
- 什么是 Netflix Feign?它的优点是什么?
- 什么是 Spring Cloud Bus?我们需要它吗?
- Ribbon是什么?
- Nginx与Ribbon的区别?
- 什么是断路器
- 谈谈服务雪崩效应
- 服务雪崩效应产生的原因
- 谈谈服务降级、熔断、服务隔离
- 什么是 Spring Cloud Bus?
- 分布式配置中心的作用?
十九、并发编程面试专题
- 什么是Synchronized?
- 你用过Synchronized吗?原理是什么?
- 如确定对 象的锁 ?
- 现在有 T1、T2、T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行?
- 在 java 中 wait 和 sleep 方法的不同?
- 用 Java 写代码来解决生产者——消费者问题。
- 什么是原子操作,Java 中的原子操作是什么?
- JVM 对 Java 的 原 生 锁 做 了 哪 些 优 化 ?
- 为 什 么 说 Synchronized 是 一 个 悲 观 锁 ?
- 为 什 么 说 Synchronized 是 非 公 平 锁 ?
- 什 么 是 锁 消 除 和 锁 粗 化 ?
- 乐 观 锁 的 实 现 原 理由 是 什 么 ? 什 么 是 CAS, 它 有 什 么 特 性 ?
- 跟 Synchronized 相 比 , 可 重 入 锁 ReentrantLock 其 实 现原 理 有 什 么 不 同 ?
- 那 么 请 谈 谈 AQS 框 架:
- Synchronized 和 ReentrantLock的 异 同?
- 除 了 ReetrantLock, 你 还 接 触 过 JUC 中 的 哪 些 并 发 工 具 ?
- 如 何 让 Java 的 线 程 彼 此 同 步 ? 你 了 解 过 哪 些 同 步 器 ? 请 分 别介 绍 下 !
- Java 中 的 线 程 池 是 如 何 实 现 的 ?
- 什么是竞争条件?你怎样发现和解决竞争?
- Java 中你怎样唤醒一个阻塞的线程?
- 你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?
由于篇幅有限,获取完整面试题和答案解析可以转发后关注公众号:麒麟改bug 获取。
二十、开源框架面试专题
- Spring Bean 的生命周期
- Spring IOC 如何实现?
- BeanFactory 和 ApplicationContext 有什么区别?
- 动态代理(cglib 与 JDK)
- Spring AOP 实现原理
- Spring 事务实现方式
- 说说 Spring AOP
- 如何自定义注解实现功能
- Spring MVC 启动流程
- Spring 框架中用到了哪些设计模式
- 原生的 NIO 在 JDK 1.7 版本存在 epoll bug
- Netty 线程模型
- Netty 内部执行流程
二十一、ActiveMQ消息中间件面试专题
- 你用过ActiveMQ消息中间件吗?
- ActiveMQ的原理是什么?
- ActiveMQ 服务器宕机怎么办?
- 丢消息了怎么办?
- 解释一下什么叫死信队列
- 持久化消息非常慢怎么办?
- 消息的不均匀消费
- ActiveMQ 中的消息重发时间间隔和重发次数吗?
二十二、Java基础面试题
- Java 语言有哪些特点?
- 什么是Java?
- 何为编程?
- Jdk和Jre和JVM的区别
- 什么是字节码?
- 采用字节码的最大好处是什么?
- 应用程序和小程序的主类有何不同?
- 什么是Java程序的主类?
- Java和C++的区别?
- Java应用程序与小程序之间有那些差别?
- Java有哪些数据类型
- Oracle JDK 和 OpenJDK 的对比
- 用最有效率的方法计算 2 乘以 8:
- Java语言采用何种编码方案?有何特点?
- &和&&的区别?
- Java 有没有 goto?
- fifinal fifinally fifinalize区别?
- this与super的区别
- super关键字的用法
- static的独特之处
- static存在的主要意义
- static注意事项
- 在 Java 中,如何跳出当前的多重嵌套循环
- 面向对象三大特性?
- 面向对象五大基本原则是什么?
- 抽象类和接口的对比:
27、普通类和抽象类有哪些区别?
28、成员变量与局部变量的区别有哪些?分别有哪些特点?
- 作用域
- 存储位置
- 生命周期
- 初始值
29、构造方法有哪些特性?
30、静态变量和实例变量区别
二十三、Kafka面试专题
1、kafka集群架构图
2、kafka的基础概念是?
3、Partition (分区)有什么用?
4、分片规则
5、Rebalance
6、Rebalace 流程
7、如何避免 Rebalance
8、高性能, 高吞吐、分区的原因?
9、Kafka 的设计时什么样的呢?
10、Kafka 判断一个节点是否还活着有那两个条件?
11、数据传输的事物定义有哪三种?
12、producer 是否直接将数据发送到 broker 的 leader(主节点)?
13、Kafka 消息是采用 Pull 模式,还是 Push 模式?
14、Kafa consumer 是否可以消费指定分区消息?
15、Kafka 与传统消息系统之间有三个关键区别
16、Kafka 高效文件存储设计特点:
17、Kafka 的消费者如何消费数据
18、消费者负载均衡策略
19、kafaka 生产数据时数据的分组策略
二十四、memcached面试专题
- 什么是memcached?
- memcached 是怎么工作的?
- memcached优势是啥?
- memcached 和 MySQL 的 query cache 相比,有什么优缺点?
- memcached 和服务器的 local cache(比如 PHP 的 APC、mmap 文件等)相比,有什么优缺点?
- memcached 如何实现冗余机制?
- memcached 的 cache 机制是怎样的?
- 如何将 memcached 中 item 批量导入导出?
- memcached 如何处理容错的?
- 我需要把 memcached 中的 item 批量导出导入,怎么办?
- memcached 对 item 的过期时间有什么限制?
- memcached 能接受的 key 的最大长度是多少?
- 为什么单个 item 的大小被限制在 1M byte 之内?
二十五、ElasticSearch面试题
- 说说你对ElasticSearch的理解
- 说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段
- 查询调优
- 设计阶段调优
- elasticsearch 的倒排索引是什么
- 动态索引层面
- elasticsearch 索引数据多了怎么办,如何调优,部署?
- 部署层面
- 详细描述一下 Elasticsearch 索引文档的过程
- elasticsearch 是如何实现 master 选举的
- 详细描述一下 Elasticsearch 搜索的过程?
- lucence 内部结构是什么?
- Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
- 详细描述一下 Elasticsearch 索引文档的过程。
- Elasticsearch是一个高度可伸缩的开源全文搜索和分析引擎。它
- 是否了解字典树?
- 详细描述一下 Elasticsearch 搜索的过程:
- Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
二十六、MySQL性能优化的21个最佳实践
- 如何为了查询缓存而优化你的查询?
- 当只要一行数据时使用 LIMIT 1的时候
- EXPLAIN 你的 SELECT 查询
- 为搜索字段建索引
- 千万不要 ORDER BY RAND()
- 在 Join 表的时候使用相当类型的例,并将其索引
- 永远为每张表设置一个 ID
- 使用 ENUM 而不是 VARCHAR
- 避免 SELECT *
- 尽可能的使用 NOT NULL
- 从 PROCEDURE ANALYSE() 取得建议
- 如何做到无缓冲的查询?
- 垂直分割
- 拆分大的 DELETE 或 INSERT 语句
- Heap 表是什么?
- Mysql 的技术特点是什么?
- 与 Oracle 相比,Mysql 有什么优势?
- Mysql 服务器默认端口是什么?
- 在 Mysql 中 ENUM 的用法是什么?
- TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?
- 如何使用 Unix shell 登录 Mysql?
- MYSQL 数据库服务器性能分析的方法命令有哪些?
- MyISAM Static 和 MyISAM Dynamic 有什么区别?
- 一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录,
再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?
(1)如果表的类型是 MyISAM,那么是 18
因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大
ID 也不会丢失
(2)如果表的类型是 InnoDB,那么是 15
InnoDB 表只是把自增主键的最大 ID 记录到内存中,所以重启数据库或者是对表进行
OPTIMIZE 操作,都会导致最大 ID 丢失
由于篇幅有限,获取完整面试题和答案解析可以转发后关注公众号:麒麟改bug 获取。
二十七、SpringMVC面试专题
- 简单介绍下你对Spring MVC的理解?
- Spring MVC的缺点
- Spring MVC 的优点:
- SpringMVC 流程?
- 什么是DispatcherServlet
- 什么是Spring MVC框架的控制器?
- SpringMvc 中函数的返回值是什么?
- SpringMvc 用什么对象从后台向前台传递数据的?
- SpringMvc 怎么和 AJAX 相互调用的?
- 当一个方法向 AJAX 返回特殊对象,譬如 Object,List 等,需要做什么处理?
- 讲下 SpringMvc 的执行流程
- MVC是什么?
- 注解原理是什么
- MVC设计模式的好处有哪些
- SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?
- Spring MVC常用的注解有哪些?
- @ResponseBody注解的作用
- @PathVariable和@RequestParam的区别
- Spring MVC与Struts2区别
- 如何解决POST请求中文乱码问题,GET的又如何处理呢?
二十八、面试必备之乐观锁与悲观锁
- 什么是乐观锁与悲观锁?
- 乐观锁与悲观锁分别是用在哪的?
- 两种锁的使用场景是哪些?
- 乐观锁与悲观锁两种实现方式是?
- CAS 算法
- 乐观锁的优缺点?
- CAS 与 synchronized 的使用情景
- DelayQueue 实例应用
二十九、设计模式面试专题
- 你了解过设计模式吗?
- 你为什么要学习设计模式?
- 设计模式的分类有哪些?
- 你是否在你的代码里面使用过任何设计模式?
- 在 Java 中,什么叫观察者设计模式?
- 举一个用 Java 实现的装饰模式(decorator design pattern)?它是作用于对象层次还是类层次?
- 设计一个 ATM 机,请说出你的设计思路?
- 举例说明什么情况下会更倾向于使用抽象类而不是接口?
- 设计模式的六大原则是什么?分别有哪些思想?优点有哪些?
- 什么是单例?
- 单例模式的优缺点有哪些?
- 单例模式使用注意事项:
- 单例创建方式?主要使用哪些?
三十、java后端面试题
- HashSet 是如何保证不重复的?
- HashMap 是线程安全的吗,为什么不是线程安全的?
- List 和 Set 的区别?
- HashMap 1.7 与 1.8 的 区别,说明 1.8 做了哪些优化,如何优化的?
- HashMap 的扩容过程,详细说说!
- 对象的四种引用:
- Java反射机制
- Java获取反射的三种方法,分别是哪些?
- LinkedHashMap 的应用
- wait 和 sleep 的区别?
- 数组在内存中如何分配?
三十一、Netty面试专题
- 说说你对Netty的理解?
- BIO的优点是?
- 什么是IO模式?
- I/O 模型有几种?
- 阻塞IO和非阻塞IO的区别是什么?
- IO 多路复用
- Netty 线程模型和 Reactor 模式
- Reactor 多线程模型
- Reactor 单线程模型
- Reactor 主从线程模型
- EventLoop和EventLoopGroup的区别?
- ChannelHandler和ChannelPipeline的区别?
- Netty解码器 Decoder
- Netty 组合编解码器 Codec
- Netty 的特点?
- NIO 的组成?
三十二、Nginx面试专题
- 说出你对Nginx 的理解
- 说说你为什么要使用Nginx呢?
- 为什么Nginx性能这么高?
- 请列举 Nginx 的一些特性:
- 请列举 Nginx 和 Apache 之间的不同点
- Nginx怎么处理请求的?
- 使用“反向代理服务器的优点是什么?
- 什么是正向代理和反向代理?
- 在 Nginx 中,如何使用未定义的服务器名称来阻止处理请求?
- 请解释 Nginx 服务器上的 Master 和 Worker 进程分别是什么?
- 请解释 ngx_http_upstream_module 的作用是什么?
- 解释如何在 Nginx 中获得当前的时间?
- 解释如何在 Nginx 服务器上添加模块?
- Nginx的优缺点?
- Nginx应用场景?
- Nginx静态资源?
- Nginx虚拟主机怎么配置?
- 如何用Nginx解决前端跨域问题?
- 基于虚拟主机配置域名
- 基于端口的虚拟主机
三十三、多线程面试专题
- 说说你对多线程的理解?
- 多线程有什么作用呢?
- 线程和进程的区别是什么?
- 启动线程方法 start()和 run()有什么区别?
- Java 实现线程有哪几种方式?
- 线程中的 wait()和 sleep()方法有什么区别?
- 怎么终止一个线程?如何优雅地终止线程?
- .一个线程的生命周期有哪几种状态?它们之间如何流转的?
- 如何用 Java 实现阻塞队列
- 用 Java 编程一个会导致死锁的程序,你将怎么解决?
- 用 Java 写代码来解决生产者——消费者问题。
- 什么是原子操作,Java 中的原子操作是什么?
- 什么是竞争条件?你怎样发现和解决竞争?
- Java 中你怎样唤醒一个阻塞的线程?
- 多线程同步有哪几种方法?
- 线程怎样拿到返回结果?
- 什么是死锁?如何避免死锁?
- 怎么控制同一时间只有 3 个线程运行?
- 常用的几种线程池并讲讲其中的工作原理
- CyclicBarrier 和 CountDownLatch 的区别?
- 线程池启动线程 submit()和 execute()方法有什么不同?
- 什么是活锁、饥饿、无锁、死锁?
三十四、数据库面试专题
- 请简洁描述 MySQL 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
- 在 MySQL 中 ENUM 的用法是什么?
- CHAR 和 VARCHAR 的区别?
- SQL 标准定义的四个隔离级别为?
- MySQL 中使用什么存储引擎?
- TIMESTAMP 在 UPDATE CURRENT_TIMESTAMP 数据类型上做什么?
- 主键和候选键有什么区别?
- 数据库的三范式?
- 在 MySQL 表中允许有几个触发器?
- MySQL 表中允许有多少个 TRIGGERS?
- Redis 实现原理或机制
- Redis 有两种类型分区
三十五、微服务面试专题
- 微服务有哪些框架?
- 前后端分离是如何做的?
- 说说 Dubbo 的实现原理:
- 说说 RPC 的实现原理:
- 微服务架构有哪些优势?
- 微服务有什么特点?
- 什么是凝聚力?
- 什么是 REST / RESTful 以及它的用途是什么?
- 什么是 Idempotence 以及它在哪里使用?
- PACT 在微服务架构中的用途是什么?
- 您对微服务架构中的语义监控有何了解?
- 我们如何进行跨功能测试?
- Mock 或 Stub 有什么区别?
- Docker 的目的是什么?
- 什么是持续集成(CI)?
- 什么是微服务中的反应性扩展?
以上就是小编分享的35个Java技术栈,分享给到大家,年后冲刺年薪百万!由于篇幅有限,每个专题面试题只有部分的面试题,下面是整理的合集,分享给到你们。
该资料获取方式:关注公众号:麒麟改bug + 转发后,获取完整面试题和答案解析
最后
篇幅有限,其他内容就不在这里一一展示了,2021金三银四,Java后端必备的【35个专题面试技术栈】,整理不易,欢迎大家一起交流,喜欢文章记得关注我点赞哟,感谢支持!重要的事情说三遍,转发+转发+转发,一定要记得转发哦!!!