大数据篇导航
面试官问你学习新的技术或者新的开发语言你会如何去学习,如何回答才能显得比较专业呢?
数据库
- Mybatis:
- Mysql:
- 日志:mysql里面的日志 mysql在linux服务器日志如何查看步骤(ds)
- MVCC:
-
-
- 三个工具:3个隐式字段,undo日志 , Read View
- 一、3个隐式字段:1.最近修改(修改/插入)事务 ID。2.回滚指针,指向这条记录的上一个版本。3.隐含的自增 ID
- 二、Read View 主要是用来做可见性判断的, 即当我们某个事务执行快照读的时候,对该记录创建一个 Read View 读视图,把它比作条件用来判断当前事务能够看到哪个版本的数据,既可能是当前最新的数据,也有可能是该行记录的undo log里面的某个版本的数据。记录并维护系统当前活跃事务的 ID (当每个事务开启时,都会被分配一个 ID , 这个 ID 是递增的,所以最新的事务,ID 值越大)
- 三、undolog回滚日志
- 总结来说,可见性的三个判断约束了一件事,只有在本事务生成
Read View之前就已经提交的事务的修改才可以被看见,其他的无论是正在进行的事务的修改还是之后再提交的事务的修改都不可见。
-
- 分库分表:
- Mycat:
- Sharding:
- 3.ShardingSphere官方文档
- Sharding分库分表数据数据倾斜的解决方案(ds)
- shardingsphere5.1.0看源码记录
- shardingsphere整体处理流程为解析->路由->改写->执行->归并,每个流程节点的目的和作用是什么呢?
- ShardingSphere主键生成器
- shardingsphere中所有表的主键存储在一个序列表中,如何保证这个主键获取的并发性问题
- sharding在永辉导致所有广播表XA事务批量提交导致出现数据异常 :
- 因为在在批量化batch执行sql中,没有进行区分隐式事务和显示事务,导致用的都是显示事务,进而导致,只有编程式事务的情况才会被回滚,隐式的声明式事务不会回滚
- 所以我们加了判断隐式事务,相当于独立做回滚提交判断,
- sharding分库分表会出现一些sql格式不适用的情况么,并且在哪个版本中解决的?
- 故障排查与解决
- oracle和mysql的原理和性能的不同,面试如何回答 ?
- MySQL索引下推ICP是做什么的? 复合索引 (a,b):sql中a条件能用到索引,b用不到,没关系,通过a查询出来200条,用b的原始条件进行200条筛选,筛选出来20条回表查询
- mysql索引为什么选择B+树而不是跳表?:redis的zset跳表插入性能好,查询性能差但是是内存操作,没有左旋右旋的开销,使用随机函数层数高,(2000W数据,跳表24层,b+树3层)b+数每个节点都是16k数据页。mysql的b+数磁盘存储,只能选择IO次数少的(层数少的)
- MySQL8 InnoDB自适应Hash索引:mysql8.0版本自动判断数据的热点数据的访问次数,会给热点数据创建自适应hash索引,时间复杂度是O(1)
- 数据库范围不同查询都会使用索引么
- 2025年MySQL各版本差异及新功能详解
- MongoDB:
架构
什么是ddd领域驱动架构?
1. 算法架构师谈谈领域驱动设计DDD
2. 领域驱动设计DDD实战
3. 十年技术的演变,为什么会出现DDD架构
4. 核心:将技术和业务解耦:使技术依赖于业务,dao层依赖service层,具体依赖于抽象。将业务层抽象,本质还是因为业务的变化比技术慢
例子1:因为技术的变化是很大的,每次的技术大更新会导致业务代码慢慢的复杂,难以重构,阻塞业务的发展,以至于在业务面会慢慢向技术进行妥协。那我们能不能将业务面解耦,只暴露出连接技术层的接口,技术层可以随便换,但业务层始终保持不变。
例子2:传统的项目:controller依赖service依赖dao!其中dao是技术细节!service实现类中一大片import,去掉dao层,service会编译报错,这叫技术影响业务!ddd项目:controller依赖service,dao依赖service,dao层的接口定义在service层!controller和dao随便换,不会影响业务!另外还有业务模型应该单独设计成一个类,不应该在service的方法中,来计算业务数据的变动!
例子3:腾讯混元大模型,他的业务是不变的,就是用户输入问题,程序给出答案。但是技术的更新迭代很快,今天是腾讯混元,明天是deepseek,后天是xxx。如果把大模型看作为技术的话,我们就把技术面给解耦掉。
网络
- 三次握手和四次挥手:
- 图解网络:TCP三次握手背后的原理,为啥两次握手不可以?
- 图解网络:揭开TCP四次挥手背后的原理。 为啥三次握手可以,三次挥手不可以:因为客户端发送完fin,但是此刻服务端可能还在处理请求,并不能将ack和服务端的fin合二为一,所以服务端不仅要回调客户端的ack,还要重新发起一次fin请求。允许四次挥手异步,三次收同步
- Document Redirect 与 XHR Redirect区别
- 网络抖动那些场景会出现,导致MQ消息丢失
- 线上服务504,谈谈故障解决思路
- 网络粘包拆包
Linux
- 常用命令:
- arthas:
- 性能指标:
分布式事务
- 分布式事务 自编
- 2PC、3PC、分布式消息、TCC、SAGA、AT
- Saga原理(ds)
- Seata与Saga的区别(ds)
- Seata和 TCC、Saga、XA的区别是什么,优缺点,原理区别
- 【IT老齐019】阿里巴巴Seata分布式事务解决方案
前端
中间件
cat : 1.官方文档 1.CAT Client端源码解析 1. 源码解析-深入详解美团点评CAT跨语言服务监控 2. CAT学习 (超详细) 3.(基础了解)CAT分布式监控系统+demo(一) 3. (基础了解)熬夜之作:一文带你了解Cat分布式监控
skyworking:1.10分钟3个步骤集成使用SkyWalking 2. 图解 Apache SkyWalking UI 的使用 3.分布式链路追踪原理详解及SkyWalking、Zipkin介绍
sentinel:1、sentinel--核心原理篇 2.sentinel运行原理详解 3.sentinel原理篇 4. Sentinel界面简单使用教程和总结
prometheus和grafana:
- 1. 详解监控告警系统 Prometheus 与可视化工具 Grafana
- 2. Spring Boot Actuator、Prometheus、Grafana
- springboot整合Micrometer实现自定义埋点监控
- TSDB(Time Series Database)是专门针对时间序列数据优化的数据库系统,其核心特点是支持高并发写入、高效压缩存储和多维度聚合查询,广泛应用于物联网监控、金融量化分析、工业传感器数据管理等场景。
网关:
- Spring Cloud Gateway : 1. 面试官:请问WebFlux与WebMVC有什么区别? 2. 细到不能再细的 Spring Cloud Gateway 原理分析
日志:1. 快速了解常用日志技术(JCL、Slf4j、JUL、Log4j、Logback、Log4j2)
Netty:
Nacos:
xx-job:
k8s:
- 60道常见的 Kubernetes 面试题总结
- k8s组件、工作原理详解
- k8s中kube-controller-manager和kube-scheduler都能操作pod,那么区别是什么呢
- 云原生-微服务治理必备技术栈-Istio-Prometheus-Ceph-Docker-K8s-服务网格
- k8s容器、pod、node关系
- k8s是什么?Kubernetes是什么?架构是怎么样的?6分钟快速入门
- etcd是一个开源的、分布式、高可用且强一致性的键值存储系统,主要用于配置共享、服务发现、分布式协调等场景
- docker和pod的关系是什么(ds)?
ZooKeeper:
大数据
- 大数据怎么处理?Hadoop是什么?跟HDFS, Spark, Flink, Hive, Hbase是什么关系?
- Spark 和 Flink 、FlinkCDC 的概念与区别,
- Spark、flink、hive、Hadoop、Yarn、Hbase、Kylin区别,用更加让人容易理解的方式来阐述(DS)
- StarRocks数据库和Hadoop和mysql和Oracle数据库的区别是什么
- Flink
ES
MQ
- 如何保证线上MQ消息100%不丢失?
- RabbitMQ交换机类型
- 如何避免消息一直堆积在MQ服务器端
- 敖丙:《浅入浅出》-RocketMQ
- rocketMQ,rabbitMQ, kafakaMQ都是怎么解决【幂等性,重复消费】问题的(ds)
- rocketMQ,rabbitMQ, kafakaMQ都是怎么解决【顺序性】的问题的(ds)
- rocketMQ,rabbitMQ, kafakaMQ的特性区别,功能点上的区别,优缺点总结(ds)
- rocketMQ,rabbitMQ, kafakaMQ的集群选举策略上的区别?
- rocketMQ,rabbitMQ, kafakaMQ的高可用性如何保证(ds)
- RocketMQ 和 Kafka 的 持久化区 别是什么(ds)?
- rocketMQ,rabbitMQ, kafakaMQ核心架构与组件区别,架构组件层级关系(ds) 核心架构图 链接🔗
- mq挂掉解决方案
- kafka消息消费者消息丢失原因:自动提交offset,发生重平衡,offset没有及时更新上去,我又用原来offset消费了一遍原来的消息。这时重平衡好了,offset发生并发直接+2,+1的那条我就消费不了了,丢失了
Redis
- 源码底层原理:
- redis的api选取
- redis如何保证可用性?
- redis锁:
- Redisson:
- 看门狗:
- 一文搞懂Redisson的看门狗机制底层实现 TimerTask有一个响应式编程的run方法,任务获取锁之后设置一个延迟任务,判断方法是否执行完,没执行完每10s钟刷新一次过期时间。默认只续期3次,还可以设置一个总过期时间,比如30s,到了总过期时间就不续期了。中间可以使用luna脚本实现。Redisson 的看门狗延迟任务(基于
TimerTask)主要依赖 时间轮(HashedWheelTimer)实现。 TimerTask另一种实现和 Redis 延迟队列 ,一般用于订单超时。 - redisson看门狗延迟任务TimerTask,内部原理是什么?
- 一文搞懂Redisson的看门狗机制底层实现 TimerTask有一个响应式编程的run方法,任务获取锁之后设置一个延迟任务,判断方法是否执行完,没执行完每10s钟刷新一次过期时间。默认只续期3次,还可以设置一个总过期时间,比如30s,到了总过期时间就不续期了。中间可以使用luna脚本实现。Redisson 的看门狗延迟任务(基于
- redission 分布式锁的原理是什么?
- Redisson源码解析
- redisson分布式锁组合spring事务解决锁被释放但事务还未被提交的问题 最简单的是事务注解的执行过程再套一层方法,只用trscansion修饰。
- 看门狗:
- 布隆过滤器:
- 是否有使用布隆过滤器判断不存在,实际数据库存在的情况?
- 布隆过滤器原理和源码分析+若依框架中使用布隆过滤器判断注册用户名是否存在 - 如何保持mysql和redis中数据的一致性?
- redis挂掉解决方案
- redis的哈希槽为什么要设置为固定的16384 (2的14次方) 个?
- 【redis】一致性hash算法和hash槽一致性哈希(hash)算法
RPC远程
- dubbo底层原理
- Dubbo 课题(一)基础知识和架构讲解
- dubbo官方中文文档
- 唯一性:1.dubbo解决幂等性问题(ds) 2.Dubbo消费消息的唯一性
- Dubbo消费者动态参数报文上加字段唯一ID,通用性的解决方案,解决幂等性问题
sso
- Spring Security:我对spring fliter 中的某个拦截器节点做了代理或拓展,将这一个拦截器节点拓展成一个拦截器链,中间的每个增强过滤器节点都是一套spring Security结构
- OAuth 2.0:
- Shiro:
- 限流算法:
- 该如何设计你的 PasswordEncoder?
算法/数据结构
- raft简单回答
- 共识算法介绍与分析(PoW、PBFT、Paxos、Raft)
- 分布式一致性(共识)算法(Paxos,raft,ZAB)的一些总结
- 十大排序算法动图图解及Java代码实现
- 递归算法深入浅出一:递归理论概述和常见递归算法罗列
- B+树真的不难,楼下菜大爷都能学得会的B+树
- 十大排序算法动图图解及Java代码实现
- 要在n个数里找1到多个数的和为m,你会怎么写?
- 实际场景:

浙公网安备 33010602011771号