互联网 Java 工程师知识扫盲
个人介绍
我是廖志伟,一名java开发工程师,CSDN博客专家,多年一线研发经验,曾就职多家互联网公司,任Java开发工程师职位,参与多个千万级并发互联网产品研发,对大型分布式,高并发及微服务架构有非常深入研究。
项目说明
本项目内容来自廖志伟整理与编写,内容涵盖Java基础、框架、设计模式、缓存、多线程、分布式事务、数据库、JVM、锁、高并发、分布式、高可用、微服务、海量数据处理等领域知识。我对这部分知识做了一个系统的整理,方便学习查阅。下面的内容可在我的gitee仓库进行查看:远程仓库地址:https://gitee/java_wxid/Java-knowledge-system-induction
内容模块
- Java基础
- 框架
- 设计模式
- 缓存
- 多线程
- 分布式事务
- 数据库
- JVM
- 锁
- 消息中间件
- 搜索引擎
- 海量数据处理
- 解决问题的能力
- 网络
- Netty
- 功能模块设计
Java基础
HashMap
- HashMap底层原理?
- HashMap扩容机制?
- HashMap加载因子为什么是0.75?
- HashMap为什么会发生并发修改异常?并发修改异常解决方案?
- 为什么jdk8以后HashMap会使用红黑树优化?
- ConcurrentHashMap底层实现?
- CAS,ABA,volatile这些是什么?
框架
Spring
- Spring IOC,Spring AOP?
- Springbean的生命周期?
- 如何解决循环依赖?
- 父子容器?
- 事务实现原理?
- 动态代理原理?
- Spring MVC工作原理?
- Spring如何实现事务?
Mybatis
- Mybatis框架优点?
Dubbo
- 说一下 Dubbo 的工作原理?注册中心挂了可以继续通信吗?
- Dubbo 支持哪些序列化协议?说一下 Hessian 的数据结构?PB 知道吗?为什么 PB 的效率是最高的?
- Dubbo 负载均衡策略和集群容错策略都有哪些?动态代理策略呢?
- 为什么需要服务治理?如何基于 Dubbo 进行服务治理、服务降级、失败重试以及超时重试?
- 分布式服务接口的幂等性如何设计(比如不能重复扣款)?
- 分布式服务接口请求的顺序性如何保证?
- 如何自己设计一个类似 Dubbo 的 RPC 框架?
- Dubbo特性?
- Dubbo SPI 和 Java SPI 区别?
- Dubbo 用到哪些设计模式?
- 为什么要进行系统拆分?如何进行系统拆分?拆分后不用 Dubbo 可以吗?
Zookeeper
- Zookeeper底层原理?
- 选举机制?
- Zookeeper脑裂问题?
- Zookeeper假死问题?
- Zookeeper分布式锁?
- Zookeeper客户端与集群问题?
- ZooKeeper典型使用场景?
SpringCould
- 什么是微服务?
- 常用组件底层实现?
- 服务发现组件 Eureka 的主要调用过程?Eureka 和 Zookeeper 都可以提供服务注册与发现的功能,它们有什么区别?
- 什么是熔断?什么是服务降级?
- 熔断框架如何做技术选型?选用 Sentinel 还是 Hystrix?
- 如何限流?在工作中是怎么做的?说一下具体的实现?
- Spring Boot 和 Spring Cloud,谈谈你对它们的理解?
- Spring Cloud 和 Dubbo 有哪些区别?
设计模式
设计模式
- 23种设计模式有哪些?
- 讲讲你熟悉的几个设计模式底层实现原理?
缓存
Redis
- 单线程模型?
- Redis 的持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的?
- Redis 集群模式的工作原理能说一下么?在集群模式下,Redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?如何动态增加和删除一个节点?
- Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务的 CAS 方案吗?
- 生产环境中的 Redis 是怎么部署的?
- 数据类型的应用场景?
- 数据类型的底层数据结构sds?
- 一致性hash?
- 布隆过滤器?
- 数据同步问题(双删策略)?
- 击穿、穿透、雪崩、数据一致性?
- 高并发下的redis分布式锁?
- 热点数据缓存问题?
- 哨兵机制,集群架构?
- 生产环境性能优化?
- Redis 的过期策略都有哪些?手写一下 LRU 代码实现?
- 如何保证 Redis 高并发、高可用?Redis 的主从复制原理能介绍一下么?Redis 的哨兵原理能介绍一下么?
- Redis 主从架构是怎样的?
多线程
多线程
- 线程池实现原理?
- 线程池七大核心参数?
- 线程池如何合理的配置核心线程数?
- 线程池拒绝策略?
- JUC并发包?
- ThreadLocal的使用场景和原理?
- 线程的生命周期,什么时候会出现僵死进程?
分布式事务
分布式事务
- CAP理论?
- BASE理论?
- 两阶段提交(2PC)?
- 三阶段提交(3PC)?
- 补偿事务(TCC)?
- 本地消息表(异步确保)?
- MQ 事务消息?
- 最大努力通知?
- TCC 如果出现网络连不通怎么办?XA 的一致性如何保证?
分布式会话
- 集群部署时的分布式 Session 如何实现?
数据库
数据库
- 数据库事务隔离级别?
- 四大属性底层实现原理?
- 传播行为?
- 悲观锁、乐观锁、排它锁、共享锁、表级锁、行级锁,死锁检测?
- 索引数据结构?
- 主从问题?
- SQL的整个解析、执行过程原理、SQL行转列?
- 如何优化SQL?
读写分离
- 如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?
分库分表
- 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?
- 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
- 如何设计可以动态扩容缩容的分库分表方案?
- 分库分表之后,id 主键如何处理?
JVM
JVM
- JVM算法?
- 垃圾收集器?
- 垃圾回收机制?
- JMM和JVM内存模型?
- JVM调优?
- 双亲委派机制?
- 堆溢出,栈溢出,方法区溢出?
- 你都有哪些手段用来排查内存溢出??
- 常见的JVM调优方法有哪些?可以具体到调整哪个参数,调成什么值??
- 各种oom的种类?
锁
锁
- 公平锁,非公平锁?
- 可重入锁,递归锁?
- 自旋锁?
- 读写锁?
- 死锁?
- 分布式锁?
- AQS实现原理?
- Synchronized是如何从轻量级锁到重量级锁?
消息中间件
消息中间件
- 为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?
- 如何保证消息队列的高可用?消息丢失?
- 如何保证消息不被重复消费?(如何保证消息消费的幂等性)
- 如何保证消息的可靠性传输?(如何处理消息丢失的问题)
- 如何保证消息的顺序性?
- 如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
- 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。
搜索引擎
搜索引擎
- ES 的分布式架构原理能说一下么(ES 是如何实现分布式的啊)?
- ES 写入数据的工作原理是什么啊?ES 查询数据的工作原理是什么啊?底层的 Lucene 介绍一下呗?倒排索引了解吗?
- ES 在数据量很大的情况下(数十亿级别)如何提高查询效率啊?
- ES 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?
海量数据处理
海量数据处理
- 如何从大量的 URL 中找出相同的URL?
- 如何从大量数据中找出高频词?
- 如何找出某一天访问百度网站最多的IP?
- 如何在大量的数据中找出不重复的整数?
- 如何在大量的数据中判断一个数是否存在?
- 如何查询最热门的查询串?
- 如何统计不同电话号码的个数?
- 如何从 5 亿个数中找出中位数?
- 如何按照 query 的频度排序?
- 如何找出排名前 500 的数?
解决问题的能力
解决问题的能力
- Linux常用命令,生产环境服务器变慢诊断,线上排查,性能评估?
- 如何快速定位一个项目跑的慢的原因在哪?
网络
网络
- http,tcp,https,udp,7层网络协议?负载均衡算法
Netty
Netty
- bio,nio ,aio
- 零拷贝?
- 核心组件?
- I/O 多路复用(epoll)?
- netty架构设计怎么样子的?
功能模块
功能模块
- 幂等性实现
- 单点登录
- 金额篡改问题
- 秒杀场景设计
- 库存超卖问题
更多推荐
【Java面试】:第三章:P6级面试
发布评论