📚Java 基础
📃面向对象三大特征
📃重载和重写的区别
📃String,StringBuffer,StringBuilder的区别
📃final,finally,finalize的区别
📃==和equals的区别
📃接口和抽象类的区别
📃什么是强引用 、软引用、 弱引用、虚引用
📃字符型常量和字符串常量的区别
📃wait和sleep的区别
📃异常分类以及处理机制
📃自动装箱与拆箱
📃成员变量与局部变量的区别有哪些?
📃构造方法有哪些特性?
📃介绍hashCode 与 equals方法
📃为什么Java中只有值传递
📃Java序列化中如何让某些字段不进行序列化
📃既然有了字节流,为什么还要有字符流
📃BIO,NIO,AIO 的区别
📃深拷贝和浅拷贝
📃cloneable接口实现原理
📃Java反射
📚Java 集合
📃数组在内存中如何分配
📃Arrays.sort 实现原理和 Collection 实现原理
📃List 和 Set 的区别
📃ArrayList 与 Vector 区别
📃ArrayList 的扩容机制
📃HashMap 和 Hashtable 的区别
📃HashMap的底层实现
📃HashMap 是线程安全的吗,为什么不是线程安全的
📃JDK1.8中 HashMap 的扩容过程
📃JDK1.8中 HashMap 做了哪些优化
📃HashMap 的长度为什么是2的幂次方
📃HashMap 多线程操作导致死循环问题
📃HashSet 是如何保证不重复的
📃HashSet 和 HashMap 区别
📃ConcurrentHashMap 和 Hashtable 的区别
📃ConcurrentHashMap线程安全的具体实现方式
📃LinkedHashMap的应用
📃TreeMap的数据结构
📃comparable 和 Comparator的区别
📚Java 并发
📃简述线程和进程的关系,区别和优缺点
📃为什么程序计数器、虚拟机栈和本地方法栈是线程私有的
📃为什么虚拟机栈和本地方法栈是私有
📃解释堆和方法区
📃并发与并行的区别
📃为什么要使用多线程
📃线程的生命周期和状态
📃什么是上下文切换
📃什么是线程死锁
📃如何避免死锁
📃synchronized 关键字的了解
📃synchronized 的底层原理
📃JDK1.6 之后的synchronized 关键字的底层优化
📃synchronized和ReentrantLock 的区别
📃介绍Java内存模型
📃volatile 的实现原理
📃synchronized 关键字和 volatile 关键字的区别
📃ThreadLocal原理,用的时候需要注意什么
📃ThreadLocal的内存泄露问题
📃为什么要用线程池
📃线程池原理分析
📃实现Runnable接口和Callable接口的区别
📃执行execute()方法和submit()方法的区别
📃如何创建线程池
📃ThreadPoolExecutor构造函数的参数分析
📃ThreadPoolExecutor的饱和策略
📃Atomic 原子类
📃JUC 包中的原子类是哪4类
📃AtomicInteger 的使用与原理
📃什么是AQS(AbstractQueuedSynchronizer)
📃AQS 原理
📃AQS 对资源的共享方式
📃ConcurrentHashMap的原理
📃八种阻塞队列以及各个阻塞队列的特性
📃CopyOnWriteArrayList的原理
📃ConcurrentSkipListMap的原理
📃ScheduledThreadPoolExecutor 的介绍
📃乐观锁和悲观锁介绍
📃乐观锁和悲观锁的使用场景
📃乐观锁常见的两种实现方式
📃乐观锁的缺点
📃如何解决ABA问题
📃CAS与synchronized的使用情景
📃什么是Semaphore(信号量)
📃CountDownLatch 和 CyclicBarrier 的用法,以及相互之间的差别
📃ReentrantLock 和 ReentrantReadWriteLock的区别
📃LockSupport工具
📃Condition接口及其实现原理
📃Fork/Join框架的理解
📃分段锁的原理,锁力度减小的思考
📃几种常见的线程池及使用场景
📃线程池都有哪几种工作队列
📃怎么理解无界队列和有界队列
📃线程池如何调优
📚JVM
📃jvm内存模型
📃对象的创建过程
📃什么情况下会出现内存溢出,内存泄漏
📃Java线程栈
📃JVM 年轻代到年老代的晋升过程的判断条件是什么
📃JVM 出现 fullGC 很频繁,怎么去线上排查问题
📃类加载为什么要使用双亲委派模式,有没有什么场景是打破了这个模式
📃类的加载过程
📃类的实例化顺序
📃JVM垃圾回收机制,何时触发MinorGC等操作
📃JVM 中一次完整的 GC 流程(从 ygc 到 fgc)是怎样的
📃各种回收器,各自优缺点,重点CMS、G1
📃各种回收算法的比较
📃JVM老年代和新生代的比例
📃为什么要把堆和栈区分出来呢?栈中不是也可以存储数据吗
📃为什么不把基本类型放堆中呢
📃在Java中,什么是是栈的起始点,同是也是程序的起始点
📃Java虚拟机中,数据类型可以分为哪几类
📃Java中有没有指针的概念
📃Java中,栈的大小通过什么参数来设置
📃一个空Object对象的占多大空间
📃对象引用类型分为哪几类
📃如何解决内存碎片的问题
📃如何解决同时存在的对象创建和对象回收问题
📃如何选择合适的垃圾收集算法
📃JVM中最大堆大小有没有限制
📃吞吐量优先选择什么垃圾回收器
📃响应时间优先选择什么垃圾回收器
📃如何进行JVM调优
📚MySQL
📃MyISAM和InnoDB区别
📃为什么使用索引
📃索引是如何提高查询速度的
📃使用索引需要注意些什么
📃BTree索引和哈希索引
📃MyISAM和InnoDB实现BTree索引方式的区别
📃什么是覆盖索引
📃选择索引和利用索引查询的3个原则
📃什么是事务
📃事物的四大特性
📃并发事务带来哪些问题
📃不可重复读和幻读区别
📃事务隔离级别有哪些
📃MySQL的默认隔离级别
📃锁机制与InnoDB锁算法
📃表级锁和行级锁对比
📃InnoDB存储引擎的三种锁的算法
📃大表的优化
📃分库分表之后,id 主键如何处理
📃snowflake算法
📃美团的Leaf分布式ID生成系统
📃一条SQL语句在MySQL中如何执行的
📃MySQL高性能优化规范建议
📃一条SQL语句执行得很慢的原因有哪些
📚Spring
📃BeanFactory 和 FactoryBean?
📃Spring IOC 的理解,其初始化过程?
📃Soring 有多少种IoC容器
📃IoC和DI有什么区别
📃BeanFactory 和 ApplicationContext?
📃IoC的好处有哪些
📃Spring框架找那个有哪些不同类型的事件
📃Spring Bean 的生命周期,如何被管理的?
📃Spring Bean 的加载过程是怎样的?
📃Spring 支持哪些Spring Scope
📃什么是Spring的内部Bean
📃什么是Spring装配
📃Spring 框架中单例Bean是线程安全的吗
📃Spring Bean如何解决循环依赖的问题
📃什么是AOP
📃JoinPoint和PointCut的区别
📃AOP有哪些实现方式
📃什么是编织(Weaving)
📃什么是事务
📃事务的特性指的是
📃Spring支持的事务管理类型
📃Spring 事务如何和不同的数据持久化框架做集成
📃为什么在Spring事务中不能切换数据源
📃什么是事务的隔离级别
📃有哪些隔离级别
📃什么是事务的传播级别
📃有哪些传播级别
📃事务的超时属性,只读属性和回滚规则
📃如果要你实现Spring AOP,请问怎么实现
📃如果要你实现Spring IOC,你会注意哪些问题
📃Spring 是如何管理事务的,事务管理机制
📃Spring 的不同事务传播行为有哪些,干什么用的
📃Spring 中用到了那些设计模式
📃Spring 循环注入的原理
📃Spring AOP的理解,各个术语,他们是怎么相互工作的
📃Spring 如何保证 Controller 并发的安全
📚Spring MVC
📃Spring MVC 的工作原理
📃介绍下 Spring MVC 的核心组件
📃描述一下 DispatcherServlet 的工作流程
📃介绍一下 WebApplicationContext
📃Spring MVC 的 Controller 是不是单例
📃Spring MVC 怎样设定重定向和转发
📃Spring MVC 的拦截器可以做哪些事情
📃Spring MVC 的拦截器和 Filter 过滤器有什么差别
📃REST 代表着什么
📃资源是什么
📃什么是安全的 REST 操作
📃什么是幂等操作? 为什么幂等操作如此重要
📃REST 是可扩展的或说是协同的吗
📃REST 用哪种 HTTP 方法呢
📃删除的 HTTP 状态返回码是什么
📃REST API 是无状态的吗
📃REST安全吗? 你能做什么来保护它
📃RestTemplate 的优势是什么
📃HttpMessageConverter 在 Spring REST 中代表什么
📃如何创建 HttpMessageConverter 的自定义实现来支持一种新的请求/响应
📃@PathVariable 注解,在 Spring MVC 做了什么? 为什么 REST 在 Spring 中如此有用
📚SpringBoot
📃 Spring Boot 是什么?
📃 Spring Boot 提供了哪些核心功能
📃 Spring Boot 有什么优缺点
📃 Spring Boot、Spring MVC 和 Spring 有什么区别
📃 Spring Boot 中的 Starter 是什么
📃 Spring Boot 常用的 Starter 有哪些
📃 创建一个 Spring Boot Project 的最简单的方法是什么
📃 如何统一引入 Spring Boot 版本
📃 运行 Spring Boot 有哪几种方式
📃 如何打包 Spring Boot 项目
📃 如果更改内嵌 Tomcat 的端口
📃 如何重新加载 Spring Boot 上的更改,而无需重新启动服务器
📃 Spring Boot 的配置文件有哪几种格式
📃 Spring Boot 默认配置文件是什么
📃 Spring Boot 如何定义多套不同环境配置
📃 Spring Boot 配置加载顺序
📃 Spring Boot 有哪些配置方式
📃 Spring Boot 的核心注解是哪个
📃 什么是 Spring Boot 自动配置
📃 Spring Boot 有哪几种读取配置的方式
📃 使用 Spring Boot 后,项目结构是怎么样的呢
📃 如何在 Spring Boot 启动的时候运行一些特殊的代码
📃 Spring Boot 2.X 有什么新特性
📚SpringCloud
📃什么是 Spring Cloud ?
📃Spring Cloud 核心功能是什么?
📃Spring Cloud 有哪些组件?
📃Spring Cloud 和 Spring Boot 的区别和关系?
📃Spring Cloud 和 Dubbo 的区别?
📃什么是微服务?
📃微服务的优缺点分别是什么?
📃注册中心
📃为什么要使用服务发现?
📃Eureka
📃Eureka 如何实现集群?
📃聊聊 Eureka 缓存机制?
📃什么是 Eureka 自我保护机制?
📃负载均衡
📃为什么要负载均衡?
📃Ribbon
📃Ribbon 有哪些负载均衡算法?
📃聊聊 Ribbon 缓存机制?
📃聊聊 Ribbon 重试机制?
📃Ribbon 是怎么和 Eureka 整合的?
📃声明式调用
📃Feign
📃Feign 实现原理?
📃Feign 和 Ribbon 的区别?
📃Feign 是怎么和 Ribbon、Eureka 整合的?
📃聊聊 Feign 重试机制?
📃服务保障
📃为什么要使用服务保障?
📃Hystrix
📃Hystrix 隔离策略?
📃聊聊 Hystrix 缓存机制?
📃什么是 Hystrix 断路器?
📃什么是 Hystrix 服务降级?
📃网关服务
📃为什么要网关服务?
📃Zuul
📃Spring Cloud Gateway
📃配置中心
📃Spring Cloud Config
📃Apollo
📃链路追踪
📃SkyWalking
📃Spring Cloud Sleuth
📚Dubbo
📃什么是 Dubbo
📃什么是 RPC?RPC原理是什么
📃为什么要用 Dubbo
📃Dubbo 的架构和工作原理
📃什么是SPI机制
📃Dubbo 的负载均衡策略
📃zookeeper宕机与dubbo直连的情况
📃dubbo的健壮性表现
📚Redis
📃Redis 有什么优点
📃Redis 有什么缺点
📃Redis 和 Memcached 的区别有哪些
📃请说说 Redis 的线程模型
📃为什么 Redis 单线程模型也能效率这么高
📃Redis 是单线程的,如何提高多核 CPU 的利用率
📃Redis 有几种持久化方式
📃Redis 有几种数据“过期”策略
📃Redis 有哪几种数据“淘汰”策略
📃如果有大量的 key 需要设置同一时间过期,一般需要注意什么
📃Redis 有哪些数据结构
📃聊聊 Redis 使用场景
📃Redis 支持的 Java 客户端都有哪些
📃如何使用 Redis 实现分布式锁
📃如何使用 Redis 实现分布式限流
📃如何使用 Redis 实现消息队列
📃什么是 Redis Pipelining
📃什么是 Redis 事务
📃Redis 集群都有哪些方案
📃什么是 Redis 主从同步
📃如何使用 Redis Sentinel 实现高可用
📃如果使用 Redis Cluster 实现高可用
📃什么是 Redis 分区
📃Redis 有哪些重要的健康指标
📃怎么优化 Redis 的内存占用
📃Redis 常见的性能问题都有哪些?如何解决
📃修改配置不重启 Redis 会实时生效吗
📃缓存雪崩和缓存穿透问题解决方案
📃如何解决 Redis 的并发竞争 Key 问题
📃如何保证缓存与数据库双写时的数据一致性
📚Netty
📃BIO 是什么
📃NIO 是什么
📃AIO 是什么
📃BIO、NIO 有什么区别
📃什么是 Netty
📃为什么选择 Netty
📃为什么说 Netty 使用简单
📃说说业务中 Netty 的使用场景
📃说说 Netty 如何实现高性能
📃Netty 的高性能如何体现
📃Netty 的高可靠如何体现
📃Netty 的可扩展如何体现
📃简单介绍 Netty 的核心组件
📃说说 Netty 的逻辑架构
📃什么是 Reactor 模型
📃请介绍 Netty 的线程模型
📃什么是业务线程池
📃TCP 粘包 / 拆包的原因?应该这么解决
📃了解哪几种序列化协议
📃Netty 的零拷贝实现
📃原生的 NIO 存在 Epoll Bug 是什么?Netty 是怎么解决的
📃什么是 Netty 空闲检测
📃Netty 如何实现重连
📃Netty 自己实现的 ByteBuf 有什么优点
📃Netty 为什么要实现内存管理
📃Netty 如何实心内存管理
📃什么是 Netty 的内存泄露检测?是如何进行实现的
📚高并发架构
📘消息队列
📃为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
📃如何保证消息队列的高可用?
📃如何保证消息不被重复消费?(如何保证消息消费的幂等性)
📃如何保证消息的可靠性传输?(如何处理消息丢失的问题)
📃如何保证消息的顺序性?
📃如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
📃如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。
📘搜索引擎
📃es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)?
📃es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗?
📃es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
📃es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
📘缓存
📃在项目中缓存是如何使用的?缓存如果使用不当会造成什么后果?
📃Redis 和 Memcached 有什么区别?Redis 的线程模型是什么?为什么单线程的 Redis 比多线程的 Memcached 效率要高得多?
📃Redis 都有哪些数据类型?分别在哪些场景下使用比较合适?
📃Redis 的过期策略都有哪些?手写一下 LRU 代码实现?
📃如何保证 Redis 高并发、高可用?Redis 的主从复制原理能介绍一下么?Redis 的哨兵原理能介绍一下么?
📃Redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?
📃Redis 集群模式的工作原理能说一下么?在集群模式下,Redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?如何动态增加和删除一个节点?
📃了解什么是 redis 的雪崩、穿透和击穿?Redis 崩溃之后会怎么样?系统该如何应对这种情况?如何处理 Redis 的穿透?
📃如何保证缓存与数据库的双写一致性?
📃Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?
📃生产环境中的 Redis 是怎么部署的?
📘分库分表
📃为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?
📃现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
📃如何设计可以动态扩容缩容的分库分表方案?
📃分库分表之后,id 主键如何处理?
📘读写分离
📃如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?
📘高并发系统
📃如何设计一个高并发系统?
📚分布式架构
📘分布式服务框架
📃说一下 Dubbo 的工作原理?注册中心挂了可以继续通信吗?
📃Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?
📃Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?
📃Dubbo 的 spi 思想是什么?
📃如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?
📃分布式服务接口的幂等性如何设计(比如不能重复扣款)?
📃分布式服务接口请求的顺序性如何保证?
📃如何自己设计一个类似 Dubbo 的 RPC 框架?
📘分布式锁
📃Zookeeper 都有哪些应用场景?
📃使用 Redis 如何设计分布式锁?使用 Zookeeper 来设计分布式锁可以吗?以上两种分布式锁的实现方式哪种效率比较高?
📘分布式事务
📃分布式事务了解吗?你们如何解决分布式事务问题的?TCC 如果出现网络连不通怎么办?XA 的一致性如何保证?
📘分布式会话
📃集群部署时的分布式 Session 如何实现?
📚高可用架构
📃Hystrix 介绍
📃电商网站详情页系统架构
📃Hystrix 线程池技术实现资源隔离
📃Hystrix 信号量机制实现资源隔离
📃Hystrix 隔离策略细粒度控制
📃深入 Hystrix 执行时内部原理
📃基于 request cache 请求缓存技术优化批量商品数据查询接口
📃基于本地缓存的 fallback 降级机制
📃深入 Hystrix 断路器执行原理
📃深入 Hystrix 线程池隔离与接口限流
📃基于 timeout 机制为服务接口调用超时提供安全保护
📃如何设计一个高可用系统?
📃如何限流?在工作中是怎么做的?说一下具体的实现?
📃如何进行熔断?
📃熔断框架都有哪些?具体实现原理知道吗?
📃熔断框架如何做技术选型?选用 Sentinel 还是 Hystrix?
📃如何进行降级?
📚微服务架构
📃关于微服务架构的描述
📃从单体式架构迁移到微服务架构
📃微服务的事件驱动数据管理
📃选择微服务部署策略
📃什么是微服务?微服务之间是如何独立通讯的?
📃Spring Cloud 和 Dubbo 有哪些区别?
📃Spring Boot 和 Spring Cloud,谈谈你对它们的理解?
📃什么是服务熔断?什么是服务降级?
📃微服务的优缺点分别是什么?说一下你在项目开发中碰到的坑?
📃你所知道的微服务技术栈都有哪些?
📃微服务治理策略
📃Eureka 和 Zookeeper 都可以提供服务注册与发现的功能,它们有什么区别?
📚微服务架构
📃如何从大量的 URL 中找出相同的 URL?
📃如何从大量数据中找出高频词?
📃如何找出某一天访问百度网站最多的 IP?
📃如何在大量的数据中找出不重复的整数?
📃如何在大量的数据中判断一个数是否存在?
📃如何查询最热门的查询串?
📃如何统计不同电话号码的个数?
📃如何从 5 亿个数中找出中位数?
📃如何按照 query 的频度排序?
📃如何找出排名前 500 的数?
📚算法
📚计算机网络
📃TCP、UDP 协议的区别
📃在浏览器中输入url地址到显示页面的过程
📃HTTP长连接、短连接
📃TCP 三次握手和四次挥手
📃TCP窗口滑动和流量控制
📚设计模式
📚生产实践
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 个人博客!