今天给大家整理了一份儿Java面试知识梳理,掌握了这些知识点基本就可以搞定绝大多数的面试了,这些知识点可以帮助自己梳理我们需要掌握的知识点,如果发现自己的不足,有针对性的查缺补漏。
一.基础
javaSE
· 多态
· 接口和抽象类
· 序列化
· 集合
· 代理(动态代理、静态代理)
· 反射
· 设计模式
· IO
javaWeb
· cookie和session
· servet知识
· tomcat知识
JVM
· java类加载机制
· 双亲委派模型
· 常用的GC算法
· 常用垃圾收集器及其原理
· JVM内存模型
· 常见JVM内存分析工具及分析方法
· CUP到了100%怎么排查
· JDK1.7和JDK1.8区别
· JDK1.8新特性
· 常用JVM调优参数
· 判断对象是否存活算法
· 引用的四种级别
· finalize()方法
· 碰到过什么样的JVM线上问题,怎么排查的(最喜欢问的)
网络编程
· tcp和udp
· tcp的三次握手和四次挥手
· AIO、BIO和NIO
· 描述一个请求完整的执行过程(最常问)
· http和https
互联网工具
· git
· maven
· linux
二.并发专题
JMM内存模型
· 线程和程序,并行和并发
· volatile
· 指令重排序,原子性,可见性
并发同步处理
· synchronized内置锁实现原理
· AQS原理
· CAS算法乐观锁
· atomic原子类
· threadLocal类
· 各种锁(悲观锁、乐观锁、可重入锁、公平锁、非公平锁等)
· ReentrantLock/ReentrantReadWriteLock/ReentrantWriteLock详解
· Condition条件队列、同步队列
JUC并发包
· CountDownlatch详解
· Semaphore详解
· CyclicBarrier详解
· 阻塞队列(ArrayBlockingQueue、CurrentLinkedQueue、DelayQueue、PriorityBlockingQueue)
· ForkJoin框架
· 线程池详解
· HashMap和ConcurrentHashMap详解
· ArrayList、LinkedList、CopyOnWriteArrayList详解
· Set、CopyOnWriteArraySet详解
三.分布式专题
Redis缓存
· 什么是redis?
· 为什么要用redis?使用redis的好处
· 怎么用redis
· redis五种数据结构以及使用场景
· 使用redis会有哪些问题?以及怎么解决
· redis集群的搭建和原理
· redis五种数据结构底层实现是怎样的
RocketMq(RabbitMq、kafka)消息队列
· RocketMq、RabbitMq和kafka三者有什么不同?优缺点以及使用场景
· RocketMq是什么?
· RocketMq使用场景?
· RocketMq消息发送原理
· RocketMq消息丢失怎么办?
· RocketMq集群同步机制
· RocketMq事务原理
Zookeeper
· 什么是zookeeper?
· 为什么要使用zookeeper?(优缺点)
· zookeeper使用场景
· zookeeper原理
Dubbo
· dubbo是什么?
· 为什么要使用dubbo?
· dubbo使用场景
· dubbo的rpc调用和http调用的区别,有什么优点
· dubbo原理
· 使用dubbo有没有碰到什么问题?怎么解决?(如:dubbo重试)
· dubbo怎么做到高可用
· dubbo注册中心的服务发现
· dubbo源码分析
netty
· 为什么使用netty
· 内部实现原理
· netty我还没用过,后面再总结
mysql分库分表
· 什么是分库分表
· 分库分表应用场景
· 有什么优缺点
· 分库分表规则(算法),为什么考虑设计这样的规则,有没有可替代的其他规则
· 如何做到从一个单库应用平滑过渡到分库分表的应用
· 如果做到分库分表的数据,按条件分页查询
四.框架源码专题
spring源码
· spring IOC 容器设计原理
· spring的bean的生命周期
· spring Context的装载过程源码分析
· FactoryBean和BeanFactory区别
· AOP注解编程
· AOP源码分析
· spring事务控制与源码分析
· spring拦截器
springMVC源码
· MVC设计思想
· springMVC原理(请求过程)
· springMVC组成的体系结构(映射器、执行器、视图解析器、异常捕捉等)
· springMVC中的常用注解
springboot
· springboot原理(启动流程)
· springboot优缺点,使用它有什么好处
· springboot常用注解
mybatis源码
· 使用mybatis解决了什么问题?有什么好处
· mybatis原理
· 初始化过程
· 一条sql语句执行过程
· Configuration、Mapper、SqlSession、Excutor源码分析
· mybatis的一级缓存和二级缓存
· 如果让你手写一套mybatis,你会怎么设计(面试被问过)
五.数据结构和算法
数据结构
· 数组
· 链表
· 跳跃表
· 堆栈
· 队列
· 各种树
· 矩阵
算法
· 常用排序算法以及时间、空间复杂度
· 《剑指offer》
· 《LeetCode》
· 常见top K问题
六.数据库专题
mysql
· 数据库设计三范式
· 事务(特性和隔离级别)
· MVCC多版本并发控制
· 事务并发问题
· 事务日志(binlog、redo log、undo log)
· 索引数据结构类型
· 索引分类(聚簇索引和非聚簇索引)
· mysam和InnoDb区别
· 架构原理(一条SQL的执行过程)
· SQL调优
· mysql高可用(MMM、MHA、PXC)
ElasticSearch
· es集群原理
· 一条查询请求的完整过程
· es的优缺点
· es应用场景
· 滚动查询
· es的倒排索引原理
· 怎么保证es和mysql的数据一致性
MongoDB
· mongoDB的特性
· mongoDB的使用场景
· mongoDB的优缺点
· 使用过程中有没有碰到什么问题
七.项目
常用项目的设计
· 登录注册
· 单点登录
· 短链接
描述自己项目
· 你在这个项目中参与了哪些部分?
· 你是怎么设计的?
· 为什么这么设计?
· 有没有其他方案替代?
· 用到了什么技术?为什么要用这个技术?有没有可替代的?
· 开发过程中有没有碰到什么(没考虑到的)难点?你是怎么解决的
· 还能不能优化?
· 你有什么收获?
好啦,以上就是java面试知识点梳理大全的全部内容,更多内容干货可关注慕课网~