小编在这里为你们准备了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 这样可以加快老年代的回收速度。
35.Jdk和Jre和JVM的区别
有需要的朋友,可以管住公主号:JavaAC,即可
二、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的接口绑定?有哪些实现方式