面试时间将近两个小时期间等待二面面试官来面我的时候等了半个多小时面试官问的东西很多还挖了好几个坑一个技术点套着一个技术点的问一定要做好万全的准备。问了一些基本层面上的技术点都答出来了稍微问深一点我就有点懵了实战经验还是不足。回来之后把这些题目做了一个分类并整理出答案每次去面试的时候面试官问的问题面试结束后我都会做笔记分为 Spring逻辑算法MySQLJavaRedis并发编程JVMRabbitMQ 等接下来分享一下我的这次蚂蚁二面面经一些我的学习笔记。注意注意需要小编整理的 Spring逻辑算法MySQLJavaRedis并发编程JVMRabbitMQ 等面试答案、学习文档笔记、思维导图xmind的朋友可以点个喜欢需要获取得话可以在文末免费领取1. 阿里面试官问的 Spring Boot 问题什么是 Spring Boot为什么要用 Spring BootSpring Boot 的核心配置文件有哪几个它们的区别是什么Spring Boot 的配置文件有哪几种格式它们有什么区别Spring Boot 的核心注解是哪个它主要由哪几个注解组成的开启 Spring Boot 特性有哪几种方式Spring Boot 需要独立的容器运行吗运行 Spring Boot 有哪几种方式Spring Boot 自动配置原理是什么Spring Boot 的目录结构是怎样的1.1 我的 Spring Boot 学习笔记Spring Boot、Spring MVC 和 Spring 有什么区别什么是自动配置什么是 Spring Boot Stater 你能否举一个例子来解释更多 Staters 的内容Spring Boot 还提供了其它的哪些 Starter Project OptionsSpring 是如何快速创建产品就绪应用程序的创建一个 Spring Boot Project 的最简单的方法是什么Spring Initializr 是创建 Spring Boot Projects 的唯一为什么我们需要 spring-boot-maven-plugin?如何使用 SpringBoot 自动重装我的应用程序什么是嵌入式服务器我们为什么要使用嵌入式服务器呢?如何在 Spring Boot 中添加通用的 JS 代码1.2 Spring 学习路线思维导图2. 阿里面试官问的 RabbitMQ 问题使用 RabbitMQ 有什么好处RabbitMQ 中的 broker 是指什么cluster 又是指什么RabbitMQ 概念里的 channel、exchange 和 queue 是逻辑概念还是对应着进程实体分别起什么作用vhost 是什么起什么作用消息基于什么传输消息如何分发消息怎么路由什么是元数据元数据分为哪些类型包括哪些内容与 cluster 相关的元数据有哪些元数据是如何保存的元数据在 cluster 中是如何分布的2.1 我的 RabbitMQ 学习笔记什么是 rabbitmq为什么要使用 rabbitmq使用 rabbitmq 的场景如何确保消息正确地发送至 RabbitMQ 如何确保消息接收方消费了消息如何避免消息重复投递或重复消费消息基于什么传输消息如何分发消息怎么路由如何确保消息不丢失使用 RabbitMQ 有什么好处rabbitmq 的集群mq 的缺点3. 阿里面试官问的 MySQL 问题事务四大特性MySQL 的事务隔离级别数据库的索引数据库三范式脏读 不可重复读 幻读存储引擎 MyISAM 和 InnoDB 区别Mysql 中有哪几种锁讲一下存储过程3.1 我的 MySQL 灵魂拷问笔记Mysql 的技术特点是什么Heap 表是什么Mysql 服务器默认端口是什么与 Oracle 相比Mysql 有什么优势如何区分 FLOAT 和 DOUBLE如何获取当前的 Mysql 版本Mysql 中使用什么存储引擎Mysql 驱动程序是什么主键和候选键有什么区别如何使用 Unix shell 登录 Mysql你怎么看到为表格定义的所有索引InnoDB 是什么3.2 MySQL 学习路线思维导图4. 阿里面试官问的设计模式问题请列举出在 JDK 中几个常用的设计模式什么是设计模式你是否在你的代码里面使用过任何设计模式Java 中什么叫单例设计模式请用 Java 写出线程安全的单例模式在 Java 中什么叫观察者设计模式observer design pattern使用工厂模式最主要的好处是什么在哪里使用举一个用 Java 实现的装饰模式(decorator design pattern)它是作用于对象层次还是类层次在 Java 中为什么不允许从静态方法中访问非静态变量例说明什么情况下会更倾向于使用抽象类而不是接口4.1 我的 23 种设计模式知识要点笔记单例模式工厂模式抽象工厂模式模板方法模式建造者模式代理模式原型模式中介者模式命令模式责任链模式4.2 设计模式学习路线思维导图5. 阿里面试官问的并发编程问题Java 中有几种方法可以实现一个线程如何停止一个正在运行的线程什么是 Daemon 线程它有什么意义ava 如何实现多线程之间的通讯和协作乐观锁和悲观锁的理解及如何实现有哪些实现方式什么是可重入锁ReentrantLock什么叫线程安全servlet 是线程安全吗?同步有几种实现方法5.1 我的并发编程面试专题笔记Java 中守护线程和本地线程区别什么是多线程中的上下文切换死锁与活锁的区别死锁与饥饿的区别线程与进程的区别Java 中用到的线程调度算法是什么什么是线程组为什么在 Java 中不推荐使用在 Java 中 Executor 和 Executors 的区别什么是原子操作,在 Java Concurrency API 中有哪些原子类(atomic classes)什么是 Executors 框架什么是阻塞队列阻塞队列的实现原理是什么如何使用阻塞队列来实现生产者-消费者模型5.2 并发编程学习路线思维导图6. 阿里面试官问的 JVM 虚拟机问题什么是 Java 虚拟机为什么 Java 被称作是“平台无关的编程语言”什么是类的加载描述一下 JVM 加载 class 文件的原理机制如何判断对象可以被回收什么时候一个对象会被 GC为什么要在这种时候对象才会被 GCJVM 内存分为哪几部分这些部分分别都存储哪些数据一个对象从创建到销毁都是怎么在这些部分里存活和转移的6.1 我的 JVM 虚拟机面试专题笔记Java 类加载过程描述一下 JVM 加载 Class 文件的原理机制?Java 内存分配。GC 是什么? 为什么要有 GC简述 Java 垃圾回收机制。如何判断一个对象是否存活或者 GC 对象的判定方法垃圾回收的优点和原理。并考虑 2 种回收机制。垃圾回收器的基本原理是什么垃圾回收器可以马上回收内存吗有什么办法主动通知虚拟机进行垃圾回收Java 中会存在内存泄漏吗请简单描述。深拷贝和浅拷贝6.2 JVM 虚拟机学习路线思维导图7. 阿里面试官问的 Redis 问题什么是 Redis简述它的优缺点Redis 相比 memcached 有哪些优势Redis 支持哪几种数据类型Redis 主要消耗什么物理资源Redis 的全称是什么Redis 有哪几种数据淘汰策略Redis 官方为什么不提供 Windows 版本Redis 集群方案应该怎么做都有哪些方案为什么 Redis 需要把所有数据放到内存中Redis 有哪些适合的场景7.1 我的 Redis 面试学习笔记为什么要用 redis /为什么要用缓存为什么要用 redis 而不用 map/guava 做缓存?redis 和 memcached 的区别redis 常见数据结构以及使用场景分析redis 设置过期时间redis 内存淘汰机制MySQL 里有 2000w 数据Redis 中只存 20w 的数据如何保证 Redis 中的数据都是热点数据redis 持久化机制怎么保证 redis 挂掉之后再重启数据可以进行恢复redis 事务Redis 常见异常及解决方案分布式环境下常见的应用场景7.2 Redis 学习路线思维导图8. 我的参考学习资料Java 核心知识点整理JVM集合HTTP 网络多线程并发JAVA 基础Spring微服务ZookeeperKafkaRabbitMQHbase消息中间件MongoDB设计模式负载均衡数据库一致性哈希算法数据结构加密算法分布式缓存NettyLinuxTomcatNginxRedis 等最后对于很多 Java 工程师而言想要提升技能往往是自己摸索成长不成体系的学习效果低效漫长且无助。整理的这些资料希望对 Java 开发的朋友们有所参考以及少走弯路本文的重点是你有没有收获与成长其余的都不重要希望读者们能谨记这一点。