不得不说程序员除了做项目之外,提升自己技能最快的方式就是【看书!】和【刷题!】,这里说的刷题不是无脑刷,而是要明白面试官为什么会问这个问题,以及这个问题的意义在哪里!
今天带来的是全新升级的《Java 岗面试核心 MCA 版》,这个版本里面不仅仅包含了面试题,还有更多的技术难点、大厂算法、实战项目、简历模板等等,全册接近 1700 页!相比上一个版本的 287 页,升级了多少内容可想而知!!!
先看看《Java 岗面试核心 MCA 版》的大概内容:Java 基础、JVM、多线程、MySQL、Spring、SpringBoot、SpringCloud、Dubbo、Mybatis、Redis、网络、Linux、MQ、Zookeeper、Netty、大数据、算法与数据结构、设计模式、项目实战、简历模板等等。
由于 MCA 版的细节内容实在是太多了,毕竟将近 2000 页的文档,只能把部分知识点里面的章节挑出来介绍一下,每个章节的小节点里面都有更详细的内容!
Java 基础部分
-
Java 概述
-
基础语法
-
面向对象
-
类与接口
-
变量与方法
-
内部类
-
重写与重载
-
对象相等判断
-
值传递
-
Java 包
-
IO 流
-
反射
-
常用 API
-
集合容器概述
-
Collection 接口
-
HashMap
-
多线程
-
Java 异常
-
Tomcat
-
并发编程
-
Java 基础面试题
JVM 部分
-
JVM 的主要组成部分及其作用
-
堆栈的区别
-
处理并发安全问题
-
内存溢出异常
-
JVM 内存模型,GC 机制和原理
-
双亲委派
-
深拷贝和浅拷贝
-
JVM 性能调优
-
线程
-
JVM 内存区域
-
JVM 运行时内存
-
垃圾回收与算法
-
JAVA 四种引用类型
-
GC 分代收集算法 VS 分区收集算法
-
GC 垃圾收集器
-
JAVA IO/NIO
-
JVM 类加载机制
-
JVM 面试高频题
多线程部分
-
线程,程序、进程的基本概念。以及他们之间关系
-
线程的基本状态
-
线程的创建方式
-
线程池原理
-
线程的生命周期
-
线程安全
-
volatile 关键字的用法:使多线程中的变量可见
-
volatile、ThreadLocal 的使用场景和原理
-
synchronized、volatile 区别
-
synchronized 锁粒度、模拟死锁场景
-
Java 并发和并行
-
怎么有效提高并发量
-
进程通讯的方式:消息队列,共享内存,信号量,socket 通讯等
-
线程通讯
-
并发、同步的接口或方法
-
同步锁与死锁
-
进程调度算法
-
CAS
-
AQS
-
NIO
-
多线程面试高频题
MySQL 部分
-
数据库基础知识
-
数据类型
-
引擎
-
索引
-
事务
-
锁
-
视图
-
存储过程与函数
-
触发器
-
常用 SQL 语句
-
SQL 优化
-
数据库结构优化
-
MySQL 锁:悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁
-
分布式事务的原理 2 阶段提交,同步异步阻塞非阻塞
-
数据库事务隔离级别,MySQL 默认的隔离级别
-
Spring 如何实现事务
-
JDBC 如何实现事务
-
分布式事务实现
-
SQL 的整个解析、执行过程原理、SQL 行转列
-
红黑树的实现原理和应用场景
-
MySQL 分表自增 ID 解决方案
-
理解分布式 id 生成算法 SnowFlake
-
MySQL 索引背后的数据结构及算法原理
-
MVCC
-
MySQL 索引原理之聚簇索引
-
关系型和非关系型数据库区别
-
MySQL 面试高频题
Spring 部分
-
Spring lOC
-
Spring AOP 的原理
-
Spring AOP 两种代理方式
-
Spring 如何保证 Controller 并发的安全?
-
Spring 中用到哪些设计模式?
-
Spring IOC 的理解,其初始化过程?
-
Spring 的事务管理
-
Spring MVC 概述 Spring 概述
-
Spring 控制反转(IOC)
-
Spring 注解
-
Spring 数据访问
-
Spring 面向切面编程(AOP)什么是 AOP
-
SpringMVC 面试题
-
SpringMVC 原理
-
Spring 数据访问
-
Spring 原理
-
Spring 核心组件
-
Spring 面试高频题
SpringBoot 部分
-
Spring Boot 概述配置
-
安全
-
比较一下 Spring Security 和 Shiro 各自的优缺点
-
Spring Boot 解决跨域问题
-
监视器
-
整合第三方项目
-
Spring Boot 实现异常处理
-
Spring Boot 特性
-
Spring Boot 原理
-
Spring Boot 实现定时任务
-
Spring Boot 比 Spring 做了哪些改进?
-
Spring Boot 热加载
-
Spring Boot 设置有效时间和自动刷新缓存,时间支持在配置文件中配置
-
hibernate 和 ibatis 的区别
-
讲讲 mybatis 的连接池
-
Spring Boot 经典面试题
SpringCloud 部分
-
什么是 Spring Cloud
-
为什么需要学习 Spring Cloud
-
Spring Cloud 发展前景
-
Spring Cloud 对比下 Dubbo,什么场景下该使用 Spring Cloud?
-
Spring Cloud 熔断机制介绍
-
CAP 原理和 BASE 理论
-
分布式事务、分布式锁
-
设计目标与优缺点
-
整体架构
-
Spring Cloud Config
-
Spring Cloud Netflix
-
Spring Cloud Bus
-
Spring Cloud Sleuth
-
Spring Cloud Stream
-
Spring Cloud Task
-
Spring Cloud OpenFeign
-
Spring Cloud 的版本关系
-
SpringBoot 和 SpringCloud 的区别?
-
服务注册和发现是什么意思?Spring Cloud 如何实现?
-
负载平衡的意义什么?
-
什么是 Hystrix?它如何实现容错?
-
什么是 Netflix Feign?它的优点是什么?
-
Spring Cloud 断路器的作用
-
Spring Cloud 面试题
Dubbo 部分
-
基础知识
-
架构设计
-
注册中心
-
集群配置
-
通信协议
-
设计模式
-
运维管理
-
SPI
-
分布式系统原理
-
Dubbo 完整的一次调用链路介绍
-
Dubbo 支持几种负载均衡策略?
-
Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
-
Dubbo 超时时间怎样设置?Dubbo 有些哪些注册中心?
-
Dubbo 集群的负载均衡有哪些策略 Dubbo 是什么?
-
Dubbo 的主要应用场景?Dubbo 的核心功能?Dubbo 的核心组件?
-
Dubbo 服务注册与发现的流程?
-
Dubbo 的架构设计?
-
Dubbo 框架设计—共划分了 10 个层:Dubbo 的服务调用流程?
-
Dubbo 支持哪些协议,每种协议的应用场景,优缺点?
-
Dubbo 有些哪些注册中心?
-
为什么需要服务治理?
-
Dubbo 与 Spring 的关系
-
Dubbo 和 Dubbox 之间的区别
-
Dubbo 和 Spring Cloud 的关系
-
Dubbo 和 Spring Cloud 的区别
Mybatis 部分
-
JPA 原理
-
MyBatis 简介
-
Mybatis 缓存
-
Mybatis 的一级缓存原理(sqlsession 级别)
-
MyBatis 缓存
-
MyBatis 数据源与连接池
-
MyBatis 的解析和运行原理
-
Spring MVC 运行流程
-
什么是 MyBatis?
-
讲下 MyBatis 的缓存
-
Mybatis 是如何进行分页的?分页插件的原理是什么?
-
简述 Mybatis 的插件运行原理,以及如何编写一个插件?
-
为什么说 Mybatis 是半自动 ORM 映射工具?它与全自动的区别在哪里?
-
MyBatis 与 Hibernate 有哪些不同?
-
MyBatis 的好处是什么?
-
简述 Mybatis 的 Xml 映射文件和 Mybatis 内部数据结构之间的映射关系
Redis 部分
-
Redis 概述
-
数据类型
-
持久化
-
过期键的删除策略
-
内存相关
-
分区
-
分布式问题
-
其他问题
-
消息中间件如何保证消息的一致性
-
如何进行消息的重试机制?
-
Redis 数据类型
-
Redis 集群如何同步
-
Redis 的数据添加过程是怎样的:哈希槽
-
Redis 的淘汰策略有哪些
-
Redis 集群基础
-
Redis Cluster 主从模式
-
Redis 为什么这么快?
-
Redis 采用多线程会有哪些问题?
-
Redis 支持哪几种数据结构 Redis 跳跃表的问题
-
Redis 是单进程单线程的,如何能够高并发?
-
Redis 如何使用 Redis 实现分布式锁?
-
Redis 分布式锁操作的原子性,Redis 内部是如何实现的?
网络部分
-
计算机网络体系结构
-
TCP/IP 四层体系结构
-
TCP/IP 协议族常见面试题
-
Socket 通信,以及长连接,分包,连接异常断开的处理
-
http 中,get post 的区别
-
HTTP 报文内容
-
说说浏览器访问 http://www.taobao.com,经历了怎样的过程
-
HTTP 协议、HTTPS 协议,SSL 协议及完整交互过程
-
Ping 过程原理详解
-
TCP/IP 协议详解笔记——ARP 协议和 RARP 协议
-
DNS 域名解析的过程
-
Http 会话的四个过程
-
网络 7 层架构
-
TCP/IP 原理
-
TCP 三次握手/四次挥手
-
HTTP 原理
-
CDN 原理 RPC
-
Znode 有四种形式的目录节点
-
负载均衡
-
四层负载均衡 vs 七层负载均衡
-
负裁均衡算法/策略
-
LVS
-
Keepalive
-
Nginx 反向代理负载均衡
Linux 部分
-
什么是 Linux
-
Unix 和 Linux 有什么区别?
-
什么是 Linux 内核?
-
Linux 的基本组件是什么?
-
Linux 的体系结构
-
BASH 和 DOS 之间的基本区别是什么?
-
Linux 开机启动过程?
-
Linux 系统缺省的运行级别?
-
Linux 使用的进程间通信方式?
-
Linux 有哪些系统日志文件?
-
Linux 系统安装多个桌面环境有帮助吗?
-
什么是交换空间?
-
什么是 root 账户什么是 LILO?
-
什么是 CLI?
-
什么是 GUI?
-
开源的优势是什么?
-
GNU 项目的重要性是什么?
-
磁盘、目录、文件
-
安全
-
Shell
-
磁盘管理命令 cd 命令
-
swap 分区
-
overcommit_memory
-
Linux 系统下查看 CPU、内存负载情况
-
经典面试题
消息中间件部分
-
为什么使用 MQ?
-
消息队列有什么优缺点?
-
RabbitMQ 有什么优缺点?
-
你们公司生产环境用的是什么消息中间件?
-
Kafka、ActiveMQ、RabbitMQ、RocketMQ 有什么优缺点?
-
MQ 有哪些常见问题?如何解决这些问题?
-
什么是 RabbitMQ?
-
Rabbitmq 的使用场景
-
RabbitMQ 基本概念
-
RabbitMQ 的工作模式
-
如何保证 RabbitMQ 消息的顺序性?
-
消息如何分发?
-
消息怎么路由?
-
消息基于什么传输?
-
如何保证 RabbitMQ 消息的可靠传输?
-
如何保证消息不被重复消费?或者说,如何保证消息消费时的幂等性?
-
设计 MQ 思路
-
消息中间件如何保证消息的一致性如何进行消息的重试机制?
-
传递保证语义
-
生产者的"Exactly once"语义方案
-
消费者的"Exactly once"语义方案
-
ISR 集合
-
请说明什么是 Apache Kafka?
-
请说明什么是传统的消息传递方法?
-
请说明 Kafka 相对传统技术有什么优势?
-
在 Kafka 中 broker 的意义是什么?
-
Kafka 服务器能接收到的最大信息是多少?
-
解释 Kafka 的 Zookeeper 是什么?我们可以在没有 Zookeeper 的情况下使用 Kafka 吗?
-
解释 Kafka 的用户如何消费信息?
-
解释如何提高远程用户的吞吐量?
Zookeeper 部分
-
ZooKeeper 是什么?
-
ZooKeeper 提供了什么?
-
Zookeeper 文件系统
-
Zookeeper 怎么保证主从节点的状态同步?
-
四种类型的数据节点 Znode
-
Zookeeper Watcher 机制-数据变更通知
-
客户端注册 Watcher 实现
-
服务端处理 Watcher 实现
-
客户端回调 Watcher
-
ACL 权限控制机制
-
Chroot 特性
-
会话管理
-
服务器角色
-
Zookeeper 下 Server 工作状态数据同步
-
zookeeper 是如何保证事务的顺序—致性的?
-
分布式集群中为什么会有 Master 主节点?
-
ZK 节点宕机如何处理?
-
Zookeeper 有哪几种几种部署模式?
-
Zookeeper 的 java 客户端都有哪些?
-
Chubby 是什么,和 zookeeper 比你怎么看?
-
说几个 zookeeper '常用的命令。
-
ZAB 和 Paxos 算法的联系与区别?
-
Zookeeper 的典型应用场景 Zookeeper 都有哪些功能?
-
说一下 Zookeeper 的通知机制?
-
Zookeeper 和 Dubbo 的关系?
-
Zookeeper 集群之间如何通讯
-
Zookeeper 面试题
Netty 部分
-
Netty 简介
-
Netty 高性能设计
-
Netty 架构设计
-
Netty 面试题
-
Netty 是什么?
-
Netty 特点是什么?
-
Netty 的优势有哪些?
-
Netty 的应用场景有哪些?
-
Netty 高性能表现在哪些方面?
-
BIO、NIO 和 AIO 的区别?
-
NIO 的组成?
-
Netty 的线程模型?
-
TCP 粘包/拆包的原因及解决方法?
-
什么是 Netty 的零拷贝?
-
Netty 中有哪种重要组件?
-
Netty 发送消息有几种方式?
-
默认情况 Netty 起多少线程?何时启动?
-
了解哪几种序列化协议?
-
如何选择序列化协议?
-
Netty 支持哪些心跳类型设置?
-
Netty 和 Tomcat 的区别?
-
NIOEventLoopGroup 源码?
-
Netty 原理
-
Netty RPC 实现
-
Netty 经典面试题
大数据部分
-
Hadoop
-
SPARK 概念
-
SPARK 核心架构
-
SPARK 核心组件
-
SPARK 编程模型
-
SPARK 计算模型
-
SPARK 运行流程
-
SPARK RDD 流程
-
SPARK RDD
-
Storm
-
集群架构
-
YARN
-
负载均衡的原理
-
六大 Web 负载均衡原理与实现
-
http 重定向
-
DNS 负裁均衡
-
反向代理负载均衡
-
IP 负载均衡(LVS-NAT)
-
直接路由(LVS-DR)
-
IP 隧道(LVS-TUN)
-
Tomcat 并发
-
Exchange 类型
-
base 概念
-
列式存储
-
Hbase 核心概念
-
Hbase 核心架构
-
Hbase 的写逻辑
-
HBase vs Cassandra
-
CLH 队列
算法与数据结构部分
-
红黑树
-
红黑树在 STL 上的应用
-
AVLtree
-
二叉搜索树
-
红黑树的定义
-
B 树定义
-
B+树
-
Trie 树((字典树)
-
贪心算法和动态规划的区别
-
BitMap 从字面的意思
-
Bitmap 应用
-
Bitmap 排序复杂度分析
-
BitMap 算法流程
-
BitMap 算法评价
-
七大查找算法
-
—致性算法
-
JAVA 算法
-
数据结构
-
加密算法
-
顺序查找
-
二分查找
-
插值查找
-
斐波那契查找
-
树表查找
-
分块查找
-
哈希查找
项目实战部分(完整项目白皮书+视频+源码)
-
日志
-
Slf4j
-
Log4j
-
LogBack
-
以网约车为例,切入分布式项目
-
互联网高并发项目需求分析
-
高并发场景业务漏洞,正确理解技术赋能业务
-
实际生产项目中高并发微服务架构设计
-
合理制定业务架构图支持高并发和扩展性挑战
-
如何在项目开发中沉淀中台能力
-
项目拆解技术选型以及技术架构图
-
网约车业务中的派单功能设计
-
网约车中开放平台接口设计
-
CAP 定理在实际生产中的应用
-
网约车中数据—致性的保障上:分布式锁
-
网约车中数据—致性的保障上:分布式事务
设计模式部分
-
单例模式
-
工厂模式
-
抽象工厂模式
-
建造者模式
-
原型模式
-
适配器模式
-
装饰器模式
-
代理模式
-
中介者模式
-
命令模式
-
责任链模式
-
策略模式
-
迭代器模式
-
组合模式
-
观察者模式
-
门面模式
-
备忘录模式
-
访问者模式
-
状态模式
-
解释器模式
-
享元模式
-
桥梁模式
-
模板方法模式