Java面试/学习知识点概览
Java
- 基础
- 容器
- 并发
- JVM
计算机基础知识
- 计算机网络
- 操作系统
- 数据结构
- 算法
数据库
- MySQL
- Redis
系统设计
常用框架
- Spring
- Spring MVC
- Spring Boot
- MyBatis
- JPA
- Netty
认证授权
- Cookie、Session
- JWT
- SSO
- OAuth2
分布式
- Elasticsearch(分布式搜索引擎)
- RPC
- 消息队列
- API网关
- 数据库扩展:分库分表、读写分离
- 分布式id
- 分布式接口幂等性
- 分布式限流
微服务
- Spring Cloud
其它
- 项目
- 手撕算法
- 源码分析
- 设计题:比如给你一个具体的业务场景让你设计解决方案
一个同行soul友给我整理的知识点
JVM相关
- JVM内存区域组成:程序计数器、堆、栈等
- gc过程及算法
类加载过程
- 类加载机制、类加载器
- 双亲委派机制
多线程
- 多线程的实现方式
- 线程的生命周期
- sleep和wait的区别
- start方法和run方法的区别
- 线程池的参数详解以及工作原理
集合类
- 线程安全的集合类(hashTable,vector)
- hashMap线程安全吗?为什么?说说它的结构
- concurrentMap结构
多线程编程
- volatile关键字,能不能保证原子性,举例说明
- AQS原理
- 什么是CAS
- synchornized原理,和Reentrant Lock区别
基础知识
- StringBuffer和StringBuilder
- JAVA的深拷贝和浅拷贝
Spring
- Spring的特性
- Spring AOP的两种方式,jdk自带代理,cglib代理,什么时候用jdk自带代理,什么时候用cglib代理
- 简单说下Spring的IOC原理
- Spring bean的作用域及生命周期
- Spring MVC的原理及流程
网络编程
- TCP的三次握手和四次握手
- TCP和UDP的区别
其它
- linkedList和ArrayList的区别
- Java的子类和父类的初始化顺序
- 什么是零拷贝
- 进程和线程的关系
- callable和runnable的区别
- 实现单例模式的几种方式,DCL(双重检查锁)
- happens-before原则和as-if-serial原则
- 悲观锁和乐观锁
- CAS的概念,说下CAS的ABA问题,有什么解决方案
- JMM(Java Memory Model)
- 如何停止一个线程
- 共享锁、独占锁
- 公平锁、非公平锁
- 可重入锁
- AOP代理的几种通知方式
- Spring AOP和aspect AOP的区别
- 分布式相关
-CAP理论和BASE理论
-幂等的概念
-分布式锁(Redis实现,zk实现)