Java基础回顾

# 常见问题

## 1. 软件开发

- 常用设计模式,在jdk和spring中的体现

  工厂模式、适配器模式、代理模式、单例模式、责任链模式、策略模式、、、

- 软件开发原则

  单一 职责、接口隔离原则、迪米特法则 、里氏替换则、开闭原则、依赖倒置原则 

- uml关系图

  常见的关系:抽象和继承、组合和聚合、依赖和关联 


## 2.java集合

* 集合继承关系

  list、set、map

* 集合之间的差异

* ArrayList底层原理 

* Map底层原理


## 3.多线程

- 创建线程的方式及差异

- 线程状态流转

- wait和sleep的区别

- 怎么保证线程安全 

- volatile关键字的特性及原理

- sychronized和Lock的区别和实现

- synchronized的升级机制

- AQS的实现

- 常用的并发工具包,像countDownLatch和cyclicbarrier等,原理及差别

- 线程池的常用参数及其含义

- 线程池创建任务的规则

- 线程池的常用实现

- 线程池的配置规则


##  4.jvm

- jvm内存模型 

- 可能出现内存泄露的地方

- 类的使用过程 ,从加载到使用到卸载

- 双亲委派和破坏双亲委派

- gc 算法

  复制算法,标记 -整理算法,标记-清除算法

- gc 垃圾标记

  引用计数法,gc-root

- 垃圾收集器

  新生带和年老代的不同收集器

- cms收集器的回收过程

- 常用jvm的参数,jstat、jmap、jstack,jps

- jmm相关知识,cpu缓存,cpu缓存一致性协议

- 死锁出现的场景和避免死锁的优化 


## 5.myabties

- mybaties缓存

- 插件

- \#和&的区别


## 6.Spring

* Bean的生命周期

* 如何避免循环依赖问题

* IOC、AOP的实现

* SpringMVC的实现流程

* BeanFatory和FatoryBean的区别


## 7.Springboot

* SpringBoot的设计目的

* SpringBoot的初始化过程

* SpringBoot如何实现自动装配

* 如何开发一个SpringBoot插件

##  8.Dubbo

* RPC调用过程

* zk宕机之后是否还能继续调用

* 使用中碰到的问题

* SPI机制

* 负载均衡策略和重试机制

* 和SpringCoud的


## 9.MQ

* mq的作用

* 消息幂等和防止重复

* 消息防止丢失

* 消息累计

* 消息有序性 

* 消息中间件的对比优缺点 

* 消息中间件的 高可用

## 10.Redis

* Redis为什么快

* Redis单线程模型,为什么新版本5要使用多线程

* Redis持久化策略

* Redis失效策略

* Redis缓存淘汰策略

* Redis数据结构和对应的内存模型

* Redis的主从,集群,高可用方案

* Redis哨兵模式

* 缓存血崩和穿透解决方案

* 缓存一致性问题

* Redis常用参数


## 11.MySql

* mysql的所有锁,表锁和行锁 

  表锁:MDl锁,意向排他锁,意向共享锁

* mysql间隙锁 、临键锁


* mysql存储引擎

* mysql的隔离级别

* 事务特性及 实现原理

* mvcc 

* Redolog,undolog,changebuffer,binlog

* b树,b+树特性,

* 索引失效场景

* 索引设计原则

* sql优化和查询计划结果意义

* mysql优化


##  12.分布式

* cap理论和Base理论

* 分布式事务的解决方案

* 分布式锁的实现方案,及其原理

## 13.场景

* 如何设计一个秒杀系统

* 10m内存处理100m文件

## 14.算法相关

## 15.http

* 常用状态码及其含义

* 浏览器访问url的过程 

你可能感兴趣的:(Java基础回顾)