目录
一、Java基础
- Java数据类型
- 自动装箱以及拆箱,为什么要设计一个包装类?
- break ,continue ,return 的区别及作用?
- a++和++a
- 谈谈对面向对象的理解,以及如何使用面向对象?
- 重载(overload)和重写(override)的区别?
- this关键字
- 成员变量与局部变量
- final关键字
- ==和 equals 的区别
- 为什么重写 equals 时必须重写hashCode ⽅法
- 深拷贝和浅拷贝
- 接口能否写普通方法?
- 谈谈对反射的理解?怎么使用反射?反射的实现?
- 泛型、泛型擦除
- Java8新特性以及流式处理
- 常用的设计模式以及优点,实现方式?
- String、StringBuffer、StringBuilder
- IO
- new 一个Object占用的内存
- 枚举的理解以及使用
- 单例模式如何实现以及单例模式的作用?
- finally一定会被执行吗?
- try - catch - finally -return的执行顺序
- Integer的缓存池
二、集合
- 谈谈有哪些集合?
- 集合的作用
- ArrayList和LinkedList
- HashMap的底层原理,例如put流程等
- CopyOnWriteArrayList
- Hashtable和ConcurrentHashMap
- Set下的实现类
- 了解扰动函数、泊松分布
三、网络安全
TCP三次挥手和四次握手
四、MySQL
- 事务的理解?
- 数据库四种隔离界别的理解?
- 事物的ACID特性以及如何保证?
- 脏读、不可重复读、幻读的理解以及如何解决?
- MySQL的逻辑架构
- MySQL的各种索引
- MySQL的优化?
- MySQL的锁机制
- MySQL的存储引擎 InnoDB MyISAM
- Explain关键字的具体使用以及作用?
- 回表、索引下推、覆盖索引
- MySQL的日志
- 怎么设计表?
- SQL优化实战
- SQL语句的执行流程?
- select语句的详细顺序?
- B树和B+树
- B+树存储数据的计算?
五、SSM
- 谈谈对MyBatis的理解
- 谈谈对Spring的理解?
- 谈谈对SpringMVC的理解?
- .#{}和${}的区别?
- MyBatis如何进行分页?
- MyBatis一级二级缓存?
- 掌握MyBatis常用的标签以及作用
- IOC的理解?为什么要使用IOC?
- AOP的理解?为什么要使用AOP?
- AOP的核心概念
- Bean的生命周期?
- Servlet生命周期?
- Spring支持哪些循环方式注入的依赖?
- 如何解决循环依赖?
- Spring事务的传播机制?
- Spring事务失效场景?
- Spring有哪些模块?是干嘛的?
- Spring常用的注解?
- Spring用到的设计模式?
- Spring有哪些特性?
- 能不能手写一个Spring?
- BeanFactory和ApplicationtContext?FactoryBean?
- 谈谈Spring的工作流程?
- 定义Bean依赖的方式?
- 依赖注入的方式?
- 自动装配?
- Bean的作用域?
- 单例Bean线程安全问题?以及如何解决?
- JDK动态代理和CG Lib的区别?
- Spring事务的隔离级别?
- 声明式事务的实现原理?
- MVC的工作流程?MVC Restful风格的工作流程?
- MVC的核心组件?
六、多线程(JUC)
- run() 和 start()
- 线程的实现方式以及区别
- 线程和进程的区别
- 守护线程
- 同步线程和异步线程的理解
- 并行和并发的区别
- 线程的调度方法?
- 线程状态?
- 上下文切换?
- 线程之间如何通信?
- ThreadLocal
- 父子线程如何通信
- 原子性、可见性、有序性的理解?
- volatile的底层实现原理
- .指令重排是什么?
- sleep和wait区别?
- AQS?
- CAS?CAS产生的问题以及如何解决?
- 如何实现异步编排
- 异步编排的各种方法的使用以及区别?
- synchronized的底层原理
- synchronized的优化
- ReenTrantLock的底层原理?
- ReenTrantLock和synchronized的区别?
- ReenTrantLock如何实现公平锁和非公平锁?
- 如何保证i++多线程环境下正确?也就是如何保证原子性?
- AtomicInteger的实现原理?
- 什么是死锁,怎么避免?
七、线程池
- 线程池如何使用?
- 线程池如何实现?
- 线程池有哪几种?
- 线程池参数?
- 线程池状态?
- 线程池异常如何处理?
- 线程池的理解?作用?
- 线程池膨胀流程?
- .线程池提交和关闭以及方式上的区别?
- 阻塞队列
八、JVM
- 谈谈对JVM的理解?
- JVM的内存结构?
- JVM双亲委派?
- 能否自己定义一个String
- 垃圾回收算法有哪些?
- 新生代为何使用复制算法而非标记整理算法?
- 新生代何时晋升老年代?
- 谈谈为何新生代分Eden区和Survivor
- 谈谈为何Survivor分From和to
- 谈谈为何堆要分 新生代和老年代?
- Stop The World ? OopMap?
- 垃圾收集器有哪些?细说如何工作以及有何特点?CMS G1是必备的
- 什么时候会触发Full GC?
- Minor GC什么时候触发?
- 讲讲finalize()方法?
- Java的引用有哪些?
- GC Roots是什么?
- OOM和内存泄露?怎么解决?
- 新生代为什么最多GC15次?
九、SpringBoot
- SpringBoot的理解?
- SpringBoot的自动装配原理?
- SpringBoot的启动方式?
- SpringBoot如何部署?
十、SpringCloud
- SpringCloud的理解?
- .cloud的常用组件?
- 网关的原理以及作用,以及如何使用网关?
- cloud的常用组件的使用以及原理?
- SpringCloud和Dubble的区别?
- SpringCloud和SpringBoot的区别/
- Nacos云端配置和本地配置?
- Zookerper?
- Feign的原理以及使用
十一、RabbitMQ
- MQ在项目中的使用?
- .项目中为什么使用MQ?
- 延迟队列?
- MQ的工作模式?
- 如何保证消息不重复消费?
- MQ的使用流程?
- MQ如何保证消息的幂等性?
- MQ如何保证消息消费顺序?
- 如何保证消息不丢失?
十二、redis
- reids的理解?
- redis为什么这么快?
- redis安全?不安全?
- redis单线程还是多线程?
- 看门狗
- redis如何实现分布式锁
- 缓存击穿、缓存穿透、缓存雪崩的解决?
- 如何保证缓存和数据的强一致性?
- 如何保证缓存和数据的最终一致性?
- 延迟队列?
- redis的数据类型以及使用场景
- redis预热
- redis如何实现消息队列?
- redis热Key
- redis持久化机制?
- IO多路复用
- redis主从复制的实现原理?
- 哨兵
- redis集群?
- redis大Key