Documentation
This is a 8Gu of the theme’s documentation layout.
Summary
新增面试题
【📮📮📮必读📮📮📮】
- To读者&交流群
- 更新 Timeline 202303 202304
- 更新 Timeline 202305 202306
- 更新 Timeline 202307
- 更新 Timeline 202308
- 更新 Timeline 202309
- 更新 Timeline 202310
- 更新 Timeline 202311
- 更新 Timeline 202312
- 更新 Timeline 202401
- 更新 Timeline 202402
- 更新 Timeline 202403
- 更新 Timeline 202404
- 更新 Timeline 202405
- 更新 Timeline 202406
- 更新 Timeline 202407
- 更新 Timeline 202408
- 更新 Timeline 202409
- 更新 Timeline 202410
- 更新 Timeline 202411
- 更新 Timeline 202412
- 更新 Timeline 202501
- 更新 Timeline 202502
- 更新 Timeline 202503
- 更新 Timeline 202504
- 更新 Timeline 202505
- 更新 Timeline 202506
- 更新 Timeline 202507
- 更新 Timeline 202508
- 更新 Timeline 202509
- 我该看哪些东西?
- 更新 Timeline 202509 副本
- 项目实战课介绍&老用户福利
- 📮📮📮必读📮📮📮
【AI&大模型】
- Deep Seek为什么训练成本低?
- 了解 Spring Ai吗,他都能干什么?
- 什么是 Function Calling?
- 什么是 MC P?
- 什么是大模型的微调,和预训练有什么区别?
- 你平时用过哪些 Ai工具?
- 大模型产生幻觉的原因,如何解决?
- 大模型擅长做什么,不擅长做什么?
- 如何看待 Deep Seek,他能爆火的主要原因是什么?
- 对 Rag了解吗?谈谈什么是 Rag?
- 怎么理解大模型?
【DDD】
【Dubbo】
- Dubbo 支持哪些服务治理?
- Dubbo如何实现像本地方法一样调用远程方法的?
- Dubbo支持哪些序列化方式?
- Dubbo支持哪些调用协议?
- Dubbo支持哪些负载均衡策略?
- Dubbo服务发现与路由的概念有什么不同?
- Dubbo的 Spi和 Jdk的 Spi有什么区别?
- Dubbo的整体架构是怎么样的?
- Dubbo的服务调用的过程是什么样的?
- Dubbo的缓存机制了解吗?
- 为什么 Dubbo不用 Jdk的 Spi?
- 为什么 Rpc要比 Http更快一些?
- 什么场景只能用 Http,不能用 Rpc?
- 什么是 Dubbo的优雅停机,怎么实现的?
- 什么是 Rpc,和 Http有什么区别?
- 什么是泛化调用?
- 有用过 Dubbo的异步调用吗?
【ElasticSearch】
- Elastic Search为什么快?
- Elasticsearch支持事务吗?为什么?
- Es 不支持 Decimal,如何避免丢失精度?
- Es 支持乐观锁吗?如何实现的?
- Es支持哪些数据类型,和 My Sql之间的映射关系是怎么样的?
- 为什么要使用 Elastic Search?和传统关系数据库(如 My Sql)有什么不同?
- 什么是 Elastic Search的深度分页问题?如何解决?
- 倒排索引是什么?
- 如何优化 Elastic Search 搜索性能?
- 如何保证 Es和数据库的数据一致性?
【IDEA】
【Java基础】
- Arrays.sort是使用什么排序算法实现的?
- Big Decimal(double)和 Big Decimal( String)有什么区别?
- Big Decimal和 Long表示金额哪个更合适,怎么选择?
- Char能存储中文吗?
- Class Not Found Exception和 No Class Def Found Error的区别是什么?
- Finally中代码一定会执行吗?
- Final、finally、finalize有什么区别
- Integer a 1000, Integer B 1000, 是什么结果,如果是100呢?
- Java中 Timer实现定时调度的原理是什么?
- Java中创建对象有哪些种方式
- Java中异常分哪两类,有什么区别?
- Java中有了基本类型为什么还需要包装类?
- Java中的static都能用来修饰什么?
- Java中的枚举有什么特点和好处
- Java和 C 主要区别有哪些?各有哪些优缺点?
- Java序列化的原理是啥
- Java是值传递还是引用传递?
- Java注解的作用是啥
- Java的动态代理如何实现?
- Jdk 9中对字符串的拼接做了什么优化?
- Jdk新版本中都有哪些新特性?
- Lambda表达式是如何实现的?
- Rpc接口返回中,使用基本类型还是包装类?
- Serial Version Uid 有何用途 如果没定义会有什么问题?
- Simple Date Format是线程安全的吗?使用时应该注意什么?
- Stream的并行流一定比串行流更快吗?
- String a Ab ; String B a B ; a B 吗?
- String Str New String( Hollis )创建了几个对象?
- String、 String Builder和 String Buffer的区别?
- String中intern的原理是什么?
- String为什么设计成不可变的?
- String是如何实现不可变的?
- String有长度限制吗?是多少?
- Try中return A,catch中return B,finally中return C,最终返回值是什么?
- While(true)和for(;;)哪个性能好?
- 为什么 Java不支持多继承?
- 为什么 Java中的main方法必须是public Static Void的?
- 为什么 Jdk 9中把 String的char[]改成了byte[]?
- 为什么不建议使用异常控制业务流程
- 为什么不能用 Big Decimal的equals方法做等值比较?
- 为什么不能用浮点数表示金额?
- 为什么对 Java中的负数取绝对值结果不一定是正数?
- 为什么建议多用组合少用继承?
- 为什么建议自定义一个无参构造函数
- 为什么这段代码在 Jdk不同版本中结果不同
- 什么是 Aio、 Bio和 Nio?
- 什么是 Spi,和 Api有啥区别
- 什么是 Uuid,能保证唯一吗?
- 什么是反射机制?为什么反射慢?
- 什么是序列化与反序列化
- 什么是泛型?有什么好处?
- 什么是深拷贝和浅拷贝?
- 什么是类型擦除?
- 以下关于异常处理的代码有哪些问题
- 你知道fastjson的反序列化漏洞吗
- 反射与封装是否矛盾?如何解决反射破坏封装不安全的问题?
- 如何理解 Java中的多态?
- 如何理解面向对象和面向过程?
- 字符串常量是什么时候进入到字符串常量池的?
- 常见的字符编码有哪些?有什么区别?
- 怎么修改一个类中的private修饰的 String参数的值
- 接口和抽象类的区别,如何选择?
- 有了equals为啥需要hash Code方法?
- 泛型中 K T v E ? Object等分别代表什么含义。
- 泛型中上下界限定符extends 和 Super有什么区别?
- 现在 Jdk的最新版本是什么?
- 说几个常见的语法糖?
【Java并发】
- Aqs为什么采用双向链表?
- Aqs是如何实现线程的等待和唤醒的?
- Aqs的同步队列和条件队列原理?
- Cas一定有自旋吗?
- Cas在操作系统层面是如何保证原子性的?
- Completable Future的底层是如何实现的?
- Count Down Latch、 Cyclic Barrier、 Semaphore区别?
- Fork Join Pool和 Thread Pool Executor区别是什么?
- Happens Before和as if Serial有啥区别和联系?
- Int a 1 是原子性操作吗
- Java中有哪些锁
- Java是如何判断一个线程是否存活的?
- Java线程出现异常,进程为啥不会退出?
- Jdk21 中的虚拟线程是怎么回事?
- Jdk25的 Scoped Value是什么?为什么可以替代 Thread Local?
- Long Adder和 Atomic Long的区别?
- Run Start、wait Sleep、notify Notify All区别
- Sychronized是非公平锁吗,那么是如何体现的?
- Synchronized 的锁能降级吗?
- Synchronized和reentrant Lock区别?
- Synchronized是如何保证原子性、可见性、有序性的?
- Synchronized是怎么实现的?
- Synchronized的重量级锁很慢,为什么还需要重量级锁?
- Synchronized的锁优化是怎样的?
- Synchronized的锁升级过程是怎样的?
- Synchronized锁的是什么?
- Thread.sleep(0)的作用是什么?
- Thread Local为什么会导致内存泄漏?如何解决的?
- Thread Local的应用场景有哪些?
- Volatile是如何保证可见性和有序性的?
- Volatile能保证原子性吗?为什么?
- 三个线程分别顺序打印0 100
- 为什么 Jdk 15要废弃偏向锁?
- 为什么不建议通过 Executors构建线程池
- 为什么不能在try Catch中捕获子线程的异常
- 为什么虚拟线程不能用synchronized?
- 为什么虚拟线程不要和线程池一起用?
- 为什么虚拟线程尽量避免使用 Thread Local
- 什么是 Aqs的独占模式和共享模式?
- 什么是 Cas?存在什么问题?
- 什么是happens Before原则?
- 什么是 Java内存模型( Jmm)?
- 什么是 Thread Local,如何实现的?
- 什么是 Unsafe?
- 什么是伪共享,如何解决伪共享?
- 什么是可重入锁,怎么实现可重入锁?
- 什么是多线程中的上下文切换?
- 什么是守护线程,和普通线程有什么区别?
- 什么是并发,什么是并行?
- 什么是总线嗅探和总线风暴,和 Jmm有什么关系?
- 什么是死锁,如何解决?
- 什么是活锁,和死锁有什么区别?
- 什么是线程池,如何实现的?
- 介绍下 Juc,都有哪些工具类?
- 公平锁和非公平锁的区别?
- 创建线程有几种方式?
- 到底啥是内存屏障?到底怎么加的?
- 动态线程池的原理是什么?
- 如何保证多线程下 I 结果正确?
- 如何在 Java 中实现高效的异步编程?如何避免回调地狱?
- 如何实现主线程捕获子线程异常
- 如何实现无锁化编程?
- 如何对多线程进行编排
- 如何理解 Aqs?
- 如何让 Java的线程池顺序执行任务?
- 并发编程中的原子性和数据库 Acid的原子性一样吗?
- 有三个线程 T1, T2, T3如何保证顺序执行?
- 有了 Cas为啥还需要volatile?
- 有了 Inheritable Thread Local为啥还需要 Transmittable Thread Local?
- 有了 Mesi为啥还需要 Jmm?
- 有了synchronized为什么还需要volatile
- 有哪些实现线程安全的方案
- 父子线程之间怎么共享 传递数据?
- 线程同步的方式有哪些?
- 线程数设定成多少更合适?
- 线程是如何被调度的?
- 线程有几种状态,状态之间的流转是怎样的?
- 线程池中使用 Thread Local会有哪些潜在风险?
- 线程池的拒绝策略有哪些?
- 能不能谈谈你对线程安全的理解?
【JVM】
- Full Gc多久一次算正常?
- G1和 Cms有什么区别?
- Java 8 和 Java 11 的 Gc有什么区别?
- Java一定就是平台无关的吗?
- Java中的对象一定在堆上分配内存吗?
- Java中的类什么时候会被加载?
- Java中类加载的过程是怎么样的?
- Java发生了 Oom一定会导致 Jvm 退出吗?
- Java是如何实现的平台无关?
- Java是编译型还是解释型
- Java的堆是如何分代的?为什么分代?
- Jdk 11中新出的 Zgc有什么特点?
- Jdk1.8和1.9中类加载器有哪些不同
- Jvm 中一次完整的 Gc 流程是怎样的?
- Jvm为什么要把堆和栈区分出来呢?
- Jvm如何保证给对象分配内存过程的线程安全?
- Jvm如何判断对象是否存活?
- Jvm是如何创建对象的?
- Jvm有哪些垃圾回收算法?
- Jvm的运行时内存区域是怎样的?
- Out of Memory和 Stack Overflow的区别是什么
- Young Gc和 Full Gc的触发条件是什么?
- Zgc和 Cms和 G1的区别对比
- 一个 Java进程占用的内存都哪些部分?
- 一个对象的结构是什么样的?
- 为什么 G1从 Jdk 9之后成为默认的垃圾回收器?
- 为什么 Jdk 1.8要废弃永久代,改用元空间
- 为什么初始标记和重新标记需要 Stw,而并发标记不需要?
- 什么情况会导致 Jvm退出?
- 什么是 Aot编译?和 Jit有啥区别?
- 什么是 Class常量池,和运行时常量池关系是什么?
- 什么是safe Point,有啥用?
- 什么是 Stop the World?
- 什么是 Stw?有什么影响?
- 什么是三色标记算法?
- 什么是双亲委派?如何破坏?
- 什么是堆外内存?如何使用堆外内存?
- 什么是强引用、软引用、弱引用和虚引用?
- 什么是方法区?是如何实现的?
- 什么是编译和反编译?
- 什么是跨代引用,有什么问题?
- 什么是逃逸分析?
- 介绍下 Cms的垃圾回收过程
- 元空间满了(或溢出),可能是什么原因?
- 内存泄漏和内存溢出的区别是什么?
- 哪些语言有 Gc机制
- 如何判断 Jvm中类和其他类是不是同一个类?
- 字符串常量池是如何实现的?
- 对 Jdk进程执行kill 9有什么影响?
- 常见的 Jvm调优工具有哪些
- 新生代和老年代的 Gc算法
- 新生代和老年代的垃圾回收器有何区别?
- 新生代如果只有一个 Eden 一个 Survivor可以吗?
- 有哪些常用的 Jvm启动参数?
- 破坏双亲委派之后,能重写 String类吗?
- 简单介绍一下 Jit优化技术?
- 类的生命周期是怎么样的?
- 虚拟机中的堆一定是线程共享的吗?
- 说一说 Jvm的并发回收和并行回收
- 运行时常量池和字符串常量池的关系是什么?
- 项目中如何选择垃圾回收器?为啥选择这个?
【Kafka】
- Kafka 中的 Offset是什么?
- Kafka 为什么有 Topic 还要用 Partition
- Kafka 为什么这么快?
- Kafka 几种选举过程简单介绍一下?
- Kafka 消息的发送过程简单介绍一下?
- Kafka 高水位了解过吗?为什么 Kafka 需要 Leader Epoch?
- Kafka、 Active Mq、 Rabbit Mq和 Rocket Mq都有哪些区别?
- Kafka为什么依赖 Zookeeper,有什么用?
- Kafka如何保证消息不丢失?
- Kafka如何实现批量消费?
- Kafka如何实现顺序消费?
- Kafka如果丢消息了,可能的原因是什么?
- Kafka怎么保证消费只消费一次的
- Kafka支持事务消息吗?如何实现的?
- Kafka的批量消费如何确保消息不丢?
- Kafka的架构是怎么样的?
- Kafka的消费者数量和分区数量可以不同吗?会发生什么?
- Mq的重平衡会带来哪些问题?
- 为什么 Kafka没办法100%保证消息不丢失?
- 为什么要使用消息队列?
- 什么是 Kafka的渐进式重平衡?
- 什么是 Kafka的重平衡机制?
- 介绍一下 Kafka的 Isr机制?
- 介绍下 Kafka的数据存储结构?
【Maven&Git】
- Git和 Svn有什么区别?
- Git如何回滚代码?reset和revert什么区别?
- Git的merge和rebase有什么区别?
- Jar包和war包有什么区别?
- Maven如何解决jar包冲突的问题?
- Maven能解决什么问题?为什么要用?
- 什么是fat Jar?
【MyBatis】
- #和 的区别是什么?什么情况必须用
- My Batis Plus有什么用?
- My Batis Plus的分页原理是什么?
- Mybatis 是否支持延迟加载?实现原理是什么?
- My Batis与 Hibernate有何不同?
- Mybatis可以实现动态 Sql么?
- Mybatis插件的运行原理?
- Mybatis是如何实现字段映射的?
- Mybatis用的什么连接池?
- Mybatis的优点有哪些?
- Mybatis的工作原理?
- Mybatis的缓存机制
- Page Helper分页的原理是什么?
- Row Bounds分页的原理是什么?
- 什么是 Orm,有哪些常用框架?
- 使用 My Batis如何实现分页?
【MySQL】
- A, B, C的联合索引,按照 Ab, Ac, Bc查询,能走索引吗?
- A,b两个单独索引,where a Xx and B Xx 走哪个索引?为什么?
- A,b都有索引,select From Table Where a Xx Order by B。走哪个索引?
- Binlog、redolog和undolog区别?
- Buffer Pool的读写过程是怎么样的?
- Char和varchar的区别?
- Count(1)、count( ) 与 Count(列名) 的区别
- Exists和in有什么区别?如何选择?
- Inno Db中的索引类型?
- Inno Db中的表级锁、页级锁、行级锁?
- Inno Db为什么使用 B 树实现索引?
- Innodb加索引,这个时候会锁表吗?
- Inno Db和 My Isam有什么区别?
- Inno Db如何解决脏读、不可重复读和幻读的?
- Inno Db支持哪几种行格式?
- Innodb的 Rr到底有没有解决幻读?
- Inno Db的一次更新事务过程是怎么样的?
- Limit 0,100和limit 10000000,100一样吗?
- Limit的原理是什么?
- My Isam 的索引结构是怎么样的,它存在的问题是什么?
- My SQL 5.x和8.0有什么区别?
- My SQL 中如何查看一个 SQL 的执行耗时
- My SQL 为什么是小表驱动大表,为什么能提高查询性能?
- My SQL 的 Select 会用到事务吗?
- My SQL 获取主键 ID 的瓶颈在哪里?如何优化?
- My Sql中like的模糊查询如何优化
- My Sql中的事务隔离级别?
- My Sql为什么会有存储(内存)碎片?有什么危害?
- My Sql主从复制的过程
- My Sql事务 Acid是如何实现的?
- My Sql做索引更新的时候,会锁表吗?
- My Sql只操作同一条记录,也会发生死锁吗?
- My Sql如何实现不同隔离级别?
- My Sql如何实现行转列和列转行?
- My Sql建了abc的联合索引,底层会建a,ab, Abc这3个索引么?
- My Sql怎么做热点数据高效更新?
- My Sql执行大事务会存在什么问题?
- My Sql是 Ap的还是 Cp的系统?
- My Sql是如何保证唯一性索引的唯一性的?
- My Sql用了函数一定会索引失效吗?
- My Sql的binlog有几种格式
- My Sql的 Blob和 Text有什么区别
- My Sql的 Hash Join是什么?
- My Sql的limit Order By为什么会数据重复?
- My Sql的update语句什么时候锁行什么时候锁表
- My Sql的主键一定是自增的吗?
- My Sql的优化器的索引成本是怎么算出来的?
- My Sql的并行复制原理
- My Sql的数据存储一定是基于硬盘的吗?
- My Sql的深度分页如何优化
- My Sql的行级锁锁的到底是什么?
- My Sql的驱动表是什么? My Sql怎么选的?
- My Sql索引一定遵循最左前缀匹配吗?
- My Sql能保证数据100%不丢吗?
- My Sql自增主键用完了会怎么样?
- On和where有什么区别?
- Order by 是怎么实现的?
- Sql中 Pk、 Uk、 Ck、 Fk、 Df是什么意思?
- Sql执行计划分析的时候,要关注哪些信息?
- Sql语句如何实现insert or Update的功能?
- Truncate、delete、drop的区别?
- Undolog会一直存在吗?什么时候删除?
- Using Filesort 能优化吗,怎么优化?
- Uuid和自增id做主键哪个好,为什么?
- Varchar(100)和varchar(10)有什么区别?
- Where条件的顺序影响使用索引吗?
- 一个查询语句的执行顺序是怎么样的?
- 一次insert操作, My Sql的几种log的写入顺序?
- 为什么 My SQL 8.0要取消查询缓存?
- 为什么 My Sql会选错索引,如何解决?
- 为什么 My Sql默认使用 Rr隔离级别?
- 为什么不建议使用存储过程?
- 为什么不推荐使用外键?
- 为什么大厂不建议使用多表join?
- 为什么要尽量避免使用select ?
- 为什么默认 Rr,大厂要改成 Rc?
- 为啥 Like %Xx不走索引?like Xx%xxx走索引吗?为啥?
- 乐观锁与悲观锁如何实现?
- 二级索引在索引覆盖时如何使用 Mvcc?
- 什么情况会导致自增主键不连续?
- 什么时候索引失效反而提升效率?
- 什么是buffer Pool?
- 什么是 Inno Db的页分裂和页合并
- 什么是 My Sql的内存碎片?如何清理?
- 什么是 My Sql的字典锁?
- 什么是 Online Ddl
- 什么是 Read View,什么样的 Read View可见?
- 什么是事务的2阶段提交?
- 什么是前缀索引,使用的时候要注意什么?
- 什么是回表,怎么减少回表的次数?
- 什么是意向锁?
- 什么是排他锁和共享锁?
- 什么是数据库事务机制?
- 什么是数据库的主从延迟,如何解决?
- 什么是数据库的锁升级, Innodb 支持吗?
- 什么是数据库范式,为什么要反范式?
- 什么是最左前缀匹配?为什么要遵守?
- 什么是索引合并,原理是什么?
- 什么是索引覆盖、索引下推?
- 什么是索引跳跃扫描
- 什么是聚簇索引和非聚簇索引?
- 什么是脏读、幻读、不可重复读?
- 介绍一下 Inno Db的数据页,和 B 树的关系是什么?
- 介绍下 Inno Db的锁机制?
- 介绍下 My SQL 5.7中的组提交
- 从 Innodb 的索引结构分析,为什么索引的 Key 长度不能太长
- 区分度不高的字段建索引一定没用吗?
- 唯一索引和主键索引的区别?
- 如何优化一个大规模的数据库系统?
- 如何理解 Mvcc?
- 如何进行 Sql调优?
- 如果 Sql中一定要有join,该如何优化?
- 当前读和快照读有什么区别?
- 怎么比较两个索引的好坏?
- 慢 Sql的问题如何排查?
- 执行计划中的filtered的值有啥用?
- 执行计划中,key有值,还是很慢怎么办?
- 数据库乐观锁的过程中,完全没有加任何锁吗?
- 数据库加密后怎么做模糊查询?
- 数据库怎么做加密和解密?
- 数据库扫表任务如何避免出现死循环
- 数据库死锁如何解决?
- 是否支持emoji表情存储,如果不支持,如何操作?
- 有了关系型数据库,为什么还需要 Nosql?
- 用了索引还是很慢,可能是什么原因?
- 索引失效的问题如何排查?
- 联合索引是越多越好吗?
- 表中只有a,b,c 三个字段,比较select 与 Select A,b,c有什么区别。
- 设计索引的时候有哪些原则(考虑哪些因素)?
- 说一说 My Sql一条 Sql语句的执行过程?
- 阿里的数据库能抗秒杀的原理
- 高并发情况下自增主键会不会重复,为什么?
【Netty】
- Netty 中用了哪些设计模式?
- Netty如何解决 Tcp粘包、拆包的问题的?
- Netty性能好的原因是什么?
- Netty有哪些序列化协议?
- Netty的 Buffer为什么好用
- Netty的线程模型是怎么样的?
- Netty的零拷贝是怎么实现的?
- 为什么 Netty适合做网络编程?
- 能不能说一说 Netty的无锁化设计?
【Oracle】
- Oracle 和 My SQL 的区别是什么?如何选择?
- Oracle 支持哪些索引类型?
- Oracle 的事务隔离级别?
- Oracle中如何实现行转列和列转行?
- Oracle为什么用 B 树索引?
- Pl SQL 是什么,为什么使用 Pl SQL 而不是 Sql?
- Rownum 和 Row Number() 的区别是什么?
- 什么是反向键索引,有什么用处?
- 什么是视图,视图的作用是什么?
- 介绍下函数索引、位图索引、空间索引?
- 阿里巴巴的去 Ioe架构中为什么废弃 Oracle
【RabbitMQ】
- Rabbit Mq 是如何保证高可用的
- Rabbit Mq如何保证消息不丢
- Rabbit Mq如何实现延迟消息?
- Rabbit Mq如何实现消费端限流
- Rabbit Mq如何防止重复消费
- Rabbit Mq是怎么做消息分发的?
- Rabbit Mq的整体架构是怎么样的?
- 什么是 Rabbit Mq的死信队列?
- 介绍下 Rabbit Mq的事务机制
- 如何保障消息一定能发送到 Rabbit Mq
【Redis】
- Rdb和 Aof的写回策略分别是什么?
- Redis 5.0中的 Stream是什么?
- Redis 8.0有哪些新特性?
- Redis Cluster 中使用事务和 Lua 有什么限制?
- Redis 与 Memcached 有什么区别?
- Redis 使用什么协议进行通信?
- Redis 支持哪几种数据类型?
- Redis 的事务机制是怎样的?
- Redis 的过期策略是怎么样的?
- Redisson 中为什么要废弃 Red Lock,该用啥?
- Redisson 的 Watchdog 什么情况下可能会失效?
- Redisson和 Jedis有啥区别?如何选择?
- Redisson如何保证解锁的线程一定是加锁的线程?
- Redisson的lock和try Lock有什么区别?
- Redisson的watchdog机制是怎么样的?
- Redisson解锁失败,watchdog会不会一直续期下去?
- Redisson里面的锁是如何实现可重入的?
- Redisson里面的锁是怎么来防止误删的?
- Redis中hash结构比string的好处有哪些?
- Redis中key过期了一定会立即删除吗
- Redis中有一批key瞬间过期,为什么其它key的读写效率会降低?
- Redis中的hash和 Java中的 Hash Map有啥区别?
- Redis中的 List Pack是如何解决级联更新问题的?
- Redis中的setnx命令为什么是原子性的
- Redis中的setnx和setex有啥区别?
- Redis中的 Zset是怎么实现的?
- Redis为什么被设计成是单线程的?
- Redis为什么要自己定义 Sds?
- Redis为什么这么快?
- Redis如何实现发布 订阅?
- Redis如何实现延迟消息?
- Redis如何高效安全的遍历所有key
- Redis实现分布锁的时候,哪些问题需要考虑?
- Redis是 Ap的还是 Cp的?
- Redis的 Key和 Value的设计原则有哪些?
- Redis的 Zip List、 Skip List和 List Pack之间有什么区别?
- Redis的事务和 Lua之间有哪些区别?
- Redis的事务和 My Sql的事务区别?
- Redis的内存淘汰策略是怎么样的?
- Redis的持久化机制是怎样的?
- Redis的虚拟内存机制是什么?
- Redis能完全保证数据不丢失吗?
- Watchdog一直续期,那客户端挂了怎么办?
- Zset为什么在数据量少的时候用 Zip List,而在数据量大的时候转成 Skip List?
- 为什么 Lua脚本可以保证原子性?
- 为什么 Redis 6.0引入了多线程?
- 为什么 Redis不支持回滚?
- 为什么 Redis设计成单线程也能这么快?
- 为什么 Zset 既能支持高效的范围查询,还能以 O(1) 复杂度获取元素权重值?
- 为什么需要延迟双删,两次删除的原因是什么?
- 了解 Redis的内存碎片吗?
- 什么情况下会出现数据库和缓存不一致的问题?
- 什么是 Geo,有什么用?
- 什么是 Redis的 Pipeline,和事务有什么区别?
- 什么是 Redis的数据分片?
- 什么是 Redis的渐进式rehash
- 什么是 Red Lock,他解决了什么问题?
- 什么是大 Key问题,如何解决?
- 什么是热 Key问题,如何解决热key问题
- 什么是缓存击穿、缓存穿透、缓存雪崩?
- 介绍一下 Redis的集群模式?
- 介绍下 Redis中的 Zip List和他的级联更新问题
- 介绍下 Redis集群的脑裂问题?
- 如何在 Redis Cluster 中执行 Lua 脚本?
- 如何基于 Redisson实现一个延迟队列
- 如何基于 Redis实现滑动窗口限流?
- 如何用 Redisson实现分布式锁?
- 如何用 Redis实现乐观锁?
- 如何用setnx实现一个可重入锁?
- 如何用 Setnx实现分布式锁?
- 如何解决 Redis和数据库的一致性问题?
- 对于 Redis 的操作,有哪些推荐的 Best Practices?
- 除了做缓存, Redis还能用来干什么?
【RocketMQ】
- Rocket Mq和 Kafka一样有重平衡的问题吗?
- Rocket Mq如何保证消息不丢失?
- Rocket Mq如何保证消息的顺序性?
- Rocket Mq如何实现延时消息?
- Rocket Mq如果丢消息了,可能的原因是什么?
- Rocket Mq如果重复消费了,可能是什么原因导致的?
- Rocket Mq怎么实现消息分发的?
- Rocket Mq有几种集群方式?
- Rocket Mq消息堆积了怎么解决?
- Rocket Mq的事务消息和 Kafka的事务消息有什么区别?
- Rocket Mq的事务消息是如何实现的?
- Rocket Mq的架构是怎么样的?
- Rocket Mq的消息是推还是拉?
- 介绍一下 Rocket Mq的工作流程?
- 介绍下 Rocket Mq 5.0中的 Pop 模式
- 普通消息、顺序消息的区别,在什么场景会用到?
- 用了 Rocket Mq一定能实现削峰的效果吗?
【Spring】
- @ Lazy注解能解决循环依赖吗?
- @ Post Construct、init Method和after Properties Set执行顺序
- Autowired和 Resource的关系?
- Bean Factory和 Factroy Bean的关系?
- Spring 6.0和 Spring Boot 3.0有什么新特性?
- Spring Bean的初始化过程是怎么样的?
- Spring Bean的生命周期是怎么样的?
- Spring Boot 如何让你的 Bean 在其他 Bean 之前加载
- Spring 中注入 Bean 有几种方式
- Spring 中的 Bean 作用域有哪些?
- Spring 中的 Bean 是线程安全的吗?
- Spring Boot和 Spring的区别是什么?
- Spring Boot和传统的双亲委派有什么不一样吗?
- Spring Boot如何做优雅停机?
- Spring Boot是如何实现main方法启动 Web项目的?
- Springboot是如何实现自动配置的?
- Spring Boot的启动流程是怎么样的?
- Spring Mvc中如何实现流式输出
- Spring Mvc是如何将不同的 Request路由到不同 Controller中的?
- Spring中@ Service 、@ Component、@ Repository等注解区别是什么?
- Spring中shutdownhook作用是什么?
- Spring中创建 Bean有几种方式
- Spring中如何实现多环境配置?
- Spring中如何开启事务?
- Spring中用到了哪些设计模式
- Spring中的事务事件如何使用?
- Spring事务失效可能是哪些原因?
- Spring在业务中常见的使用方式
- Spring的@ Autowired能用在 Map上吗?
- Spring的 Aop在什么场景下会失效?
- Spring的事务传播机制有哪些?
- Spring的事务在多线程下生效吗?为什么?
- Spring解决循环依赖一定需要三级缓存吗?
- Spring默认支持循环依赖吗?如果发生如何解决?
- 三级缓存是如何解决循环依赖的问题的?
- 为什么 Spring Boot 3中移除了spring.factories
- 为什么 Spring不建议使用基于字段的依赖注入?
- 为什么不建议直接使用 Spring的@ Async
- 什么是 Mvc
- 什么是 Spring的三级缓存
- 什么是 Spring的循环依赖问题?
- 介绍一下 Spring的 Aop
- 介绍一下 Spring的 Ioc
- 介绍下@ Scheduled的实现原理以及用法
- 同时使用 @ Transactional 与 @ Async 时,事务会不会生效?
- 在 Spring中如何使用 Spring Event做事件驱动
- 如何在 Spring启动过程中做缓存预热
- 如何根据配置动态生成 Spring的 Bean?
- 如何统计一个 Bean中的方法调用次数
- 如何自定义一个starter?
- 有什么情况会导致一个bean无法被初始化么?
- 知道 Spring Task吗,和 Xxl Job有啥区别?
【SpringCloud】
- Dubbo和 Feign有什么区别?
- Eureka 在 Spring Boot 3.x 之后被移除了,如何替代?
- Eureka和 Zookeeper有什么区别?
- Feigin 第一次调用为什么很慢?可能的原因是什么?
- Feign 和 Rest Template 有什么不同?
- Feign和 Open Feign 有什么区别?
- Feign调用超时,会自动重试吗?如何设置?
- Hystrix和 Sentinel的区别是什么?
- Hystrix熔断器的工作原理是什么?
- Load Balancer和 Ribbon的区别是什么?为什么用他替代 Ribbon?
- Open Feign 不支持了怎么办?
- Open Feign 是如何实现负载均衡的?
- Open Feign如何处理超时?如何处理异常?如何记录客户端日志?
- Ribbon和 Nginx的区别是什么?
- Ribbon是怎么做负载均衡的?
- Spring Cloud 在 Spring6.0后有哪些变化
- Spring Cloud和 Dubbo有什么区别?
- Zuul、 Gateway和 Nginx有什么区别?
- 为什么需要 Spring Cloud Gateway,他起到了什么作用?
- 什么是 Eureka的自我保护模式?
- 什么是 Spring Cloud,有哪些组件?
- 什么是 Zuul网关,有什么用?
- 介绍一下 Hystrix 的隔离策略,你用哪个?
- 介绍一下 Eureka的缓存机制
- 在 Spring Cloud 中,服务间的通信有哪些方式?
【Tomcat】
- Tomcat与 Web服务器(如 Apache)之间的关系是什么?
- Tomcat中有哪些类加载器
- Tomcat处理请求的过程是怎么样的?
- Tomcat的启动流程是怎样的?
- Tomcat的类加载机制是怎么样的?
- 为什么 Tomcat可以把线程数设置为200,而不是 N 1?
- 介绍一下 Tomcat的 Io模型?
- 过滤器和拦截器的区别是什么?
【Zookeeper】
- Zookeeper如何保证数据的一致性?
- Zookeeper是 Cp的还是 Ap的?
- Zookeeper是如何保证创建的节点是唯一的?
- Zookeeper是选举机制是怎样的?
- Zookeeper的watch机制是如何工作的?
- Zookeeper的典型应用场景有哪些?
- Zookeeper的数据结构是怎么样的?
- Zookeeper的缺点有哪些?
- Zookeeper集群中的角色有哪些?有什么区别?
- 什么是脑裂?如何解决?
- 如何用 Zookeeper实现分布式锁?
- 怎样使用 Zookeeper实现服务发现?
【云计算】
- 为什么云原生对应用的启动速度要求很高?
- 什么是 Iaa S、 Paa S、 Saa S?
- 什么是 Serverless?
- 什么是云计算?
- 什么是公有云、私有云、混合云?
- 啥是无状态,为啥说 Serverless是无状态的
【其他】
- Code Review都会关注哪些问题?
- Do、 Dto、 Vo都是干什么的?
- Javap命令的作用是什么?
- Java中的随机是真随机吗?
- Jhat有什么用,如何用他分析堆dump
- Jmap命令的作用是什么?
- Jps命令的作用是什么?
- Jstack命令的作用是什么?
- Jstat命令的作用是什么?
- Saa S系统中,多租户如何实现?
- 什么是 Java Dump,如何获取?
- 什么是 Web 3.0?
- 什么是流程引擎,请问流程引擎有什么优缺点?
- 什么是状态机,能描述一下状态机的实现原理吗?
- 什么是闰秒?
- 你平常是怎么查看日志和做分析的?
【其他专属内容】
- 2023网易技术分享
- 为啥我不建议使用@ Transactional事务
- 为啥我觉得应该谨慎使用 Lombok
- 交易主链路提供风控决策要求 Rt 5ms的技术方案
- 什么是隐私计算?
- 大厂对学历的要求是什么?
- 大厂程序员能力模型
- 阿里的简历多久可以投递一次?次数多了有没有影响?可以同时进行吗?
【分布式】
- Leaf生成分布式 Id的原理?
- Redis 分布式锁和zk分布式锁哪个对死锁友好
- Redis 的分布式锁和 Zookeeper 的分布式锁有啥区别?
- Seata的4种事务模式,各自适合的场景是什么?
- Seata的 At模式会不会出现脏读?为什么?
- Seata的 At模式和 Xa有什么区别?
- Seata的 At模式的实现原理
- Seata的实现原理是什么
- Tcc中, Confirm或者 Cancel失败了怎么办?
- Tcc是强一致性还是最终一致性?
- Tcc的空回滚和悬挂是什么?如何解决?
- 为什么不建议用数据库唯一性约束做幂等控制?
- 什么是 Canal,他的工作原理是什么?
- 什么是 Cap理论,为什么不能同时满足?
- 什么是 Oauth2?有什么用?
- 什么是 Tcc,和2 Pc有什么区别?
- 什么是一致性哈希?
- 什么是事务消息,为什么需要事务消息?
- 什么是分布式 Base理论?
- 什么是分布式事务中的三阶段提交(3 Pc)
- 什么是分布式事务中的两阶段提交(2 Pc)
- 什么是分布式事务?
- 什么是分布式数据库,有什么优势?
- 什么是分布式系统的一致性?
- 什么是分布式系统?和集群的区别?
- 什么是拜占庭将军问题
- 什么是最大努力通知?
- 什么是柔性事务?
- 什么是负载均衡,有哪些常见算法?
- 什么是雪花算法的时钟回拨问题,如何解决?
- 什么是雪花算法,怎么保证不重复的?
- 分布式 Id生成方案都有哪些?
- 分布式命名方案都有哪些?
- 分布式锁有几种实现方式?
- 如何基于 Mq实现分布式事务
- 如何基于本地消息表实现分布式事务?
- 如何实现应用中的链路追踪?
- 如何解决接口幂等的问题?
- 定时任务扫表的缺点有什么?
- 实现一个分布式锁需要考虑哪些问题?
- 常见的分布式事务有哪些?
- 怎么实现分布式 Session?
- 最大努力通知&事务消息&本地消息表三者区别是什么?
- 详细介绍下号段模式生成分布式 Id的原理和优缺点?
- 锁和分布式锁的核心区别是什么?
【分库分表】
- Sharding Jdbc 在查询的时候如果没有分表键,他怎么样?
- Sharding Jdbc有哪些分片策略,你用的哪个?
- 为啥要全局分布式 Id,每张表自增不行吗?
- 什么是分库?分表?分库分表?
- 什么是数据倾斜,会带来哪些问题?如何解决?
- 分区和分表有什么区别?
- 分库分表中,如何预估需要分多少个库?多少张表?
- 分库分表之后的怎么进行join操作
- 分库分表后会带来哪些问题?
- 分库分表后如何进行分页查询?
- 分库分表后怎么设计可以降低数据迁移的难度?
- 分库分表后,表还不够怎么办?
- 分库分表的取模算法策略如何避免数据倾斜
- 分库分表的数量为什么一般选择2的幂?
- 分表后全局 Id如何生成?
- 分表算法都有哪些?
- 在分库分表时,如果遇到了对商品名称的模糊查询,要怎么处理?
- 订单号用了基因法之后,二次分表怎么办?
【单元测试】
【场景题】
- 40亿个 Qq号,限制1 G内存,如何去重?
- 4 C8 G 16台 和 8 C16 G 8台,不考虑成本的情况怎么选?
- 4 C8 G的机器,各项系统指标,什么范围算是正常?
- 5 分钟内最多允许用户尝试登录 3 次,如果错误次数超过限制,需要对该用户进行锁定。如何实现?
- 5亿条数据放到布隆过滤器中,大概需要多大内存?如何估算?
- A,b 的联合索引,select B Where a Xx,无法走索引覆盖什么原因?
- A线程获取 Redis分布式锁,但那一刻做了主从的切换, B线程能获取到锁吗?
- Inno Db为什么不用跳表, Redis为什么不用 B 树?
- Kafka,单分区单消费者实例,如何提高吞吐量
- Mq出现消息乱序了如何解决?
- My SQL 里有 2000 W 数据, Redis 中只存 20 W 的数据,如何保证 Redis 中的数据都是热点数据
- My Sql千万级大表中如何增加字段?
- My Sql千万级大表如何做数据清理?
- My Sql千万级数据量,查询如何做优化?
- My Sql单表一千万条数据怎么做分页查询?
- My Sql如果突然断电,会发生数据丢失吗?
- My Sql热点数据更新会带来哪些问题?
- Redis 如果挂了,你怎么办?
- Redis 的内存如果用满了,会挂吗?
- Redis、 My Sql和 Mongo Db的区别是什么,各自适用场景呢?
- Redis保存库存的时候,如何避免被 Redis清理掉?
- Redis和 My Sql的一次普通查询, Rt在什么范围内是合理的?
- Redis实现分布式锁,加锁的时候,redis不可用了咋整?
- Redis的zset实现排行榜,实现分数相同按照时间顺序排序,怎么做?
- Spring Event和 Mq有什么区别?各自适用场景是什么?
- 一个接口3000 Qps,接口 Rt为200 Ms,预估需要几台机器?
- 一个支付单,多个渠道同时支付成功了怎么办?
- 一个表有用户和时间两个列,现有3个需求:根据用户查;根据日期查;根据日期和用户查;问怎么建立索引?
- 一个订单,在11 00超时关闭,但在11 00也支付成功了,怎么办?
- 一次 Rpc请求,客户端显示超时,但是服务端不超时,可能是什么原因?
- 下单支付过程,点击跳转支付,输入密码,支付完成后跳转到订单页,整个过程可能会有什么问题?架构方面做哪些设计?
- 不使用synchronized和 Lock如何设计一个线程安全的单例?
- 不用redis分布式锁, 如何防止用户重复点击?
- 不用大于号小于号怎么判断两个正整数大小?
- 两个不相关的网站 A和 B,如何实现 A登录 B也能自动登录
- 为了避免丢消息问题需要落表,如何设计这张消息表?
- 为什么 My Sql用 B 树, Mongo Db用 B树?
- 为什么一定要做限流?不应该服务好客户吗?不应该是加机器吗?
- 为什么不建议使用 Mq实现订单到期关闭?
- 为什么不用分布式锁来实现秒杀?
- 为什么不直接用原生的 Blockin Queue做消息队列
- 为什么很多公司数据库不允许物理删除(delete) 数据
- 为啥不要在事务中做外部调用?
- 什么是数据归档,一般是怎么做的?
- 从 B 树的角度分析为什么单表2000万要考虑分表??
- 代码中使用长事务,会带来哪些问题?
- 你是如何进行 Sql调优的?
- 你认为分布式架构一定比单体架构要好吗?
- 使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?
- 假设还有很多内存,有什么情况还会频繁fullgc?
- 做一个过滤黑名单网址的系统,你觉得要怎么实现,会用到哪些数据结构?
- 全国的酒店价格(千万级)需要在某个瞬间比如7点发生变动,怎样高性能准点去进行变更
- 分布式系统,用户登录信息保存在服务器 A上,服务器 B如何获取到共享 Session
- 分库分表时,每个城市的人口不一样,有的密集,有的稀疏,如何实现均匀分布?
- 加分布式锁之后影响并发了怎么办?
- 压测600没问题,上线后300就扛不住了,可能是什么原因?
- 和其他公司做数据交互时,有什么需要注意的?
- 和外部机构交互如何防止被外部服务不可用而拖垮
- 在100 M内存下存储一亿个整数,其范围在1到2亿,如何快速判断给定到一个整数值是否存在?
- 在for循环中调用数据库,有什么缺点?如何优化?
- 外卖系统,一天一千万条数据,用户需要查到近30天的数据,商家也要查询到30天的数据,怎么设计表?
- 大型电商的订单系统,如何设计分库分表方案?
- 大量的手机号码被标记成骚扰电话,如何存储这些号码
- 如何从 1 Tb 的搜索日志中找出搜索量最高的 10 个关键词?
- 如何做 Sql调优:用了主键索引反而查询很慢?
- 如何做平滑的数据迁移
- 如何实现 查找附近的人 功能?
- 如何实现一个抢红包功能?
- 如何实现敏感词过滤?
- 如何实现百万级排行榜功能?
- 如何实现百万级数据从 Excel导入到数据库?
- 如何实现缓存的预热?
- 如何用 Redis实现朋友圈点赞功能?
- 如何解决消息重复消费、重复下单等问题?
- 如何设计一个购物车功能?
- 如何预估一个系统的 Qps?
- 如果token被窃取了,是不是就能伪造登陆了?
- 如果一个接口响应时间不符合预期,怎么排查跟解决?
- 如果你的业务量突然提升100倍 Qps你会怎么做?
- 如果单表数据量大,只能考虑分库分表吗?
- 如果有1 Tb的数据需要排序,但只有32 Gb的内存如何排序处理?
- 如果要存 Ip地址,用什么数据类型比较好?
- 如果让你实现一个 Rpc框架,会考虑用哪些技术解决哪些问题?
- 如果让你实现消息队列,会考虑哪些问题?
- 如果让你实现短链服务,如何生成不重复的短链地址?
- 如果设计一个缓存,需要考虑哪些方面?
- 如果需要跨库join,该如何实现?
- 实现一个登录拉黑功能,实现拉黑用户和把已经登陆用户踢下线。
- 库存扣减、创建订单,如何拆成 Tcc?
- 库存扣减如何避免超卖和少卖?
- 应用占用内存持续增长,但是堆内存、元空间都没变化,可能是什么原因?
- 应用启动后前几分钟, Load、 Rt、 Cpu等飙高,如何定位,可能的原因是什么?
- 怎么做数据对账?
- 扫表任务,如何写 Sql可以避免出现跳页的情况?
- 把商品加入购物车时断网了,该怎么在重新联网时同步?
- 数据对账时,如果日切时间点前后的数据不一致怎么办?
- 数据库乐观锁和悲观锁以及redis分布式锁的区别和使用场景?
- 数据库逻辑删除后,怎么做唯一性约束?
- 有100个优惠券,有几千万流量,怎么保证服务器不跨掉,怎么保证最前面的人能抢到这个券?
- 有一个银行系统,对实时性要求比较高,你会怎么选择垃圾回收器?
- 有一张上百万条数据的单表,从前端页面、 Java后台、数据库三个层面做查询优化
- 服务器有多个节点,线上出现用户进入缓慢,监控服务器cpu和缓存没有什么压力,可以从哪些方面排查?
- 每天100w次登录请求,4 C8 G机器如何做 Jvm调优?
- 消息队列使用拉模式好还是推模式好?为什么?
- 用@ Scheduled执行定时任务,如何避免集群的并发问题
- 用了一锁二查三更新,为啥还出现了重复数据?
- 用了本地消息表的方案,如果下游执行失败了上游如何回滚?
- 电商下单场景,如何设计一个数据一致性方案?
- 百万级会员的用户平台,如何实现快到期的会员的消息提醒?
- 秒杀场景下,怎么加库存?
- 第三方接口不稳定经常超时,如何处理三方接口异常不影响自己接口
- 索引失效的问题是如何排查的,有哪些种情况?
- 线上接口如果响应很慢如何去排查定位问题呢?
- 给第三方提供接口调用,需要注意些什么?
- 订单到期关闭如何实现
- 让你实现一个短链服务,你会考虑哪些问题
- 让你设计一个秒杀系统,你会考虑哪些问题?
- 让你设计一个订单号生成服务,该怎么做
- 说一说多级缓存是如何应用的?
- 读取一千个文件,一个线程读取和开十个线程读取,哪种方式效率高?
- 调用第三方接口支付时,第三方接口显示支付成功,但是在调用方显示支付失败,问题可能出在哪里
- 账户里面只有十块钱,同时发来两笔订单一共大于十块钱,怎么保证不超花?
- 购物车中如何解决重复下单的问题?
- 进入电梯里断网后又恢复刚开始为什么网络慢?
- 防止接口被恶意刷流量,除了限流还应在代码层面做哪些防护?
- 阿里出的 Java开发手册看过吗,对哪条规约印象深刻?
- 项目中需要应用发布和ddl变更,需要如何保证不出错?
- 项目中,如果日志打印成为瓶颈,该如何优化?
- 高并发的库存系统,在数据库扣减库存,怎么实现?
【大厂实践】
【定时任务】
- Java中 Timer实现定时调度的原理是什么?
- Java中实现定时任务的几种方式
- Xxl Job 支持分片任务吗?实现原理是什么?
- Xxl Job如何保证一任务只会触发一次?
- 为什么定时任务可以定时执行?
- 什么是时间轮?
- 定时任务扫表的方案有什么缺点?
- 实现一个定时任务,可以用什么数据结构及算法?
- 知道 Map Reduce动态分片任务吗?好处是什么?原理是什么?
- 知道 Power Job吗,他和 Xxl Job有啥区别?
【容器】
- Docker 的常用命令有哪些?
- Dockerfile 是什么?它通常包含哪些指令?
- 为什么要使用 Docker?
- 什么是 Docker Compose?
- 容器和虚拟机的区别是什么?
- 有了 Docker为啥还需要k8s
【微服务】
- Soa和微服务之间的主要区别是什么?
- 什么是 Dev Ops?
- 什么是康威定律?
- 什么是微服务架构?优势?特点?
- 什么是微服务的循环依赖?
- 分布式和微服务的区别是什么?
- 各个微服务之间,有哪些调用方式?
- 听说过 Service Mesh吗?是什么?
- 如何进行微服务的拆分?
- 微服务中的 Ci Cd了解吗?
- 微服务架构的服务治理有哪些实现方案?
- 灰度发布、蓝绿部署、金丝雀部署都是什么?
- 限流、降级、熔断有什么区别?
【操作系统】
- Gpu和 Cpu区别?为什么挖矿、大模型都用 Gpu?
- Io多路复用和多线程有什么区别?
- Linux下rm正在写入的文件会发生什么?
- Write和fsync的区别是什么?
- 为什么按位与运算要比取模运算高效?
- 什么是 Io 密集,什么是 CPU 密集?
- 什么是 Cpu利用率?怎么算的?
- 什么是 Load(负载)?
- 什么是 Mesi缓存一致性协议
- 什么是 Page Cache,他的读写过程是怎么样的?有什么优缺点?
- 什么是“孤儿进程”,什么是“僵尸进程”?
- 什么是全双工和半双工
- 什么是分段和分页?
- 什么是操作系统的多级缓存
- 什么是时间片
- 什么是用户态、内核态?如何切换的?
- 什么是零拷贝?
- 你掌握哪些 Linux常用命令?
- 同步、异步、阻塞、非阻塞怎么理解?
- 如何理解select、poll、epoll?
- 常见的进程调度算法有哪些?
- 操作系统的 Io模型有哪些?
- 正在持续写入的日志如何清理?
- 线程的实现方式有哪些?
- 给你一个文本文件,每一行包含一个 Qq号码,请用linux命令进行去重?
- 计算机打开电源操作系统做了什么
- 负载( Load)和 Cpu利用率之间有什么区别?
- 软链接和硬链接的区别?
- 进程间通信方式有哪些?
- 进程,线程和协程的区别
【数据结构】
- 二叉树的遍历有几种方式?
- 什么是 B 树,和 B树有什么区别?
- 什么是 Bit Map?有什么用?
- 什么是前缀树,有什么作用?
- 什么是图?有向图和无向图的区别是什么?
- 什么是堆?什么情况下要用堆?
- 什么是小顶堆,可以用在哪些场景?
- 什么是树?了解哪些树结构?
- 什么是红黑树?
- 数组和链表有何区别?
- 栈和队列的区别
- 海量数据查找最大的 K 个值,用什么数据结构?
【文件处理】
【日志】
- 为什么logger.warn()之前要使用logger.is Warn Enabled()?
- 为什么不能直接使用 Log4j、 Logback中的 Api?
- 什么是分布式日志系统?
- 记录日志影响性能怎么办?
【智商题】
- 1000瓶药水,1瓶有毒药,最少需要几只小白鼠一定能够找出?
- 一个天平,7g和2g砝码各一个,将140g盐分成90g和50g,需要称多少次?
- 假设你有一个乒乓球盒子,里面有 3 个白球和 2 个黑球。从盒子中抽取一个球,放回后再抽取一个球。两次抽取得到的球颜色不同的概率是多少?
- 有8个球,其中7个重量相同,另一个球比其他球重,现在只有一个天平,请问最少需要称几次一定能找到那个比其他球重的球?
- 有一堆桃子,猴子第一天吃了一半加一个,第二天又吃了一半加一个,… ,到第10天时剩下一个桃子,问这原来有多少个?
- 有两个水桶,容量分别为5升和3升,请问如何使用这两个桶得到4升的水?
- 村庄有个约定,生男孩就结束,生女孩就继续生,直到生出男孩为止,若干年后,这个村子男女比例是多少?
【本地缓存】
【架构设计】
- Mvc和三层架构有什么区别?
- 为什么说做架构其实就是做权衡?
- 亿级商品如何存储?
- 什么是单元化架构?
- 什么是技术债务?你怎么理解它?
- 什么是银弹,什么叫做没有银弹?
- 什么样的架构才算是好的架构?
- 如何做技术选型?
- 常见的架构设计原则有哪些?
- 微服务的拆分有哪些原则?
- 架构是设计出来的还是演进出来的?
- 架构设计中最重要的三个要素是什么?
- 能不能介绍下你项目的整体架构情况
【线上问题排查】
- Arthas统计方法耗时的原理是什么?
- Cpu飙高问题排查过程(1)
- Cpu飙高问题排查过程(2)
- Java进程突然挂了,可能是什么原因?
- Load飙高问题排查过程
- Oom问题排查过程
- Poi导致内存溢出排查
- Rocket Mq消费堆积问题排查
- Rt飙高问题排查过程
- Sort Aborted问题排查过程
- 回表导致慢 SQL 问题排查
- 如何使用jstack分析死锁
- 如何排查网络问题?
- 慢 Sql问题排查
- 数据倾斜导致的频繁 Full Gc问题排查
- 数据库 Cpu被打满排查过程
- 数据库死锁问题排查过程
- 数据库连接池满排查过程
- 日志打印导致 Cpu飙高问题排查
- 服务发布分10批,第一批发完后负载很高后面恢复正常,如何处理?
- 服务器突然 SSH 连不上了,可能是什么问题?
- 服务器被注入挖矿木马问题排查
- 死循环会导致 Cpu使用率升高吗?为什么?
- 死锁会导致 Cpu使用率升高吗?为什么?
- 程序运行期发生 Class Not Found Exception 可能是什么原因?
- 端口冲突问题如何定位和解决
- 线上服务器如果磁盘满了,你会如何处理?
- 频繁 Full Gc问题排查(2)
- 频繁 Full Gc问题排查
【编程题】
- 10个线程模拟赛马,所有马就绪后才能开跑,所有马到达终点后裁判宣布赛马成绩
- 两个线程,一个打印123,一个打印 Abc,交替输出1 A2 B3 C
- 两个线程,一个打印奇数,一个打印偶数,然后顺序打印出1 100
- 五个线程abcde,想先执行a,在执行bcd,bcd执行完后执行e如何做?
- 判断101 200之间有多少个质数,并输出所有质数
- 如何用栈实现一个队列?
- 如何用队列实现一个栈?
- 如果让你实现一个字符串的equals方法,你会如何实现?
- 实现一个 Lru缓存淘汰策略,支持get和put操作
- 并发调三个方法,实现只要有一个成功就立即成功,否则等都失败才失败
- 有一个包含 N个整数的数组,请编写一个算法,找到其中的两个元素,使它们之差最小。时间复杂度必须为 O(n)。
- 线程池中怎么设置超时时间?一个线程如果要运行10s,怎么在1s就抛出异常
- 给定一个二叉搜索树,请找出其中第k小的元素
- 请分别写出一个 Java堆、栈、元空间溢出的代码
【网络安全】
- Md5是加密算法吗?绝对安全吗?
- 为什么预编译可以避免 Sql注入?
- 什么是 Csrf攻击? Xss攻击?
- 什么是 Ddo S攻击?如何防止被攻击?
- 什么是 Dns污染? Dns劫持?
- 什么是 Sql注入攻击?如何防止
- 什么是中间人攻击?
- 什么是国密算法? Sm2 Sm4 Sm3有什么区别?
- 什么是垂直越权,如何防止?
- 什么是撞库、拖库和洗库?
- 什么是水平越权?如何防止
- 加密&解密、加签&验签做的事情一样吗?
【计算机网络】
- ARP 与 RARP 的区别是什么?
- Cookie, Session, Token的区别是什么?
- HTTP 301跳转和302跳转有什么区别?
- HTTP 2存在什么问题,为什么需要 HTTP 3?
- HTTP S和 Http的区别是什么?
- HTTP S建立连接的时候是几次握手?
- Http不同版本之间的区别?
- Ping为什么不需要端口?
- Ping的原理是什么?
- Tcp和 Udp的区别是什么?
- Tcp是如何保证可靠传输的?
- 为什么需要 HTTP 2,他解决了什么问题?
- 什么是 Cdn,为什么他可以做缓存?
- 什么是 HTTP 3的 Quic协议?
- 什么是 IP V6?和 IP V4有什么区别?
- 什么是 Tcp三次握手、四次挥手?
- 什么是 Tcp的粘包、拆包问题?
- 什么是 Tcp重传率,有什么用?如何查看?
- 什么是“墙”?“梯子”的原理是什么?
- 什么是正向代理和反向代理?
- 什么是网络分区?
- 什么是跨域访问问题,如何解决?
- 介绍一下 Osi七层模型?
- 介绍下 Tcp是如何实现拥塞控制的?
- 介绍下什么是长连接和短连接?
- 如何做网络抓包?
- 对称加密和非对称加密有什么区别?
- 浏览器输入www.taobao.com回车之后发生了什么
- 简单介绍一下 Dns?
- 路由器与交换机的区别是什么?
【设计模式】
- String的设计,用到了哪些设计模式?
- 三种工厂模式的区别和特点
- 不使用锁如何实现线程安全的单例?
- 为什么说枚举是实现单例最好的方式?
- 什么是不可变模式,有哪些应用?
- 什么是享元模式,有哪些具体应用?
- 什么是代理模式,有哪些应用?
- 什么是模板方法模式,有哪些应用?
- 什么是状态模式,有哪些应用?
- 什么是观察者模式,有哪些应用?
- 什么是设计模式?有什么好处?
- 什么是责任链模式,有哪些应用?
- 你在工作中是如何使用设计模式的?
- 使用哪种设计模式可以提高代码可维护性?
- 使用哪种设计模式可以提高代码的复用性?
- 单例模式的多种写法
- 如何破坏单例模式?
- 策略模式和if Else相比有什么好处?
- 设计模式的7大基本原则有哪些?
- 请简述 Mvc模式的思想
- 针对天气预报变化时触发用户通知和推荐行程用什么设计模式?
【配置中心】
- Nacos 2.x为什么新增了 Rpc的通信方式?
- Nacos如何实现的配置变化客户端可以感知到?
- Nacos是 Ap的还是 Cp的?
- Nacos的服务注册和服务发现的过程是怎么样的?
- Nacos能同时实现 Ap和 Cp的原理是什么?
- 什么是 Nacos,主要用来作什么?
- 注册中心如何选型?
【集合类】
- Array List、 Linked List与 Vector的区别?
- Array List的sub List方法有什么需要注意的地方吗?
- Array List的序列化是怎么实现的?
- Concurrent Hash Map为什么在 Jdk 1.8中废弃分段锁?
- Concurrent Hash Map为什么在 Jdk1.8中使用synchronized而不是 Reentrant Lock
- Concurrent Hash Map在哪些地方做了并发控制
- Concurrent Hash Map是如何保证fail Safe的?
- Concurrent Hash Map是如何保证线程安全的?
- Hash Map、 Hashtable和 Concurrent Hash Map的区别?
- Hash Map在get和put时经过哪些步骤?
- Hash Map是如何扩容的?
- Hash Map用在并发场景中有什么问题?
- Hash Map的hash方法是如何实现的?
- Hash Map的remove方法是如何实现的?
- Hash Map的容量设置多少合适?
- Hash Map的数据结构是怎样的?
- Hash冲突通常怎么解决?
- Java 8中的 Stream用过吗?都能干什么?
- Java中的集合类有哪些?如何分类的?
- Jdk1.8中 Hash Map有哪些改变?
- Set是如何保证元素不重复的
- Stream的并行流是如何实现的?
- 为什么 Concurrent Hash Map不允许null值?
- 为什么 Hash Map的 Cap是2 N,如何保证?
- 为什么 Hash Map的默认负载因子设置成0.75
- 为什么在 Jdk8中 Hash Map要转成红黑树
- 什么是 Cow,如何保证的线程安全?
- 什么是fail Fast?什么是fail Safe?
- 你能说出几种集合的排序方式?
- 同步容器(如 Vector)的所有操作一定是线程安全的吗?
- 如何将集合变成线程安全的?
- 遍历的同时修改一个 List有几种方式?
【非技术问题】
- 你作为项目组长,有制定过哪些规范吗?
- 你对加班怎么看待?
- 你最近在学什么新技术吗?
- 你最近在看什么书?
- 你觉得你有什么缺点?
- 你还有什么想要反问我的吗?
- 如何在团队合作中解决冲突和达成共识
- 对自己的未来发展有什么想法和计划
- 最有成就感的项目或工作经历
- 有没有别的 Offer?有没有别的面试?
- 离职的原因是什么
- 能不能说一下你对自己的评价
【面经实战】
- 24届,美团1 3面面经
- 10年,深圳证券公司,系统架构组架构师,监控平台、电商平台,秒杀
- 22年毕业,培训了2个月 Java,多线程, Spring
- 23年毕业,电商运营平台,mysql,mq,redis
- 26届,985,12306项目,redis,多线程
- 26届,双一流硕士,2段大厂实习
- 26届,百度一面&二面 美团一面
- 26届,阿里后端2面
- 2年985硕,直播业务,redis,kafka,
- 2本,9年经验(6 7年服务端),停车管理系统
- 3年经验,2本,物流调度系统,mq,mysql
- 3年经验,985本科,电商财务相关业务
- 3年经验,智慧园区,mysql, Redis
- 4年经验,上海某跨境电商,千万级大表经验
- 5年经验,流计算引擎、配置中心、流程编排、 Rpa
- 6年经验,资产后台,汽车金融(贷款) Saa S
- 7年后端技术专家,清结算,资损防控,架构设计
- 985应届生,并发编程底层原理
- Pdd海外用增一面
- Pdd海外用增二面
- 字节支付1 2 3 Hr面
- 字节本地生活
- 工作1年,大数据开发平台,seata贡献者
- 工作2年,电商网站开发,负责购物车、详情页
- 工作3年,分布式项目,实时数据分析功能
- 工作3年,城市停车项目,保险理赔(财&人身)&电服业务
- 工作4年,供应链相关,分库分表、分布式锁
- 工作4年,自研流程引擎项目
- 工作5年,主要做计费项目
- 工作6年,211本,2手平台,卖家业务,结算
- 工作7年,2家大厂经验,下单&导购核心开发
- 工作7年, Saa S公司,架构师,技术负责人
- 工作8年,游戏中厂, Redis,分布式
- 平安一面
- 最强应届生, Jvm,计算机网络
- 白龙马科技2面
- 白龙马科技一面
- 百度一面
- 百度二面
- 菜鸟1 3面
- 阿里一面
- 顺丰一面
- 拼多多一面
- 拼多多二面
- 新增面经
- 滴滴一面
- 滴滴二面
- 猿辅导一面
- 阿里二面
- 阿里本地生活一面
【面试必备】
- 简历指导
- 简历模板——1年
- 简历模板——3年
- 简历模板——3年(2)
- 简历模板——5年
- 简历模板——5年(2)
- 简历模板——5年(3)
- 简历模板——8年
- 简历模板——应届生
- 简历模板——应届生(2)
- 简历自查
- 面试前必须要准备哪些内容?
- 项目介绍如何准备
- 【大厂面试流程】
【项目难点&亮点】
- 为了防止接口被恶意调用,设计 Api秘钥方式提升接口安全性,并通过滑动窗口粗实现接口调用限流。
- 使用 Completable Future完成并发编排,提升接口性能
- 使用quartz定时任务实现支付单自动关单功能,并引入多线程 分段解决扫表延迟的问题
- 使用自定义注解 切面减少冗余代码,提升代码的鲁棒性
- 利用雪花算法 Redis 自增 Id,实现唯一订单号生成
- 基于 Bitset 实现高效的商品预约
- 基于 Easy Excel 线程池 批量插入实现百万级数据导入
- 基于 Easy Excel 线程池解决 Poi文件导出时的内存溢出及超时问题
- 基于 Redis的zset实现秒级排行榜
- 基于 Redis的分布式锁,解决短信验证码重复发放等问题
- 基于 Spring Event,实现同步转异步,解决定时任务扫表导致数据库连接池不够的问题
- 基于 Token校验避免订单重复提交
- 基于 Ttl 解决线程池中 Thread Local 线程无法共享的问题
- 基于 Xxl Job的分片实现分库分表后的扫表
- 基于本地消息表实现分布式事务保证最终一致性
- 基于状态机 乐观锁解决订单支付和关单的并发问题
- 引入分布式锁解决并发问题
- 通过热点数据预热、多级缓存、异步化编程等方式解决热门数据接口耗时长问题
- 通过采用“一锁二判三更新”方式设计接口幂等,解决支付单重复支付的问题
- 你的项目有哪些难点&亮点?
【高可用】
- 什么是 Sla?
- 什么是全链路压测?
- 什么是冷备、热备,暖备?
- 什么是压测,怎么做压测?
- 什么是异地多活?
- 单机压测到300 Qps,10台就能抗住3000 Qps吗?
- 压测如何避免影响线上用户?
- 如何设计一个高可用架构?
【高并发】
- 什么是服务降级?
- 什么是滑动窗口限流?
- 什么是熔断?
- 什么是自适应限流?
- 什么是限流?常见的限流算法有哪些?
- 什么是预热?它有何作用?
- 单机限流和集群限流的区别是什么?
- 如何设计一个能够支持高并发的系统?
- 漏桶和令牌桶有啥区别?
- 高并发场景中,乐观锁和悲观锁哪个更适合?