一位刚面进阿里定级 P7 的 Java 工程师的面试心得:32 天的高效突击训练,分享学习路线 + 学习笔记 + 面试真题。
导言
今年似乎因为疫情影响,时间过得特别快,对于需要跳槽换工作的人来,更觉得有些突然,似乎金三银四和金九银四还没开始准备好,就匆匆过去。加上今年的大环境不佳,所以大部分的人在今年的招聘旺季都没有收获到好的结果。
今天分享的主题则是由 一位阿里 P7 的面试心得,通过 32 天的高效突击训练,成功拿下 offer 的学习方法。
篇章分为三大章节,可以根据自己所需来阅读内容和下载资料:
起始篇:梳理路线(自制思维脑图)
进阶篇:深度学习(阅读阿里 P8 大神手写笔记)
突击篇:面试考点(开源框架+性能优化+微服务架构+分布式)
一键三连+评论,然后添加 VX(tkzl6666)即可免费领取全部资料
起始篇:梳理路线(自制思维脑图)
脑图①:JVM 和性能调优
脑图②:并发编程(java 并发体系)
脑图③:Spring 全家桶系列(Spring+Spring Boot+Spring Cloud+Spring MVC)
3.1 自制 Spring 思维脑图
3.2 自制 Spring Boot 思维脑图
3.3 自制 Spring Cloud 思维脑图
3.4 自制 Spring MVC 思维脑图
脑图④:分布式架构系列
一键三连+评论,然后添加 VX(tkzl6666)即可免费领取全部资料
进阶篇:深度学习(P8 大神手写笔记)
笔记①:Redis 学习笔记
笔记②:Spring Boot 核心技术笔记
笔记③:SpringMVC 开发笔记
笔记④:Kafka 学习笔记
笔记⑤:MySQL 调优笔记(技巧篇)
篇幅有限,更多笔记内容,一键三连+评论,然后添加 VX(tkzl6666)即可免费领取全部资料
突击篇:面试考点(开源框架+性能优化+微服务架构+分布式)
面试考点①:开源框架(Spring+SpringMVC+MyBatis)
——Spring 基础篇:
问题一:什么是 Spring?
问题二:使用 Spring 框架的好处是什么?
问题三:Spring 由哪些模块组成?
问题四:核心容器(应用上下文)模块。
问题五:BeanFactory - BeanFactory 实现举例
问题六:XMLBeanFactory
问题七:解释 AOP 模块
问题八:解释 JDBC 抽象和 DAO 模块。
问题九:解释对象/关系映射集成模块
问题十:解释 WEB 模块。
问题十一:Spring 配置文件
问题十二:什么是 Spring IOC 容器?
问题十三:IOC 的优点是什么?
问题十四:ApplicationContext 通常的实现是什么?
问题十五:Bean 工厂和 Application Context 有什么区别?
问题十六:一个 Spring 的应用看起来像什么?
问题十七:什么是 Spring 的依赖注入?
问题十八:有哪些不同类型的 IOC(依赖注入)方式?
问题十九:哪种依赖注入方式你建议使用,构造器注入,还是 Setter 方法注入?
问题二十:什么是 Spring beans?
问题二十一:一个 Spring bean 定义包括什么?
问题二十二:如何给 Spring 容器提供配置元数据?
问题二十三:你怎样定义类的作用域?
问题二十四:解释 Spring 支持的几种 bean 的作用域。
问题二十五:Spring 框架中的单例 bean 是线程安全的吗?
问题二十六:解释 Spring 框架中的 bean 的生命周期。
问题二十七:哪些是重要的 bean 生命周期方法?你能重载它们吗?
问题二十八:什么是 Spring 的内部 bean?
问题二十九:在 Spring 中如何注入一个 java 集合?
问题三十:什么是 bean 装置?
问题三十一:什么是 bean 的自动装配?
问题三十二:解释不同方式的自动装配。
问题三十三:自动装配有哪些局限性?
问题三十四:你可以在 spring 中注入一个 null 和一个空字符串吗?
问题三十五:什么是基于 Java 的 Spring 注解配置?给一些注解的例子。
问题三十六:什么是基于注解的容器配置?
问题三十七:怎样开启注解装配?
问题三十八:@Required 注解;@Autowired 注解;@Qualifier 注解
问题三十九:在 Spring 框架中如何更有效地使用 JDBC?
问题四十:Spring 对 DAO 的支持
问题四十一:使用 Spring 通过什么方式访问 Hibernate?
问题四十二:如何通过 HibernateDaoSupport 将 Spring 和 Hibernate 结合起来?
问题四十三:Spring 支持的事务管理类型有哪些?Spring 框架的事务管理有哪些特点?你更倾向于使用哪种?
问题四十四:解释 AOP。
问题四十五:什么是 Aspect 切面?
问题四十六:在 Spring AOP 中,关注点和横切关注的区别是什么?
问题四十七:什么是引入?什么是目标对象?什么是代理?有几种不同类型的自动代?
问题四十八:什么是 Spring 的 MVC 框架?
问题四十九:什么是 Spring MVC 框架的控制器?
——Spring 高级篇:
问题一:什么是 Spring 框架?Spring 框架有哪些主要模块?
问题二:使用 Spring 框架能带来哪些好处?
问题三:什么是控制反转(IOC)?什么是依赖注入?
问题四:请解释下 Spring 框架中的 IOC?
问题五:BeanFactory 和 Application Context 有什么区别?
问题六: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 IOC 和 DI 的理解,它们有什么区别?
问题二十五:BeanFactory 接口和 ApplicationContext 接口有什么区别?
问题二十六:Spring 配置 bean 实例化有哪些方式?
问题二十七:简单地说一下 spring 的生命周期?
问题二十八:请介绍一下 Spring 框架中的 Bean 的生命周期和作用域。
问题二十九:Bean 注入属性有哪几种方式?
问题三十:什么是 AOP?AOP 的作用是什么?
问题三十一:Spring 的核心类型有哪些?各有什么作用?
问题三十二:Spring 里面如何配置数据库驱动?
问题三十三:Spring 里面 applicationContext.xml 文件不能改成其他文件名?
问题三十四:Spring 里面如何定义 Hibernate mapping?
问题三十五:Spring 如何处理线程并发问题?
——Spring MVC 高级篇:
问题一:什么是 Spring MVC?说说它的优点。
问题二:说说 Spring MVC 的工作原理及流程。
问题三:SpringMVC 的控制器是不是单例模式,如果是,有什么问题,怎么解决?
问题四:如果你也用过 struts2.简单介绍下 springMVC 和 struts2 的区别有哪些?
问题五:SpingMVC 中的控制器的注解一般用哪个,有没有别的注解可以替代?
问题六:@RequestMapping 注解用在类上面有什么作用?
问题七:怎么样把某个请求映射到特定的方法上面?
问题八:如果在拦截请求中,我想拦截 get 方式提交的方法,怎么配置?
问题九:怎么样在方法里面得到 Request,或者 Session?
问题十:我想在拦截的方法里面得到从前台传入的参数,怎么得到?
问题十一:如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?
问题十二:Spring MVC 中函数的返回值是什么?
问题十三:Spring MVC 怎么样设定重定向和转发的?
问题十四:Spring MVC 用什么对象从后台向前台传递数据的?
问题十五:Spring MVC 中有个类把视图和数据都合并的一起的叫什么?
问题十六:怎么样把 ModelMap 里面的数据放入 Session 里面?
问题十七:SpringMVC 怎么和 AJAX 相互调用的?
问题十八:当一个方法向 AJAX 返回特殊对象,比如 Object,List 等,需要做什么处理?
问题十九:SpringMVC 里面拦截器是怎么写的?
问题二十:讲下 SpringMVC 的执行流程。
——MyBatis 高级篇:
问题一:什么是 MyBatis?
问题二:讲一下 MyBatis 的缓存
问题三:MyBatis 是如何进行分页的?分页插件的原理是什么?
问题四:说说 MyBatis 的插件运行原理,以及如何编写一个插件?
问题五:Mybatis 动态 sql 是做什么的?都有哪些动态 sql?能说一下动态 sql 的执行原理么?
问题六:为什么说 MyBatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
问题七:MyBatis 是否支持延迟加载?如果支持,它的实现原理是什么?
问题八:MyBatis 与 Hibernate 有哪些不同?
问题九:MyBatis 的好处是什么?
问题十:说一说 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系。
问题十一:什么是 MyBatis 的接口绑定,有什么好处?
问题十二:接口绑定有几种实现方式,分别是怎么实现的?
问题十三:什么情况下用注解绑定,什么情况下用 xml 绑定?
问题十四:MyBatis 实现一对一有几种方式?具体怎么操作的?
问题十五:Mybatis 能执行一对一、一对多的关联查询吗?都有哪些实现方式,以及它们之间的区别?
问题十六:MyBatis 里面的动态 Sql 是怎么设定的?用什么语法?
问题十七:MyBatis 是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?
问题十八:Xml 映射文件中,除了常见的 select|insert|updae|delete 标签之外,还有哪些标签?
问题十九:当实体类中的属性名和表中的字段名不一样,如果将查询的结果封装到指定 pojo?
问题二十:模糊查询 like 语句该怎么写?
问题二十一:通常一个 Xml 映射文件,都会写一个 Dao 接口与之对应, Dao 的工作原理,是否可以重载?
问题二十二:Mybatis 映射文件中,如果 A 标签通过 include 引用了 B 标签的内容,请问,B 标签能否定义在 A 标签的后面,还是说必须定义在 A 标签的前面?
问题二十三:、Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?
问题二十四:MyBatis 中如何执行批处理?
问题二十五:MyBatis 都有哪些 Executor 执行器?它们之间的区别是什么?
问题二十六:MyBatis 如何指定使用哪一种 Executor 执行器?
问题二十七:MyBatis 执行批量插入,能返回数据库主键列表吗?
问题二十八:MyBatis 是否可以映射 Enum 枚举类?
问题二十九:如何获取自动生成的(主)键值?
问题三十:在 mapper 中如何传递多个参数?
问题三十一:resultType resultMap 的区别?
问题三十二:使用 MyBatis 的 mapper 接口调用时有哪些要求?
问题三十三:Mybatis 比 IBatis 比较大的几个改进是什么?
问题三十四:IBatis 和 MyBatis 在核心处理类分别叫什么?
问题三十五:IBatis 和 MyBatis 在细节上的不同有哪些?
面试考点②:性能优化(MySQL+JVM+Tomcat)
——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 语句语法
——JVM 性能优化篇:
问题一:描述一下 java 类加载过程。
问题二:描述一下 JVM 加载 Class 文件的原理机制?
问题三:Java 内存分配。
问题四:GC 是什么?为什么要有 GC?
问题五:简述 Java 垃圾回收机制。
问题六:如何判断一个对象是否存活?(或者 GC 对象的判定方法)
问题七:垃圾回收的优点和原理。并考虑 2 种回收机制。
问题八:垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?
问题九:Java 中会存在内存泄漏吗?请简单描述。
问题十:讲讲深拷贝和浅拷贝。
问题十一:System.gc()和 Runtime.gc()会做什么事情?
问题十二:finalize()方法什么时候被调用?析构函数(finalization)的目的是什么?
问题十三:如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?
问题十四:什么是分布式垃圾回收(DGC)?它是如何工作的?
问题十五:串行(serial)收集器和吞吐量(throughput)收集器的区别是什么?
问题十六:在 Java 中,对象什么时候可以被垃圾回收?
问题十七:简述 Java 内存分配与回收策略以及 Minor GC 和 Major GC。
问题十八:JVM 的永久代会发生垃圾回收吗?
问题十九:Java 中垃圾收集的方法有哪些?
问题二十:什么是类加载器,类加载器有哪些?
问题二十一:类加载器双亲委派模型机制?
——Tomcat 优化篇:
问题一:你怎样给 tomcat 去调优?
问题二:如何加大 tomcat 连接数?
问题三:Tomcat 中如何禁止列目录下的文件?
问题四:怎样加大 tomcat 的内存?
问题五:Tomcat 有几种部署方式?
问题六:Tomcat 的优化经验。
问题七:tomcat 的 Valve 的作用是什么?
面试考点③:微服务架构(Dubbo+SpringBoot+SpringCloud)
——Dubbo 篇:
问题一:Dubbo 支持哪些协议,说说每种协议的应用场景,优缺点?
问题二:Dubbo 超时时间设置有几种方式?
问题三:Dubbo 有哪些注册中心?
问题四:Dubbo 集群的负载均衡有哪些策略?
问题五:Duubo 是什么?它的主要场景有哪些?其核心功能是?
问题六:Dubbo 服务注册与发现的流程
问题七:了解 Dubbo 的架构设计吗?说一下吧
问题八:Dubbo 支持哪些协议?讲一讲每种协议的应用场景和优缺点
问题九:为什么需要服务治理?
问题十:Dubbo 的注册中心集群挂掉,发布者和订阅者之间还能通信么?
问题十一:讲讲 Dubbo 与 Spring 的关系。
问题十二:Dubbo 使用的是什么通信框架?
问题十三:Dubbo 的集群容错方案有哪些?
问题十四:Dubbo 在安全机制方面是如何解决的?
问题十五:Dubbo 和 Spring Cloud 的关系和区别是什么?
问题十六:Dubbo 中 zookeeper 做注册中心,如果注册中心集群都挂掉,发布者和订阅者之间还能通信么?
问题十七:讲一讲 Dubbo 连接注册中心和直连的区别。
问题十八:Dubbo 通信协议
——Spring Boot 篇:
问题一:讲讲,什么是 Spring Boot?
问题二:SpringBoot 的优点有哪些?
问题三:如何重新加载 Spring Boot 上的更改?而无需重新启动服务器?
问题四:Spring Boot 中的监视器是什么?
问题五:如何在 Spring Boot 中禁用 Actuator 端点安全性?
问题六:如何在自定义端口上运行 Spring Boot 应用程序?
问题七:什么是 YAML?
问题八:如何实现 Spring Boot 应用程序的安全性?
问题九:如何集成 Spring Boot 和 ActiveMQ?
问题十:如何使用 Spring Boot 实现分页和排序?
问题十一:什么是 Swagger?你用 Spring Boot 实现了它吗?
问题十二:什么是 Spring Profiles?
问题十三:什么是 Spring Batch?
问题十四:如何使用 Spring Boot 实现异常处理?
问题十五:什么是 AOP?
问题十六:如何监视所有 Spring Boot 微服务?
——Spring Cloud 篇:
问题一:什么是 Spring Cloud?
问题二:使用 Spring Cloud 有什么优势?
问题三:服务注册和发现是什么意思?Spring Cloud 如何实现?
问题四:负载均衡的意义有什么?
问题五:什么是 Hystrix?它如何实现容错?
问题六:什么是 Hystrix 断路器?我们需要它吗?
问题七:什么是 Netflix Feign?它的优点是什么?
问题八:什么是 Spring Cloud Bus?我们需要它吗?
面试考点④:分布式(MQ+Redis+Zk+Kafka+MongDB 等)
问题一:什么是 RabbitMQ?为什么要使用 RabbitMQ?
问题二:如何确保消息正确地发送至 RabbitMQ?如何确保消息接收方消费了消息?
问题三:如何避免消息重复投递或重复消费?
问题四:消息基于什么传输?消息如何分发?消息怎么路由?如何确保消息不丢失?
问题五:使用 RabbitMQ 有什么好处?
问题六:RabbitMQ 的集群
问题七:讲讲 Redis 的数据类型?
问题八:使用 Redis 有哪些好处?
问题九:Redis 相比 Memcached 有哪些优势?
问题十:Memcache 与 Redis 的区别有哪些?
问题十一:Redis 是单进程还是单线程的?
问题十二:—个字符串类型的智能存储最大容量是多少?
问题十三:Redis 的持久化机制是什么?各自的优缺点?
问题十四:Redis 常见的性能问题和解决方案
问题十五:redis 过期键的删除策略?
问题十六:Redis 的回收策略(淘汰策略)?
问题十七:为什么 redis 需要把所有数据放到内存中?
问题十八:Redis 的同步机制了解么?说一下
问题十九:是否使用过 Redis 集群,集群的原理是什么?
问题二十:Redis 集群方案什么情况下会导致整个集群不可用?
问题二十一:zookeeper 是如何保证事务的顺序—致性的?
问题二十二:分布式集群中为什么会有 Master?
问题二十三:zk 节点宕机如何处理?
问题二十四:zookeeper 负载均衡和 nginx 负载均衡的区别?
问题二十五:Zookeeper 有哪几种部署模式?
问题二十六:集群最少要几台机器,集群规则是怎样的?
问题二十七:集群支持动态添加机器吗?
问题二十八:Zookeeper 对节点的 watch 监听通知是永久的吗?为什么不是永久的?
问题二十九:Zookeeper 的 java 客户端都有哪些?
问题三十:生产者和消费者的命令行是什么?consumer 是推还是拉?
问题三十一:讲讲 kafka 维护消费状态跟踪的方法
问题三十二:Zookeeper 对于 Kafka 的作用是什么?
问题三十三:数据传输的事务定义有哪三种?
问题三十四:Kafka 判断一个节点是否还活着有那两个条件?
问题三十五:Kafka 与传统 MQ 消息系统之间有三个关键区别?
问题三十六:讲—讲 kafka 的 ack 的三种机制
问题三十七:消费者故障,出现了活锁问题如何解决?
问题三十八:如何控制消费的位置?
问题三十九:kafka 分布式(不是单机)的情况下,如何保证消息的顺序消费?
问题四十:kafka 的高可用机制是什么?
问题四十一:kafka 如何减少数据丢失?
问题四十二:kafka 如何不消费重复数据?
总结
错过今年面试机会的你,希望明年的三四月能够取得好成绩。以上这份 P7 整理的学习宝藏可以分享给你,祝你面试过三关斩六将。这三个篇章已经全部整理成一套完整且体系的 pdf 文档,无论是思维脑图、学习笔记还是面试考点全整理好了
评论 (1 条评论)