前言
这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。
写这一套 Java 面试必备系列文章的初衷。
- 整理自己学过的知识,总结,让其成为一套体系,方便日后查阅。
- 现在不少 Java 开发者还比较迷茫,没有形成自己的一套知识体系。希望这一系列的文章能够帮助他们。
Java面试高级手册
一、性能优化面试专栏
(1)tomcat性能优化整理
- 你怎样给tomcat调优
- 如何加大comcat连接数
- 怎样加大tomcat的内存
- tomcat中如何禁止列目录下的文件
- Tomcat有几种部署方式
- Tomcat的优化经验
(2)JVM性能优化专题
- Java类加载过程
- java内存分配
- 描述一下JVM加载Class文件的原理机制?
- GC是什么?为什么要有GC?
- 简述Java垃圾回收机制。
- 如何判断一个对象是否存活?(或者GC对象的判定方法)
- 垃圾回收的优点和原理。并考虑2种回收机制。
- 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
- Java中会存在内存泄漏吗,请简单描述。
- 深拷贝和浅拷贝。
- System.gc0和Runtime.gc0会做什么事情?
- finalize0 方法什么时候被调用?析构函数(finalization)的目的是什么?
- 如果对象的引用被置为null,垃圾收集器是否会立即释放对象占用的内存?
- 什么是分布式垃圾回收(DGC)?它是如何工作的?
- 串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
- 在Java中,对象什么时候可以被垃圾回收?
- 简述Java内存分配与回收策略以及Minor GC和Major GC。
- JVM的永久代码会发生垃圾回收么?
- Java中垃圾收集的方法有哪些?
- 什么是类加载器,类加载器有哪些?
- 类加载器双亲委派模型机制?
(3)Mysql性能优化整理
二、微服务架构面试专栏
(1)SpringCloud面试整理
- 什么是Spring Cloud?
- 使用Spring Cloud有什么优势?
- 服务注册和发现是什么意思?Spring Cloud如何实现?
- 负载平衡的意义什么?
- 什么是Hystrix?它如何实现容错?
- 什么是Hystrix断路器?我们需要它吗?
- 什么是Netflix Feign?它的优点是什么?
- 什么是Spring Cloud Bus?我们需要它吗?
(2)SpringBoot面试整理
- 什么是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?
(3)Dubbo面试整理
- Dubbo 中zookeeper做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
- dubbo服务负载均衡策略?
- Dubbo在安全机制方面是如何解决的
- dubbo连接注册中心和直连的区别
三、并发编程高级面试专栏
- Synchronized用过吗,其原理是什么?
- 你刚才提到获取对象的锁,这个“锁”到底是什么?如何确定对象的锁
- 什么是可重入性,为什么说Synchronized是可重入锁?
- JVM对Java的原生锁做了哪些优化?
- 为什么说Synchronized是非公平锁?
- 什么是锁消除和锁粗化?
- 为什么说Synchronized是一个悲观锁?乐观锁的实现原理又是什么?
- 乐观说-定就是好的吗?
- 跟Synchronized相比,可重入锁ReentrantLock其实现原理有什么不同?
- 那么请谈谈AQS框架是怎么回事儿?
- 请尽可能详尽地对比下Synchronized和ReentrantLock的异同。
- ReentrantLock是如何实现可重入性的?
- 除了ReetrantL ock,你还接触过JUC中的哪些并发工具?
(1)Spring面试整理
- 什么是Spring框架?Spring框架有哪些主要模块?
- 使用Spring框架能带来哪些好处?
- 什么是控制反转(10C)?什么是依赖注入?
- 请解释下Spring框架中的loC?
- BeanFactory和ApplicationContext有什么区别?
- Spring有几种配置方式?
- 如何用基于XML配置的方式配置Spring?
- 如何用基于Java配置的方式配置Spring?
- Spring Bean的作用域之间有什么区别?
- Spring框架中的单例Beans是线程安全的么?
- 如何开启基于注解的自动装配?
- 构造方法注入和设置注入有什么区别?请注意以下明显的区别:
- Spring框架中有哪些不同类型的事件?
(2)SpringMVC面试整理
- SpingMvc中的控制器的注解一般用哪个,有没有别的注解可以替代?
- @RequestMapping注解用在类.上面有什么作用?
- 怎么样把某个请求映射到特定的方法上面?
- 如果在拦截请求中,我想拦截get方式提交的方法,怎么配置?
- 怎么样在方法里面得到Request,或者Session?
- 我想在拦截的方法里面得到从前台传入的参数,怎么得到?
- SpringMvc中函数的返回值是什么?
- SpringMVC怎么样设定重定向和转发的?
- SpringMvc中有个类把视图和数据都合并的一起的,叫什么?
- 怎么样把ModelMap里面的数据放入Session里面?
(3)MyBatis面试整理
- #0和$O的区别是什么?
- 7、为什么说Mybatis是半自动ORM映射工具?它与全自动的区别在哪里?
- 简述Mybatis的Xml映射文件和Mybatis内部数据结构之间的映射关系?
- 什么是MyBatis的接口绑定,有什么好处?
- Xml映射文件中,除了常见的selectlinsertlupdaeldelete标签之外,还有哪些标签?
- Mybatis 能执行-对一、- 对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?
- MyBatis里面的动态Sql是怎么设定的?用什么语法?
- 当实体类中的属性名和表中的字段名不- -样,如果将查询的结果封装到指定pojo?
- Mybatis 映射文件中,如果A标签通过include引用了B标签的内请问,B标签能否定义在A标签的后面,还是说必须定义在A标签的前面?
- Mybatis 的Xml映射文件中,不同的Xml映射文件,id 是否可以重复?
- Mybatis中如何执行批处理?
- 使用MyBatis的mapper接口调用时有哪些要求?
- IBatis和MyBatis在细节上的不同有哪些?
五、分布式面试专栏
部分目录展示: