📮📮📮必读📮📮📮
- ❗❗❗必读❗❗❗
- 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 副本
面试必备
- ✅简历模板——5年(3)
- ✅面试前必须要准备哪些内容?
- ✅项目介绍如何准备
- ✅简历指导
- ✅简历自查
- ✅简历模板——应届生
- ✅简历模板——应届生(2)
- ✅简历模板——1年
- ✅简历模板——3年
- ✅简历模板——3年(2)
- ✅简历模板——5年
- ✅简历模板——5年(2)
- ✅简历模板——8年
大厂面试流程
* [✅字节跳动面试流程](%E9%9D%A2%E8%AF%95%E5%BF%85%E5%A4%87/%E5%A4%A7%E5%8E%82%E9%9D%A2%E8%AF%95%E6%B5%81%E7%A8%8B/%E2%9C%85%E5%AD%97%E8%8A%82%E8%B7%B3%E5%8A%A8%E9%9D%A2%E8%AF%95%E6%B5%81%E7%A8%8B.md)
* [✅阿里巴巴面试流程](%E9%9D%A2%E8%AF%95%E5%BF%85%E5%A4%87/%E5%A4%A7%E5%8E%82%E9%9D%A2%E8%AF%95%E6%B5%81%E7%A8%8B/%E2%9C%85%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4%E9%9D%A2%E8%AF%95%E6%B5%81%E7%A8%8B.md)
* [✅腾讯面试流程](%E9%9D%A2%E8%AF%95%E5%BF%85%E5%A4%87/%E5%A4%A7%E5%8E%82%E9%9D%A2%E8%AF%95%E6%B5%81%E7%A8%8B/%E2%9C%85%E8%85%BE%E8%AE%AF%E9%9D%A2%E8%AF%95%E6%B5%81%E7%A8%8B.md)
场景题
- ✅订单到期关闭如何实现
- ✅每天100w次登录请求,4C8G机器如何做JVM调优?
- ✅如果你的业务量突然提升100倍QPS你会怎么做?
- ✅不用redis分布式锁, 如何防止用户重复点击?
- ✅让你设计一个订单号生成服务,该怎么做?
- ✅如何设计一个购物车功能?
- ✅让你设计一个秒杀系统,你会考虑哪些问题?
- ✅如果让你实现消息队列,会考虑哪些问题?
- ✅库存扣减如何避免超卖和少卖?
- ✅如何用Redis实现朋友圈点赞功能?
- ✅Redis的zset实现排行榜,实现分数相同按照时间顺序排序,怎么做?
- ✅如何实现"查找附近的人"功能?
- ✅消息队列使用拉模式好还是推模式好?为什么?
- ✅如果让你实现一个RPC框架,会考虑用哪些技术解决哪些问题?
- ✅Kafka,单分区单消费者实例,如何提高吞吐量
- ✅一个订单,在11:00超时关闭,但在11:00也支付成功了,怎么办?
- ✅一个支付单,多个渠道同时支付成功了怎么办?
- ✅如何解决消息重复消费、重复下单等问题?
- ✅你是如何进行SQL调优的?
- ✅不使用synchronized和Lock如何设计一个线程安全的单例?
- ✅索引失效的问题是如何排查的,有哪些种情况?
- ✅40亿个QQ号,限制1G内存,如何去重?
- ✅说一说多级缓存是如何应用的?
- ✅从B+树的角度分析为什么单表2000万要考虑分表??
- ✅InnoDB为什么不用跳表,Redis为什么不用B+树?
- ✅线上接口如果响应很慢如何去排查定位问题呢?
- ✅怎么做数据对账?
- ✅MySQL千万级大表如何做数据清理?
- ✅为什么MySQL用B+树,MongoDB用B树?
- ✅高并发的库存系统,在数据库扣减库存,怎么实现?
- ✅MySQL热点数据更新会带来哪些问题?
- ✅和外部机构交互如何防止被外部服务不可用而拖垮
- ✅MySQL 里有 2000W 数据,Redis 中只存 20W 的数据,如何保证 Redis 中的数据都是热点数据?
- ✅用了一锁二查三更新,为啥还出现了重复数据?
- ✅一个接口3000QPS,接口RT为200MS,预估需要几台机器?
- ✅在100M内存下存储一亿个整数,其范围在1到2亿,如何快速判断给定到一个整数值是否存在?
- ✅数据库逻辑删除后,怎么做唯一性约束?
- ✅电商下单场景,如何设计一个数据一致性方案?
- ✅如果单表数据量大,只能考虑分库分表吗?
- ✅如何实现缓存的预热?
- ✅如何实现百万级数据从Excel导入到数据库?
- ✅如果需要跨库join,该如何实现?
- ✅应用占用内存持续增长,但是堆内存、元空间都没变化,可能是什么原因?
- ✅和其他公司做数据交互时,有什么需要注意的?
- ✅4C8G的机器,各项系统指标,什么范围算是正常?
- ✅4C8G 16台 和 8C16G8台,不考虑成本的情况怎么选?
- ✅如何预估一个系统的QPS?
- ✅如何做SQL调优:用了主键索引反而查询很慢?
- ✅如果要存IP地址,用什么数据类型比较好?
- ✅一次RPC请求,客户端显示超时,但是服务端不超时,可能是什么原因?
- ✅为什么不建议使用MQ实现订单到期关闭?
- ✅如何实现敏感词过滤?
- ✅为啥不要在事务中做外部调用?
- ✅如何做平滑的数据迁移?
- ✅如何实现一个抢红包功能?
- ✅使用分布式锁时,分布式锁加在事务外面还是里面,有什么区别?
- ✅加分布式锁之后影响并发了怎么办?
- ✅数据库乐观锁和悲观锁以及redis分布式锁的区别和使用场景?
- ✅为什么很多公司数据库不允许物理删除(delete) 数据
- ✅为什么不用分布式锁来实现秒杀?
- ✅为什么不直接用原生的BlockinQueue做消息队列
- ✅Spring Event和MQ有什么区别?各自适用场景是什么?
- ✅如何实现百万级排行榜功能?
- ✅为什么一定要做限流?不应该服务好客户吗?不应该是加机器吗?
- ✅大型电商的订单系统,如何设计分库分表方案?
- ✅你认为分布式架构一定比单体架构要好吗?
- ✅Redis 如果挂了,你怎么办?
- ✅代码中使用长事务,会带来哪些问题?
- ✅Redis 的内存如果用满了,会挂吗?
- ✅给第三方提供接口调用,需要注意些什么?
- ✅应用启动后前几分钟,Load、RT、CPU等飙高,如何定位,可能的原因是什么?
- ✅分库分表时,每个城市的人口不一样,有的密集,有的稀疏,如何实现均匀分布?
- ✅项目中,如果日志打印成为瓶颈,该如何优化?
- ✅分布式系统,用户登录信息保存在服务器A上,服务器B如何获取到共享Session
- ✅实现一个登录拉黑功能,实现拉黑用户和把已经登陆用户踢下线。
- ✅调用第三方接口支付时,第三方接口显示支付成功,但是在调用方显示支付失败,问题可能出在哪里
- ✅读取一千个文件,一个线程读取和开十个线程读取,哪种方式效率高?
- ✅a,b 的联合索引,select b where a = xx,无法走索引覆盖什么原因?
- ✅大量的手机号码被标记成骚扰电话,如何存储这些号码?
- ✅把商品加入购物车时断网了,该怎么在重新联网时同步?
- ✅不用大于号小于号怎么判断两个正整数大小?
- ✅外卖系统,一天一千万条数据,用户需要查到近30天的数据,商家也要查询到30天的数据,怎么设计表?
- ✅进入电梯里断网后又恢复刚开始为什么网络慢?
- ✅一个表有用户和时间两个列,现有3个需求:根据用户查;根据日期查;根据日期和用户查;问怎么建立索引?
- ✅做一个过滤黑名单网址的系统,你觉得要怎么实现,会用到哪些数据结构?
- ✅全国的酒店价格(千万级)需要在某个瞬间比如7点发生变动,怎样高性能准点去进行变更
- ✅服务器有多个节点,线上出现用户进入缓慢,监控服务器cpu和缓存没有什么压力,可以从哪些方面排查?
- ✅账户里面只有十块钱,同时发来两笔订单一共大于十块钱,怎么保证不超花?
- ✅项目中需要应用发布和ddl变更,需要如何保证不出错?
- ✅有100个优惠券,有几千万流量,怎么保证服务器不跨掉,怎么保证最前面的人能抢到这个券?
- ✅秒杀场景下,怎么加库存?
- ✅5 分钟内最多允许用户尝试登录 3 次,如果错误次数超过限制,需要对该用户进行锁定。如何实现?
- ✅两个不相关的网站A和B,如何实现A登录B也能自动登录
- ✅MQ出现消息乱序了如何解决?
- ✅在for循环中调用数据库,有什么缺点?如何优化?
- ✅MySQL单表一千万条数据怎么做分页查询?
- ✅MySQL千万级数据量,查询如何做优化?
- ✅什么是数据归档,一般是怎么做的?
- ✅第三方接口不稳定经常超时,如何处理三方接口异常不影响自己接口
- ✅Redis、MySQL和MongoDB的区别是什么,各自适用场景呢?
- ✅Redis实现分布式锁,加锁的时候,redis不可用了咋整?
- ✅如果让你实现短链服务,如何生成不重复的短链地址?
- ✅MySQL如果突然断电,会发生数据丢失吗?
- ✅防止接口被恶意刷流量,除了限流还应在代码层面做哪些防护?
- ✅库存扣减、创建订单,如何拆成TCC?
- ✅Redis保存库存的时候,如何避免被Redis清理掉?
- ✅如果token被窃取了,是不是就能伪造登陆了?
- ✅如果有1TB的数据需要排序,但只有32GB的内存如何排序处理?
- ✅如何从 1TB 的搜索日志中找出搜索量最高的 10 个关键词?
- ✅用@Scheduled执行定时任务,如何避免集群的并发问题
- ✅下单支付过程,点击跳转支付,输入密码,支付完成后跳转到订单页,整个过程可能会有什么问题?架构方面做哪些设计?
- ✅有一张上百万条数据的单表,从前端页面、Java后台、数据库三个层面做查询优化
- ✅假设还有很多内存,有什么情况还会频繁fullgc?
- ✅压测600没问题,上线后300就扛不住了,可能是什么原因?
- ✅Redis和MySQL的一次普通查询,RT在什么范围内是合理的?
- ✅5亿条数据放到布隆过滤器中,大概需要多大内存?如何估算?
- ✅为了避免丢消息问题需要落表,如何设计这张消息表?
- ✅有一个银行系统,对实时性要求比较高,你会怎么选择垃圾回收器?
- ✅百万级会员的用户平台,如何实现快到期的会员的消息提醒?
- ✅A线程获取Redis分布式锁,但那一刻做了主从的切换,B线程能获取到锁吗?
- ✅如果设计一个缓存,需要考虑哪些方面?
- ✅扫表任务,如何写SQL可以避免出现跳页的情况?
- ✅阿里出的Java开发手册看过吗,对哪条规约印象深刻?
- ✅购物车中如何解决重复下单的问题?
- ✅让你实现一个短链服务,你会考虑哪些问题?
- ✅用了本地消息表的方案,如果下游执行失败了上游如何回滚?
- ✅MySQL千万级大表中如何增加字段?
- ✅如果一个接口响应时间不符合预期,怎么排查跟解决?
- ✅数据对账时,如果日切时间点前后的数据不一致怎么办?
线上问题排查
- ✅RocketMQ消费堆积问题排查
- ✅RT飙高问题排查过程
- ✅数据库死锁问题排查过程
- ✅CPU飙高问题排查过程(1)
- ✅CPU飙高问题排查过程(2)
- ✅数据库连接池满排查过程
- ✅数据库CPU被打满排查过程
- ✅OOM问题排查过程
- ✅频繁FullGC问题排查
- ✅Arthas统计方法耗时的原理是什么?
- ✅慢SQL问题排查
- ✅Load飙高问题排查过程
- ✅Sort aborted问题排查过程
- ✅如何使用jstack分析死锁
- ✅POI导致内存溢出排查
- ✅如何排查网络问题?
- ✅频繁FullGC问题排查(2)
- ✅数据倾斜导致的频繁FullGC问题排查
- ✅死循环会导致CPU使用率升高吗?为什么?
- ✅死锁会导致CPU使用率升高吗?为什么?
- ✅服务发布分10批,第一批发完后负载很高后面恢复正常,如何处理?
- ✅Java进程突然挂了,可能是什么原因?
- ✅程序运行期发生ClassNotFoundException 可能是什么原因?
- ✅服务器突然 ssh 连不上了,可能是什么问题?
- ✅回表导致慢 SQL 问题排查
- ✅服务器被注入挖矿木马问题排查
- ✅线上服务器如果磁盘满了,你会如何处理?
- ✅日志打印导致CPU飙高问题排查
- ✅端口冲突问题如何定位和解决
项目难点&亮点
- 你的项目有哪些难点&亮点?
- ✅引入分布式锁解决并发问题
- ✅使用CompletableFuture完成并发编排,提升接口性能
- ✅基于Spring Event,实现同步转异步,解决定时任务扫表导致数据库连接池不够的问题
- ✅通过采用“一锁二判三更新”方式设计接口幂等,解决支付单重复支付的问题
- ✅基于Redis的分布式锁,解决短信验证码重复发放等问题
- ✅使用quartz定时任务实现支付单自动关单功能,并引入多线程+分段解决扫表延迟的问题
- ✅使用自定义注解+切面减少冗余代码,提升代码的鲁棒性
- ✅基于本地消息表实现分布式事务保证最终一致性
- ✅为了防止接口被恶意调用,设计API秘钥方式提升接口安全性,并通过滑动窗口粗实现接口调用限流。
- ✅通过热点数据预热、多级缓存、异步化编程等方式解决热门数据接口耗时长问题
- ✅基于EasyExcel+线程池解决POI文件导出时的内存溢出及超时问题
- ✅基于EasyExcel+线程池+批量插入实现百万级数据导入
- ✅基于Redis的zset实现秒级排行榜
- ✅基于TTL 解决线程池中 ThreadLocal 线程无法共享的问题
- ✅基于Token校验避免订单重复提交
- ✅基于状态机+乐观锁解决订单支付和关单的并发问题
- ✅利用雪花算法+Redis 自增 ID,实现唯一订单号生成
- ✅基于XXL-JOB的分片实现分库分表后的扫表
- ✅基于 bitset 实现高效的商品预约
Java基础
- ✅Java和C++主要区别有哪些?各有哪些优缺点?
- ✅如何理解面向对象和面向过程?
- ✅为什么Java不支持多继承?
- ✅接口和抽象类的区别,如何选择?
- ✅如何理解Java中的多态?
- ✅Java中有了基本类型为什么还需要包装类?
- ✅为什么不能用浮点数表示金额?
- ✅为什么不能用BigDecimal的equals方法做等值比较?
- ✅BigDecimal(double)和BigDecimal(String)有什么区别?
- ✅为什么对Java中的负数取绝对值结果不一定是正数?
- ✅String、StringBuilder和StringBuffer的区别?
- ✅String为什么设计成不可变的?
- ✅String str=new String(“hollis”)创建了几个对象?
- ✅String a = “ab”; String b = “a” + “b”; a == b 吗?
- ✅String有长度限制吗?是多少?
- ✅RPC接口返回中,使用基本类型还是包装类?
- ✅常见的字符编码有哪些?有什么区别?
- ✅说几个常见的语法糖?
- ✅Lambda表达式是如何实现的?
- ✅什么是泛型?有什么好处?
- ✅什么是类型擦除?
- ✅泛型中K T V E ? Object等分别代表什么含义。
- ✅泛型中上下界限定符extends 和 super有什么区别?
- ✅什么是SPI,和API有啥区别
- ✅什么是反射机制?为什么反射慢?
- ✅Java中创建对象有哪些种方式
- ✅Java的动态代理如何实现?
- ✅Java注解的作用是啥
- ✅什么是序列化与反序列化
- ✅Java序列化的原理是啥
- ✅serialVersionUID 有何用途? 如果没定义会有什么问题?
- ✅你知道fastjson的反序列化漏洞吗
- ✅Java中异常分哪两类,有什么区别?
- ✅以下关于异常处理的代码有哪些问题
- ✅finally中代码一定会执行吗?
- ✅Java中的枚举有什么特点和好处
- ✅什么是AIO、BIO和NIO?
- ✅Java是值传递还是引用传递?
- ✅什么是深拷贝和浅拷贝?
- ✅SimpleDateFormat是线程安全的吗?使用时应该注意什么?
- ✅现在JDK的最新版本是什么?
- ✅JDK新版本中都有哪些新特性?
- ✅什么是UUID,能保证唯一吗?
- ✅char能存储中文吗?
- ✅while(true)和for(;;)哪个性能好?
- ✅ClassNotFoundException和NoClassDefFoundError的区别是什么?
- ✅为什么JDK 9中把String的char[]改成了byte[]?
- ✅Arrays.sort是使用什么排序算法实现的?
- ✅String是如何实现不可变的?
- ✅字符串常量是什么时候进入到字符串常量池的?
- ✅String中intern的原理是什么?
- ✅Java中Timer实现定时调度的原理是什么?
- ✅为什么建议多用组合少用继承?
- ✅try中return A,catch中return B,finally中return C,最终返回值是什么?
- ✅final、finally、finalize有什么区别
- ✅为什么建议自定义一个无参构造函数
- ✅为什么这段代码在JDK不同版本中结果不同
- ✅为什么不建议使用异常控制业务流程
- ✅为什么Java中的main方法必须是public static void的?
- ✅Java中的static都能用来修饰什么?
- ✅有了equals为啥需要hashCode方法?
- ✅BigDecimal和Long表示金额哪个更合适,怎么选择?
- ✅怎么修改一个类中的private修饰的String参数的值
- ✅Stream的并行流一定比串行流更快吗?
- ✅JDK 9中对字符串的拼接做了什么优化?
- ✅反射与封装是否矛盾?如何解决反射破坏封装不安全的问题?
- ✅Integer a=1000,Integer b=1000,==是什么结果,如果是100呢?
Java并发
- ✅什么是多线程中的上下文切换?
- ✅能不能谈谈你对线程安全的理解?
- ✅什么是并发,什么是并行?
- ✅线程有几种状态,状态之间的流转是怎样的?
- ✅什么是守护线程,和普通线程有什么区别?
- ✅JDK21 中的虚拟线程是怎么回事?
- ✅创建线程有几种方式?
- ✅run/start、wait/sleep、notify/notifyAll区别?
- ✅什么是线程池,如何实现的?
- ✅线程数设定成多少更合适?
- ✅什么是ThreadLocal,如何实现的?
- ✅线程同步的方式有哪些?
- ✅什么是死锁,如何解决?
- ✅什么是Java内存模型(JMM)?
- ✅并发编程中的原子性和数据库ACID的原子性一样吗?
- ✅synchronized是怎么实现的?
- ✅synchronized锁的是什么?
- ✅synchronized是如何保证原子性、可见性、有序性的?
- ✅synchronized的锁升级过程是怎样的?
- ✅synchronized的重量级锁很慢,为什么还需要重量级锁?
- ✅synchronized的锁优化是怎样的?
- ✅volatile能保证原子性吗?为什么?
- ✅int a = 1 是原子性操作吗
- ✅volatile是如何保证可见性和有序性的?
- ✅有了synchronized为什么还需要volatile?
- ✅如何理解AQS?
- ✅什么是CAS?存在什么问题?
- ✅CAS一定有自旋吗?
- ✅什么是Unsafe?
- ✅CAS在操作系统层面是如何保证原子性的?
- ✅synchronized和reentrantLock区别?
- ✅公平锁和非公平锁的区别?
- ✅LongAdder和AtomicLong的区别?
- ✅CountDownLatch、CyclicBarrier、Semaphore区别?
- ✅父子线程之间怎么共享/传递数据?
- ✅有三个线程T1,T2,T3如何保证顺序执行?
- ✅如何对多线程进行编排
- ✅三个线程分别顺序打印0-100
- ✅什么是总线嗅探和总线风暴,和JMM有什么关系?
- ✅CompletableFuture的底层是如何实现的?
- ✅ForkJoinPool和ThreadPoolExecutor区别是什么?
- ✅有了InheritableThreadLocal为啥还需要TransmittableThreadLocal?
- ✅AQS是如何实现线程的等待和唤醒的?
- ✅如何保证多线程下 i++ 结果正确?
- ✅Thread.sleep(0)的作用是什么?
- ✅有哪些实现线程安全的方案?
- ✅为什么不建议通过Executors构建线程池
- ✅线程池的拒绝策略有哪些?
- ✅线程是如何被调度的?
- ✅为什么JDK 15要废弃偏向锁?
- ✅Java是如何判断一个线程是否存活的?
- ✅什么是可重入锁,怎么实现可重入锁?
- ✅如何实现主线程捕获子线程异常
- ✅为什么不能在try-catch中捕获子线程的异常?
- ✅Java线程出现异常,进程为啥不会退出?
- ✅什么是happens-before原则?
- ✅happens-before和as-if-serial有啥区别和联系?
- ✅如何让Java的线程池顺序执行任务?
- ✅ThreadLocal的应用场景有哪些?
- ✅ThreadLocal为什么会导致内存泄漏?如何解决的?
- ✅到底啥是内存屏障?到底怎么加的?
- ✅有了CAS为啥还需要volatile?
- ✅AQS的同步队列和条件队列原理?
- ✅什么是AQS的独占模式和共享模式?
- ✅AQS为什么采用双向链表?
- ✅有了MESI为啥还需要JMM?
- ✅为什么虚拟线程不能用synchronized?
- ✅为什么虚拟线程不要和线程池一起用?
- ✅为什么虚拟线程尽量避免使用ThreadLocal
- ✅sychronized是非公平锁吗,那么是如何体现的?
- ✅synchronized 的锁能降级吗?
- ✅如何实现无锁化编程?
- ✅如何在 Java 中实现高效的异步编程?如何避免回调地狱?
- ✅线程池中使用ThreadLocal会有哪些潜在风险?
- ✅动态线程池的原理是什么?
- ✅什么是伪共享,如何解决伪共享?
- ✅介绍下JUC,都有哪些工具类?
- ✅什么是活锁,和死锁有什么区别?
- ✅Java中有哪些锁?
- ✅JDK25的ScopedValue是什么?为什么可以替代ThreadLocal?
集合类
- ✅Java中的集合类有哪些?如何分类的?
- ✅你能说出几种集合的排序方式?
- ✅什么是fail-fast?什么是fail-safe?
- ✅遍历的同时修改一个List有几种方式?
- ✅Set是如何保证元素不重复的
- ✅ArrayList、LinkedList与Vector的区别?
- ✅ArrayList的subList方法有什么需要注意的地方吗?
- ✅ArrayList的序列化是怎么实现的?
- ✅hash冲突通常怎么解决?
- ✅HashMap的数据结构是怎样的?
- ✅HashMap、Hashtable和ConcurrentHashMap的区别?
- ✅HashMap在get和put时经过哪些步骤?
- ✅为什么HashMap的Cap是2^n,如何保证?
- ✅为什么HashMap的默认负载因子设置成0.75
- ✅HashMap的容量设置多少合适?
- ✅HashMap是如何扩容的?
- ✅为什么在JDK8中HashMap要转成红黑树
- ✅HashMap的hash方法是如何实现的?
- ✅同步容器(如Vector)的所有操作一定是线程安全的吗?
- ✅Stream的并行流是如何实现的?
- ✅HashMap的remove方法是如何实现的?
- ✅ConcurrentHashMap是如何保证线程安全的?
- ✅ConcurrentHashMap在哪些地方做了并发控制
- ✅ConcurrentHashMap是如何保证fail-safe的?
- ✅如何将集合变成线程安全的?
- ✅HashMap用在并发场景中有什么问题?
- ✅什么是COW,如何保证的线程安全?
- ✅Java 8中的Stream用过吗?都能干什么?
- ✅为什么ConcurrentHashMap不允许null值?
- ✅JDK1.8中HashMap有哪些改变?
- ✅ConcurrentHashMap为什么在JDK 1.8中废弃分段锁?
- ✅ConcurrentHashMap为什么在JDK1.8中使用synchronized而不是ReentrantLock
JVM
- ✅Java是如何实现的平台无关?
- ✅Java是编译型还是解释型?
- ✅什么是编译和反编译?
- ✅简单介绍一下JIT优化技术?
- ✅对JDK进程执行kill -9有什么影响?
- ✅JVM的运行时内存区域是怎样的?
- ✅Java中的对象一定在堆上分配内存吗?
- ✅Java的堆是如何分代的?为什么分代?
- ✅新生代如果只有一个Eden+一个Survivor可以吗?
- ✅YoungGC和FullGC的触发条件是什么?
- ✅什么是Stop The World?
- ✅JVM有哪些垃圾回收算法?
- ✅JVM如何判断对象是否存活?
- ✅什么是三色标记算法?
- ✅什么是强引用、软引用、弱引用和虚引用?
- ✅新生代和老年代的GC算法
- ✅新生代和老年代的垃圾回收器有何区别?
- ✅G1和CMS有什么区别?
- ✅为什么G1从JDK 9之后成为默认的垃圾回收器?
- ✅JDK 11中新出的ZGC有什么特点?
- ✅Java 8 和 Java 11 的GC有什么区别?
- ✅类的生命周期是怎么样的?
- ✅Java中类加载的过程是怎么样的?
- ✅Java中的类什么时候会被加载?
- ✅什么是双亲委派?如何破坏?
- ✅如何判断JVM中类和其他类是不是同一个类?
- ✅JVM如何保证给对象分配内存过程的线程安全?
- ✅虚拟机中的堆一定是线程共享的吗?
- ✅常见的JVM调优工具有哪些
- ✅有哪些常用的JVM启动参数?
- ✅哪些语言有GC机制
- ✅一个对象的结构是什么样的?
- ✅JVM是如何创建对象的?
- ✅字符串常量池是如何实现的?
- ✅什么是方法区?是如何实现的?
- ✅JVM 中一次完整的 GC 流程是怎样的?
- ✅JVM为什么要把堆和栈区分出来呢?
- ✅运行时常量池和字符串常量池的关系是什么?
- ✅什么是堆外内存?如何使用堆外内存?
- ✅FullGC多久一次算正常?
- ✅什么是跨代引用,有什么问题?
- ✅内存泄漏和内存溢出的区别是什么?
- ✅破坏双亲委派之后,能重写String类吗?
- ✅OutOfMemory和StackOverflow的区别是什么
- ✅什么是Class常量池,和运行时常量池关系是什么?
- ✅Java发生了OOM一定会导致JVM 退出吗?
- ✅什么是safe point,有啥用?
- ✅JDK1.8和1.9中类加载器有哪些不同
- ✅什么是逃逸分析?
- ✅什么是AOT编译?和JIT有啥区别?
- ✅一个Java进程占用的内存都哪些部分?
- ✅说一说JVM的并发回收和并行回收
- ✅为什么初始标记和重新标记需要STW,而并发标记不需要?
- ✅介绍下CMS的垃圾回收过程
- ✅Java一定就是平台无关的吗?
- ✅什么是STW?有什么影响?
- ✅什么情况会导致JVM退出?
- ✅项目中如何选择垃圾回收器?为啥选择这个?
- ✅元空间满了(或溢出),可能是什么原因?
- ✅为什么JDK 1.8要废弃永久代,改用元空间
- ✅ZGC和CMS和G1的区别对比?
SpringCloud
- ✅什么是SpringCloud,有哪些组件?
- ✅SpringCloud和Dubbo有什么区别?
- ✅SpringCloud 在Spring6.0后有哪些变化
- ✅什么是Zuul网关,有什么用?
- ✅Ribbon和Nginx的区别是什么?
- ✅Zuul、Gateway和Nginx有什么区别?
- ✅Ribbon是怎么做负载均衡的?
- ✅Hystrix和Sentinel的区别是什么?
- ✅OpenFeign 不支持了怎么办?
- ✅LoadBalancer和Ribbon的区别是什么?为什么用他替代Ribbon?
- ✅在 Spring Cloud 中,服务间的通信有哪些方式?
- ✅为什么需要SpringCloud Gateway,他起到了什么作用?
- ✅Dubbo和Feign有什么区别?
- ✅Eureka和Zookeeper有什么区别?
- ✅介绍一下Eureka的缓存机制
- ✅什么是Eureka的自我保护模式?
- ✅Feigin 第一次调用为什么很慢?可能的原因是什么?
- ✅Hystrix熔断器的工作原理是什么?
- ✅介绍一下 Hystrix 的隔离策略,你用哪个?
- ✅Eureka 在 Spring Boot 3.x 之后被移除了,如何替代?
- ✅LoadBalancer支持哪些负载均衡策略?如何修改?
- ✅Feign 和 RestTemplate 有什么不同?
- ✅Feign和OpenFeign 有什么区别?
- ✅OpenFeign 是如何实现负载均衡的?
- ✅OpenFeign如何处理超时?如何处理异常?如何记录客户端日志?
- ✅Feign调用超时,会自动重试吗?如何设置?
Spring
- ✅介绍一下Spring的IOC
- ✅介绍一下Spring的AOP
- ✅为什么Spring不建议使用基于字段的依赖注入?
- ✅Spring Bean的生命周期是怎么样的?
- ✅Spring Bean的初始化过程是怎么样的?
- ✅@PostConstruct、init-method和afterPropertiesSet执行顺序
- ✅Spring 6.0和SpringBoot 3.0有什么新特性?
- ✅Spring的事务传播机制有哪些?
- ✅Autowired和Resource的关系?
- ✅BeanFactory和FactroyBean的关系?
- ✅Spring在业务中常见的使用方式
- ✅Spring中如何开启事务?
- ✅Spring中用到了哪些设计模式
- ✅什么是Spring的循环依赖问题?
- ✅Spring事务失效可能是哪些原因?
- ✅什么是MVC
- ✅SpringMVC是如何将不同的Request路由到不同Controller中的?
- ✅Spring Boot 如何让你的 bean 在其他 bean 之前加载
- ✅如何统计一个Bean中的方法调用次数
- ✅Springboot是如何实现自动配置的?
- ✅SpringBoot是如何实现main方法启动Web项目的?
- ✅SpringBoot的启动流程是怎么样的?
- ✅Spring中shutdownhook作用是什么?
- ✅Spring的AOP在什么场景下会失效?
- ✅SpringBoot和Spring的区别是什么?
- ✅在Spring中如何使用Spring Event做事件驱动
- ✅Spring中的事务事件如何使用?
- ✅为什么不建议直接使用Spring的@Async
- ✅什么是Spring的三级缓存
- ✅三级缓存是如何解决循环依赖的问题的?
- ✅Spring解决循环依赖一定需要三级缓存吗?
- ✅SpringBoot如何做优雅停机?
- ✅Spring中@Service 、@Component、@Repository等注解区别是什么?
- ✅如何在Spring启动过程中做缓存预热
- ✅@Lazy注解能解决循环依赖吗?
- ✅Spring 中的 Bean 是线程安全的吗?
- ✅Spring 中的 Bean 作用域有哪些?
- ✅Spring中如何实现多环境配置?
- ✅如何自定义一个starter?
- ✅为什么SpringBoot 3中移除了spring.factories
- ✅Spring的事务在多线程下生效吗?为什么?
- ✅如何根据配置动态生成Spring的Bean?
- ✅Spring的@Autowired能用在Map上吗?
- ✅介绍下@Scheduled的实现原理以及用法
- ✅Spring中创建Bean有几种方式?
- ✅Spring 中注入 Bean 有几种方式
- ✅Spring默认支持循环依赖吗?如果发生如何解决?
- ✅同时使用 @Transactional 与 @Async 时,事务会不会生效?
- ✅知道Spring Task吗,和XXL-JOB有啥区别?
- ✅SpringBoot和传统的双亲委派有什么不一样吗?
- ✅有什么情况会导致一个bean无法被初始化么?
- ✅SpringMVC中如何实现流式输出
MySQL
- ✅有了关系型数据库,为什么还需要NOSQL?
- ✅MySQL的数据存储一定是基于硬盘的吗?
- ✅InnoDB和MyISAM有什么区别?
- ✅char和varchar的区别?
- ✅MySQL 5.x和8.0有什么区别?
- ✅什么是数据库范式,为什么要反范式?
- ✅为什么大厂不建议使用多表join?
- ✅说一说MySQL一条SQL语句的执行过程?
- ✅InnoDB支持哪几种行格式?
- ✅什么是数据库事务机制?
- ✅InnoDB的一次更新事务过程是怎么样的?
- ✅什么是脏读、幻读、不可重复读?
- ✅MySQL中的事务隔离级别?
- ✅InnoDB如何解决脏读、不可重复读和幻读的?
- ✅MySQL 的 select * 会用到事务吗?
- ✅为什么MySQL默认使用RR隔离级别?
- ✅为什么默认RR,大厂要改成RC?
- ✅Innodb的RR到底有没有解决幻读?
- ✅如何理解MVCC?
- ✅当前读和快照读有什么区别?
- ✅介绍下InnoDB的锁机制?
- ✅MySQL的行级锁锁的到底是什么?
- ✅什么是排他锁和共享锁?
- ✅什么是意向锁?
- ✅乐观锁与悲观锁如何实现?
- ✅Innodb加索引,这个时候会锁表吗?
- ✅InnoDB中的索引类型?
- ✅InnoDB为什么使用B+树实现索引?
- ✅MySQL是如何保证唯一性索引的唯一性的?
- ✅什么是聚簇索引和非聚簇索引?
- ✅什么是回表,怎么减少回表的次数?
- ✅什么是索引覆盖、索引下推?
- ✅设计索引的时候有哪些原则(考虑哪些因素)?
- ✅什么是最左前缀匹配?为什么要遵守?
- ✅MySQL索引一定遵循最左前缀匹配吗?
- ✅MySQL的主键一定是自增的吗?
- ✅uuid和自增id做主键哪个好,为什么?
- ✅order by 是怎么实现的?
- ✅count(1)、count(*) 与 count(列名) 的区别
- ✅limit 0,100和limit 10000000,100一样吗?
- ✅SQL语句如何实现insertOrUpdate的功能?
- ✅binlog、redolog和undolog区别?
- ✅用了索引还是很慢,可能是什么原因?
- ✅SQL执行计划分析的时候,要关注哪些信息?
- ✅是否支持emoji表情存储,如果不支持,如何操作?
- ✅如何优化一个大规模的数据库系统?
- ✅MySQL只操作同一条记录,也会发生死锁吗?
- ✅数据库死锁如何解决?
- ✅索引失效的问题如何排查?
- ✅如何进行SQL调优?
- ✅区分度不高的字段建索引一定没用吗?
- ✅慢SQL的问题如何排查?
- ✅MySQL主从复制的过程
- ✅介绍一下InnoDB的数据页,和B+树的关系是什么?
- ✅MySQL的驱动表是什么?MySQL怎么选的?
- ✅MySQL的Hash Join是什么?
- ✅MySQL执行大事务会存在什么问题?
- ✅MySQL怎么做热点数据高效更新?
- ✅SQL中PK、UK、CK、FK、DF是什么意思?
- ✅什么是buffer pool?
- ✅buffer pool的读写过程是怎么样的?
- ✅什么是InnoDB的页分裂和页合并
- ✅MySQL自增主键用完了会怎么样?
- ✅执行计划中,key有值,还是很慢怎么办?
- ✅数据库乐观锁的过程中,完全没有加任何锁吗?
- ✅MySQL的binlog有几种格式
- ✅MySQL的并行复制原理
- ✅MySQL的深度分页如何优化
- ✅MySQL的limit+order by为什么会数据重复?
- ✅什么是数据库的主从延迟,如何解决?
- ✅什么是事务的2阶段提交?
- ✅介绍下MySQL 5.7中的组提交
- ✅为什么MySQL 8.0要取消查询缓存?
- ✅MyISAM 的索引结构是怎么样的,它存在的问题是什么?
- ✅MySQL中like的模糊查询如何优化
- ✅为什么不建议使用存储过程?
- ✅数据库怎么做加密和解密?
- ✅数据库加密后怎么做模糊查询?
- ✅where条件的顺序影响使用索引吗?
- ✅什么是MySQL的字典锁?
- ✅什么是OnlineDDL
- ✅为什么不推荐使用外键?
- ✅为什么MySQL会选错索引,如何解决?
- ✅唯一索引和主键索引的区别?
- ✅联合索引是越多越好吗?
- ✅阿里的数据库能抗秒杀的原理
- ✅一个查询语句的执行顺序是怎么样的?
- ✅on和where有什么区别?
- ✅InnoDB中的表级锁、页级锁、行级锁?
- ✅truncate、delete、drop的区别?
- ✅什么时候索引失效反而提升效率?
- ✅高并发情况下自增主键会不会重复,为什么?
- ✅什么情况会导致自增主键不连续?
- ✅Using filesort 能优化吗,怎么优化?
- ✅从 innodb 的索引结构分析,为什么索引的 key 长度不能太长?
- ✅MySQL用了函数一定会索引失效吗?
- ✅什么是索引合并,原理是什么?
- ✅a,b两个单独索引,where a=xx and b=xx 走哪个索引?为什么?
- ✅MySQL为什么会有存储(内存)碎片?有什么危害?
- ✅MySQL 中如何查看一个 SQL 的执行耗时
- ✅怎么比较两个索引的好坏?
- ✅MySQL 获取主键 id 的瓶颈在哪里?如何优化?
- ✅MySQL 为什么是小表驱动大表,为什么能提高查询性能?
- ✅什么是数据库的锁升级,Innodb 支持吗?
- ✅数据库扫表任务如何避免出现死循环
- ✅A,B,C的联合索引,按照 AB,AC,BC查询,能走索引吗?
- ✅什么是索引跳跃扫描
- ✅MySQL是AP的还是CP的系统?
- ✅MySQL的优化器的索引成本是怎么算出来的?
- ✅什么是ReadView,什么样的ReadView可见?
- ✅undolog会一直存在吗?什么时候删除?
- ✅二级索引在索引覆盖时如何使用MVCC?
- ✅MySQL的BLOB和TEXT有什么区别?
- ✅什么是MySQL的内存碎片?如何清理?
- ✅MySQL做索引更新的时候,会锁表吗?
- ✅MySQL如何实现行转列和列转行?
- ✅什么是前缀索引,使用的时候要注意什么?
- ✅limit的原理是什么?
- ✅a,b都有索引,select * from table where a = xx order by b。走哪个索引?
- ✅为啥 like %xx不走索引?like xx%xxx走索引吗?为啥?
- ✅MySQL的update语句什么时候锁行什么时候锁表
- ✅MySQL事务ACID是如何实现的?
- ✅一次insert操作,MySQL的几种log的写入顺序?
- ✅为什么要尽量避免使用select * ?
- ✅MySQL建了abc的联合索引,底层会建a,ab, abc这3个索引么?
- ✅MySQL如何实现不同隔离级别?
- ✅如果SQL中一定要有join,该如何优化?
- ✅表中只有a,b,c 三个字段,比较select * 与 select a,b,c有什么区别。
- ✅MySQL能保证数据100%不丢吗?
- ✅exists和in有什么区别?如何选择?
- ✅varchar(100)和varchar(10)有什么区别?
- ✅执行计划中的filtered的值有啥用?
Oracle
- ✅什么是视图,视图的作用是什么?
- ✅Oracle 和 MySQL 的区别是什么?如何选择?
- ✅阿里巴巴的去 IOE架构中为什么废弃 Oracle
- ✅Oracle 支持哪些索引类型?
- ✅什么是反向键索引,有什么用处?
- ✅介绍下函数索引、位图索引、空间索引?
- ✅Oracle 的事务隔离级别?
- ✅Oracle中如何实现行转列和列转行?
- ✅ROWNUM 和 ROW_NUMBER() 的区别是什么?
- ✅PL/SQL 是什么,为什么使用 PL/SQL 而不是 SQL?
- ✅Oracle为什么用B-树索引?
MyBatis
- ✅什么是ORM,有哪些常用框架?
- ✅MyBatis与Hibernate有何不同?
- ✅Mybatis的优点有哪些?
- ✅Mybatis是如何实现字段映射的?
- ✅#和$的区别是什么?什么情况必须用$
- ✅Mybatis插件的运行原理?
- ✅Mybatis的工作原理?
- ✅Mybatis的缓存机制
- ✅Mybatis用的什么连接池?
- ✅Mybatis 是否支持延迟加载?实现原理是什么?
- ✅Mybatis可以实现动态SQL么?
- ✅使用MyBatis如何实现分页?
- ✅RowBounds分页的原理是什么?
- ✅PageHelper分页的原理是什么?
- ✅MyBatis-Plus有什么用?
- ✅MyBatis-Plus的分页原理是什么?
Tomcat
- ✅Tomcat的启动流程是怎样的?
- ✅Tomcat中有哪些类加载器?
- ✅为什么Tomcat可以把线程数设置为200,而不是N+1?
- ✅Tomcat处理请求的过程是怎么样的?
- ✅过滤器和拦截器的区别是什么?
- ✅介绍一下Tomcat的IO模型?
- ✅Tomcat与Web服务器(如Apache)之间的关系是什么?
- ✅Tomcat的类加载机制是怎么样的?
Netty
- ✅为什么Netty适合做网络编程?
- ✅Netty性能好的原因是什么?
- ✅Netty的零拷贝是怎么实现的?
- ✅能不能说一说Netty的无锁化设计?
- ✅Netty的线程模型是怎么样的?
- ✅Netty如何解决TCP粘包、拆包的问题的?
- ✅Netty的Buffer为什么好用
- ✅说说 Netty 的对象池技术?
- ✅Netty有哪些序列化协议?
- ✅Netty 中用了哪些设计模式?
微服务
- ✅分布式和微服务的区别是什么?
- ✅什么是微服务架构?优势?特点?
- ✅SOA和微服务之间的主要区别是什么?
- ✅什么是康威定律?
- ✅如何进行微服务的拆分?
- ✅微服务架构的服务治理有哪些实现方案?
- ✅什么是DevOps?
- ✅微服务中的CI/CD了解吗?
- ✅听说过ServiceMesh吗?是什么?
- ✅灰度发布、蓝绿部署、金丝雀部署都是什么?
- ✅什么是微服务的循环依赖?
- ✅限流、降级、熔断有什么区别?
- ✅各个微服务之间,有哪些调用方式?
分布式
- ✅什么是分布式系统?和集群的区别?
- ✅什么是分布式系统的一致性?
- ✅什么是CAP理论,为什么不能同时满足?
- ✅什么是分布式BASE理论?
- ✅什么是拜占庭将军问题
- ✅什么是分布式事务中的两阶段提交(2PC)
- ✅分布式锁有几种实现方式?
- ✅什么是分布式事务?
- ✅常见的分布式事务有哪些?
- ✅什么是TCC,和2PC有什么区别?
- ✅什么是柔性事务?
- ✅如何基于MQ实现分布式事务
- ✅如何基于本地消息表实现分布式事务?
- ✅什么是最大努力通知?
- ✅最大努力通知&事务消息&本地消息表三者区别是什么?
- ✅分布式ID生成方案都有哪些?
- ✅怎么实现分布式Session?
- ✅什么是雪花算法,怎么保证不重复的?
- ✅分布式命名方案都有哪些?
- ✅什么是负载均衡,有哪些常见算法?
- ✅如何解决接口幂等的问题?
- ✅Leaf生成分布式ID的原理?
- ✅Seata的实现原理是什么
- ✅什么是一致性哈希?
- ✅TCC的空回滚和悬挂是什么?如何解决?
- ✅如何实现应用中的链路追踪?
- ✅实现一个分布式锁需要考虑哪些问题?
- ✅定时任务扫表的缺点有什么?
- ✅什么是Canal,他的工作原理是什么?
- ✅什么是分布式数据库,有什么优势?
- ✅锁和分布式锁的核心区别是什么?
- ✅TCC中,Confirm或者Cancel失败了怎么办?
- ✅TCC是强一致性还是最终一致性?
- ✅为什么不建议用数据库唯一性约束做幂等控制?
- ✅Seata的4种事务模式,各自适合的场景是什么?
- ✅Seata的AT模式的实现原理
- ✅Seata的AT模式和XA有什么区别?
- ✅Redis 的分布式锁和 Zookeeper 的分布式锁有啥区别?
- ✅Redis 分布式锁和zk分布式锁哪个对死锁友好?
- ✅什么是OAuth2?有什么用?
- ✅什么是事务消息,为什么需要事务消息?
- ✅详细介绍下号段模式生成分布式ID的原理和优缺点?
- ✅Seata的AT模式会不会出现脏读?为什么?
- ✅什么是雪花算法的时钟回拨问题,如何解决?
- ✅什么是分布式事务中的三阶段提交(3PC)
Redis
- ✅Redis是AP的还是CP的?
- ✅介绍一下Redis的集群模式?
- ✅什么是Redis的数据分片?
- ✅Redis 使用什么协议进行通信?
- ✅Redis 与 Memcached 有什么区别?
- ✅Redis为什么这么快?
- ✅Redis 支持哪几种数据类型?
- ✅Redis为什么要自己定义SDS?
- ✅Redis中的Zset是怎么实现的?
- ✅什么是GEO,有什么用?
- ✅Redis为什么被设计成是单线程的?
- ✅为什么Redis设计成单线程也能这么快?
- ✅为什么Redis 6.0引入了多线程?
- ✅为什么Lua脚本可以保证原子性?
- ✅Redis中的setnx命令为什么是原子性的
- ✅Redis 5.0中的 Stream是什么?
- ✅Redis的虚拟内存机制是什么?
- ✅Redis的持久化机制是怎样的?
- ✅Redis 的事务机制是怎样的?
- ✅Redis 的过期策略是怎么样的?
- ✅Redis的内存淘汰策略是怎么样的?
- ✅什么是热Key问题,如何解决热key问题
- ✅什么是大Key问题,如何解决?
- ✅什么是缓存击穿、缓存穿透、缓存雪崩?
- ✅什么情况下会出现数据库和缓存不一致的问题?
- ✅如何解决Redis和数据库的一致性问题?
- ✅为什么需要延迟双删,两次删除的原因是什么?
- ✅Redis如何实现延迟消息?
- ✅Redis如何实现发布/订阅?
- ✅除了做缓存,Redis还能用来干什么?
- ✅对于 Redis 的操作,有哪些推荐的 Best Practices?
- ✅如何用SETNX实现分布式锁?
- ✅如何用Redisson实现分布式锁?
- ✅什么是RedLock,他解决了什么问题?
- ✅为什么ZSet 既能支持高效的范围查询,还能以 O(1) 复杂度获取元素权重值?
- ✅Redisson的watchdog机制是怎么样的?
- ✅什么是Redis的渐进式rehash
- ✅如何基于Redisson实现一个延迟队列
- ✅介绍下Redis集群的脑裂问题?
- ✅Redis中key过期了一定会立即删除吗
- ✅Redis中有一批key瞬间过期,为什么其它key的读写效率会降低?
- ✅如何基于Redis实现滑动窗口限流?
- ✅Redis的Key和Value的设计原则有哪些?
- ✅Redisson和Jedis有啥区别?如何选择?
- ✅什么是Redis的Pipeline,和事务有什么区别?
- ✅Redis的事务和Lua之间有哪些区别?
- ✅Redisson的lock和tryLock有什么区别?
- ✅为什么Redis不支持回滚?
- ✅如何用Redis实现乐观锁?
- ✅watchdog一直续期,那客户端挂了怎么办?
- ✅如何用setnx实现一个可重入锁?
- ✅Redis实现分布锁的时候,哪些问题需要考虑?
- ✅Redis如何高效安全的遍历所有key
- ✅Redisson解锁失败,watchdog会不会一直续期下去?
- ✅Redis Cluster 中使用事务和 lua 有什么限制?
- ✅如何在 Redis Cluster 中执行 lua 脚本?
- ✅Redisson 中为什么要废弃 RedLock,该用啥?
- ✅Redisson 的 watchdog 什么情况下可能会失效?
- ✅Redisson如何保证解锁的线程一定是加锁的线程?
- ✅RDB和AOF的写回策略分别是什么?
- ✅Redis能完全保证数据不丢失吗?
- ✅Redis的事务和MySQL的事务区别?
- ✅Redis中hash结构比string的好处有哪些?
- ✅Redis 8.0有哪些新特性?
- ✅Redis中的setnx和setex有啥区别?
- ✅ZSet为什么在数据量少的时候用ZipList,而在数据量大的时候转成SkipList?
- ✅介绍下Redis中的ZipList和他的级联更新问题
- ✅Redis中的ListPack是如何解决级联更新问题的?
- ✅Redis的ZipList、SkipList和ListPack之间有什么区别?
- ✅了解Redis的内存碎片吗?
- ✅Redis中的hash和Java中的HashMap有啥区别?
- ✅Redisson里面的锁是怎么来防止误删的?
- ✅Redisson里面的锁是如何实现可重入的?
Dubbo
- ✅什么是RPC,和HTTP有什么区别?
- ✅什么场景只能用HTTP,不能用RPC?
- ✅什么是泛化调用?
- ✅什么是Dubbo的优雅停机,怎么实现的?
- ✅Dubbo支持哪些调用协议?
- ✅Dubbo服务发现与路由的概念有什么不同?
- ✅Dubbo的缓存机制了解吗?
- ✅Dubbo如何实现像本地方法一样调用远程方法的?
- ✅Dubbo的整体架构是怎么样的?
- ✅为什么RPC要比HTTP更快一些?
- ✅Dubbo支持哪些序列化方式?
- ✅Dubbo的服务调用的过程是什么样的?
- ✅有用过Dubbo的异步调用吗?
- ✅Dubbo支持哪些负载均衡策略?
- ✅Dubbo的SPI和JDK的SPI有什么区别?
- ✅为什么Dubbo不用JDK的SPI?
- ✅Dubbo 支持哪些服务治理?
Kafka
- ✅为什么要使用消息队列?
- ✅Kafka、ActiveMQ、RabbitMQ和RocketMQ都有哪些区别?
- ✅Kafka 为什么这么快?
- ✅Kafka的架构是怎么样的?
- ✅Kafka如何保证消息不丢失?
- ✅Kafka怎么保证消费只消费一次的?
- ✅什么是Kafka的重平衡机制?
- ✅Kafka如何实现顺序消费?
- ✅Kafka 几种选举过程简单介绍一下?
- ✅为什么Kafka没办法100%保证消息不丢失?
- ✅Kafka 消息的发送过程简单介绍一下?
- ✅Kafka 高水位了解过吗?为什么 Kafka 需要 Leader Epoch?
- ✅Kafka 为什么有 Topic 还要用 Partition?
- ✅介绍一下Kafka的ISR机制?
- ✅Kafka支持事务消息吗?如何实现的?
- ✅Kafka 中的Offset是什么?
- ✅Kafka为什么依赖Zookeeper,有什么用?
- ✅什么是Kafka的渐进式重平衡?
- ✅Kafka的消费者数量和分区数量可以不同吗?会发生什么?
- ✅MQ的重平衡会带来哪些问题?
- ✅Kafka如何实现批量消费?
- ✅Kafka的批量消费如何确保消息不丢?
- ✅Kafka如果丢消息了,可能的原因是什么?
- ✅介绍下Kafka的数据存储结构?
RocketMQ
- ✅RocketMQ的架构是怎么样的?
- ✅RocketMQ的事务消息是如何实现的?
- ✅RocketMQ如何保证消息的顺序性?
- ✅RocketMQ如何保证消息不丢失?
- ✅RocketMQ如何实现延时消息?
- ✅RocketMQ有几种集群方式?
- ✅RocketMQ消息堆积了怎么解决?
- ✅介绍一下RocketMQ的工作流程?
- ✅RocketMQ怎么实现消息分发的?
- ✅RocketMQ的消息是推还是拉?
- ✅用了RocketMQ一定能实现削峰的效果吗?
- ✅介绍下 RocketMQ 5.0中的 pop 模式
- ✅RocketMQ的事务消息和Kafka的事务消息有什么区别?
- ✅RocketMQ和Kafka一样有重平衡的问题吗?
- ✅RocketMQ如果丢消息了,可能的原因是什么?
- ✅RocketMQ如果重复消费了,可能是什么原因导致的?
- ✅普通消息、顺序消息的区别,在什么场景会用到?
RabbitMQ
- ✅rabbitMQ的整体架构是怎么样的?
- ✅RabbitMQ是怎么做消息分发的?
- ✅rabbitMQ如何实现延迟消息?
- ✅什么是RabbitMQ的死信队列?
- ✅RabbitMQ 是如何保证高可用的?
- ✅RabbitMQ如何实现消费端限流
- ✅RabbitMQ如何防止重复消费
- ✅如何保障消息一定能发送到RabbitMQ
- ✅RabbitMQ如何保证消息不丢
- ✅介绍下RabbitMQ的事务机制
配置中心
- ✅注册中心如何选型?
- ✅什么是Nacos,主要用来作什么?
- ✅Nacos是AP的还是CP的?
- ✅Nacos如何实现的配置变化客户端可以感知到?
- ✅Nacos能同时实现AP和CP的原理是什么?
- ✅Nacos 2.x为什么新增了RPC的通信方式?
- ✅Nacos的服务注册和服务发现的过程是怎么样的?
ElasticSearch
- ✅为什么要使用ElasticSearch?和传统关系数据库(如 MySQL)有什么不同?
- ✅ElasticSearch为什么快?
- ✅倒排索引是什么?
- ✅如何保证ES和数据库的数据一致性?
- ✅什么是ElasticSearch的深度分页问题?如何解决?
- ✅如何优化 ElasticSearch 搜索性能?
- ✅ES支持哪些数据类型,和MySQL之间的映射关系是怎么样的?
- ✅ES 不支持 decimal,如何避免丢失精度?
- ✅Elasticsearch支持事务吗?为什么?
- ✅ES 支持乐观锁吗?如何实现的?
Zookeeper
- ✅Zookeeper的典型应用场景有哪些?
- ✅Zookeeper的数据结构是怎么样的?
- ✅Zookeeper集群中的角色有哪些?有什么区别?
- ✅Zookeeper是CP的还是AP的?
- ✅Zookeeper是选举机制是怎样的?
- ✅什么是脑裂?如何解决?
- ✅如何用Zookeeper实现分布式锁?
- ✅Zookeeper的watch机制是如何工作的?
- ✅怎样使用Zookeeper实现服务发现?
- ✅Zookeeper是如何保证创建的节点是唯一的?
- ✅Zookeeper的缺点有哪些?
- ✅Zookeeper如何保证数据的一致性?
高性能
- ✅如何设计一个高性能的分布式系统
- ✅什么是QPS,什么是RT?
- ✅服务端接口性能优化有哪些方案?
- ✅什么是布隆过滤器,实现原理是什么?
- ✅什么是读写分离?如何实现?
- ✅读写分离遇到主从延迟怎么办?
- ✅说下什么是p90,p95,P99?
- ✅布隆过滤器有什么缺点,如何解决?
- ✅布隆过滤器无法删除的问题如何解决?
- ✅什么是布谷鸟过滤器,实现原理是什么?
- ✅如何进行线程池调优?
高可用
- ✅什么是SLA?
- ✅什么是冷备、热备,暖备?
- ✅如何设计一个高可用架构?
- ✅什么是异地多活?
- ✅什么是压测,怎么做压测?
- ✅什么是全链路压测?
- ✅压测如何避免影响线上用户?
- ✅单机压测到300QPS,10台就能抗住3000QPS吗?
高并发
- ✅如何设计一个能够支持高并发的系统?
- ✅什么是服务降级?
- ✅什么是熔断?
- ✅什么是预热?它有何作用?
- ✅什么是限流?常见的限流算法有哪些?
- ✅单机限流和集群限流的区别是什么?
- ✅什么是自适应限流?
- ✅什么是滑动窗口限流?
- ✅高并发场景中,乐观锁和悲观锁哪个更适合?
- ✅漏桶和令牌桶有啥区别?
本地缓存
- ✅本地缓存和分布式缓存有什么区别?
- ✅如何实现本地缓存?
- ✅你知道哪些缓存失效算法?
- ✅如何实现多级缓存?
- ✅如何保证本地缓存的一致性?
- ✅LRU 和 LFU 有啥区别?
- ✅如何实现多级缓存的一致性?
分库分表
- ✅什么是分库?分表?分库分表?
- ✅分区和分表有什么区别?
- ✅分表字段如何选择?
- ✅分表算法都有哪些?
- ✅分表后全局ID如何生成?
- ✅分库分表后会带来哪些问题?
- ✅分库分表后如何进行分页查询?
- ✅分库分表后,表还不够怎么办?
- ✅什么是数据倾斜,会带来哪些问题?如何解决?
- ✅分库分表的取模算法策略如何避免数据倾斜
- ✅分库分表之后的怎么进行join操作
- ✅分库分表的数量为什么一般选择2的幂?
- ✅ShardingJDBC有哪些分片策略,你用的哪个?
- ✅ShardingJDBC 在查询的时候如果没有分表键,他怎么样?
- ✅分库分表后怎么设计可以降低数据迁移的难度?
- ✅分库分表中,如何预估需要分多少个库?多少张表?
- ✅在分库分表时,如果遇到了对商品名称的模糊查询,要怎么处理?
- ✅为啥要全局分布式ID,每张表自增不行吗?
- ✅订单号用了基因法之后,二次分表怎么办?
定时任务
- ✅xxl-job如何保证一任务只会触发一次?
- ✅为什么定时任务可以定时执行?
- ✅Java中实现定时任务的几种方式
- ✅Java中Timer实现定时调度的原理是什么?
- ✅什么是时间轮?
- ✅实现一个定时任务,可以用什么数据结构及算法?
- ✅定时任务扫表的方案有什么缺点?
- ✅xxl-job 支持分片任务吗?实现原理是什么?
- ✅知道PowerJob吗,他和XXL-JOB有啥区别?
- ✅知道MapReduce动态分片任务吗?好处是什么?原理是什么?
文件处理
- ✅什么是POI,为什么它会导致内存溢出?
- ✅POI的如何做大文件的写入
- ✅为啥POI的SXSSFWorkbook占用内存更小?
- ✅如何针对大Excel做文件读取?
- ✅EasyExcel为啥内存占用小?
DDD
Maven&Git
- ✅Maven能解决什么问题?为什么要用?
- ✅Maven如何解决jar包冲突的问题?
- ✅Git和SVN有什么区别?
- ✅Git如何回滚代码?reset和revert什么区别?
- ✅jar包和war包有什么区别?
- ✅什么是fat jar?
- ✅Git的merge和rebase有什么区别?
IDEA
日志
- ✅为什么不能直接使用Log4j、Logback中的 API?
- ✅什么是分布式日志系统?
- ✅记录日志影响性能怎么办?
- ✅为什么logger.warn()之前要使用logger.isWarnEnabled()?
设计模式
- ✅什么是设计模式?有什么好处?
- ✅设计模式的7大基本原则有哪些?
- ✅使用哪种设计模式可以提高代码可维护性?
- ✅使用哪种设计模式可以提高代码的复用性?
- ✅你在工作中是如何使用设计模式的?
- ✅请简述MVC模式的思想
- ✅单例模式的多种写法
- ✅如何破坏单例模式?
- ✅为什么说枚举是实现单例最好的方式?
- ✅不使用锁如何实现线程安全的单例?
- ✅三种工厂模式的区别和特点
- ✅什么是不可变模式,有哪些应用?
- ✅什么是享元模式,有哪些具体应用?
- ✅String的设计,用到了哪些设计模式?
- ✅什么是责任链模式,有哪些应用?
- ✅什么是状态模式,有哪些应用?
- ✅策略模式和if-else相比有什么好处?
- ✅什么是观察者模式,有哪些应用?
- ✅什么是代理模式,有哪些应用?
- ✅什么是模板方法模式,有哪些应用?
- ✅针对天气预报变化时触发用户通知和推荐行程用什么设计模式?
单元测试
云计算
- ✅什么是云计算?
- ✅什么是公有云、私有云、混合云?
- ✅什么是IaaS、PaaS、SaaS?
- ✅什么是Serverless?
- ✅为什么云原生对应用的启动速度要求很高?
- ✅啥是无状态,为啥说Serverless是无状态的?
计算机网络
- ✅介绍一下OSI七层模型?
- ✅什么是TCP的粘包、拆包问题?
- ✅ARP 与 RARP 的区别是什么?
- ✅路由器与交换机的区别是什么?
- ✅什么是TCP三次握手、四次挥手?
- ✅TCP是如何保证可靠传输的?
- ✅什么是HTTP/3的QUIC协议?
- ✅为什么需要HTTP/2,他解决了什么问题?
- ✅HTTP/2存在什么问题,为什么需要HTTP/3?
- ✅Cookie,Session,Token的区别是什么?
- ✅HTTPS和HTTP的区别是什么?
- ✅浏览器输入www.taobao.com回车之后发生了什么
- ✅对称加密和非对称加密有什么区别?
- ✅简单介绍一下DNS?
- ✅ping的原理是什么?
- ✅什么是IPV6?和IPV4有什么区别?
- ✅什么是正向代理和反向代理?
- ✅什么是跨域访问问题,如何解决?
- ✅什么是CDN,为什么他可以做缓存?
- ✅TCP和UDP的区别是什么?
- ✅如何做网络抓包?
- ✅什么是网络分区?
- ✅什么是TCP重传率,有什么用?如何查看?
- ✅ping为什么不需要端口?
- ✅介绍下TCP是如何实现拥塞控制的?
- ✅什么是“墙”?“梯子”的原理是什么?
- ✅介绍下什么是长连接和短连接?
- ✅HTTPS建立连接的时候是几次握手?
- ✅HTTP 301跳转和302跳转有什么区别?
- ✅HTTP不同版本之间的区别?
网络安全
- ✅什么是DDoS攻击?如何防止被攻击?
- ✅什么是CSRF攻击?XSS攻击?
- ✅什么是DNS污染?DNS劫持?
- ✅MD5是加密算法吗?绝对安全吗?
- ✅什么是水平越权?如何防止
- ✅加密&解密、加签&验签做的事情一样吗?
- ✅什么是中间人攻击?
- ✅什么是SQL注入攻击?如何防止
- ✅什么是撞库、拖库和洗库?
- ✅为什么预编译可以避免SQL注入?
- ✅什么是垂直越权,如何防止?
- ✅什么是国密算法?SM2/SM4/SM3有什么区别?
操作系统
- ✅计算机打开电源操作系统做了什么?
- ✅同步、异步、阻塞、非阻塞怎么理解?
- ✅操作系统的IO模型有哪些?
- ✅如何理解select、poll、epoll?
- ✅什么是零拷贝?
- ✅什么是分段和分页?
- ✅负载(Load)和CPU利用率之间有什么区别?
- ✅进程,线程和协程的区别
- ✅什么是全双工和半双工
- ✅进程间通信方式有哪些?
- ✅什么是用户态、内核态?如何切换的?
- ✅正在持续写入的日志如何清理?
- ✅什么是Load(负载)?
- ✅什么是CPU利用率?怎么算的?
- ✅什么是时间片
- ✅你掌握哪些Linux常用命令?
- ✅什么是操作系统的多级缓存
- ✅什么是MESI缓存一致性协议
- ✅GPU和CPU区别?为什么挖矿、大模型都用GPU?
- ✅线程的实现方式有哪些?
- ✅IO多路复用和多线程有什么区别?
- ✅为什么按位与运算要比取模运算高效?
- ✅什么是Page Cache,他的读写过程是怎么样的?有什么优缺点?
- ✅什么是 IO 密集,什么是 CPU 密集?
- ✅给你一个文本文件,每一行包含一个 QQ号码,请用linux命令进行去重?
- ✅什么是“孤儿进程”,什么是“僵尸进程”?
- ✅软链接和硬链接的区别?
- ✅常见的进程调度算法有哪些?
- ✅Linux下rm正在写入的文件会发生什么?
- ✅write和fsync的区别是什么?
数据结构
- ✅数组和链表有何区别?
- ✅栈和队列的区别
- ✅什么是树?了解哪些树结构?
- ✅二叉树的遍历有几种方式?
- ✅什么是前缀树,有什么作用?
- ✅什么是堆?什么情况下要用堆?
- ✅什么是B+树,和B树有什么区别?
- ✅什么是红黑树?
- ✅什么是图?有向图和无向图的区别是什么?
- ✅什么是BitMap?有什么用?
- ✅什么是小顶堆,可以用在哪些场景?
- ✅海量数据查找最大的 k 个值,用什么数据结构?
容器
- ✅为什么要使用Docker?
- ✅有了Docker为啥还需要k8s?
- ✅容器和虚拟机的区别是什么?
- ✅Dockerfile 是什么?它通常包含哪些指令?
- ✅Docker 的常用命令有哪些?
- ✅什么是 Docker Compose?
架构设计
- ✅常见的架构设计原则有哪些?
- ✅架构设计中最重要的三个要素是什么?
- ✅什么是技术债务?你怎么理解它?
- ✅架构是设计出来的还是演进出来的?
- ✅什么样的架构才算是好的架构?
- ✅为什么说做架构其实就是做权衡?
- ✅亿级商品如何存储?
- ✅如何做技术选型?
- ✅微服务的拆分有哪些原则?
- ✅什么是单元化架构?
- ✅什么是银弹,什么叫做没有银弹?
- ✅MVC和三层架构有什么区别?
- ✅能不能介绍下你项目的整体架构情况
编程题
- ✅如何用队列实现一个栈?
- ✅如何用栈实现一个队列?
- ✅有一个包含N个整数的数组,请编写一个算法,找到其中的两个元素,使它们之差最小。时间复杂度必须为O(n)。
- ✅实现一个LRU缓存淘汰策略,支持get和put操作
- ✅判断101-200之间有多少个质数,并输出所有质数
- ✅请分别写出一个Java堆、栈、元空间溢出的代码
- ✅给定一个二叉搜索树,请找出其中第k小的元素
- ✅并发调三个方法,实现只要有一个成功就立即成功,否则等都失败才失败
- ✅两个线程,一个打印奇数,一个打印偶数,然后顺序打印出1-100
- ✅两个线程,一个打印123,一个打印ABC,交替输出1A2B3C
- ✅10个线程模拟赛马,所有马就绪后才能开跑,所有马到达终点后裁判宣布赛马成绩
- ✅线程池中怎么设置超时时间?一个线程如果要运行10s,怎么在1s就抛出异常
- ✅五个线程abcde,想先执行a,在执行bcd,bcd执行完后执行e如何做?
- ✅如果让你实现一个字符串的equals方法,你会如何实现?
智商题
- ✅村庄有个约定,生男孩就结束,生女孩就继续生,直到生出男孩为止,若干年后,这个村子男女比例是多少?
- ✅假设你有一个乒乓球盒子,里面有 3 个白球和 2 个黑球。从盒子中抽取一个球,放回后再抽取一个球。两次抽取得到的球颜色不同的概率是多少?
- ✅有8个球,其中7个重量相同,另一个球比其他球重,现在只有一个天平,请问最少需要称几次一定能找到那个比其他球重的球?
- ✅有两个水桶,容量分别为5升和3升,请问如何使用这两个桶得到4升的水?
- ✅有一堆桃子,猴子第一天吃了一半加一个,第二天又吃了一半加一个,… ,到第10天时剩下一个桃子,问这原来有多少个?
- ✅1000瓶药水,1瓶有毒药,最少需要几只小白鼠一定能够找出?
- ✅一个天平,7g和2g砝码各一个,将140g盐分成90g和50g,需要称多少次?
非技术问题
- ✅你最近在看什么书?
- ✅你觉得你有什么缺点?
- ✅你还有什么想要反问我的吗?
- ✅你最近在学什么新技术吗?
- ✅对自己的未来发展有什么想法和计划
- ✅如何在团队合作中解决冲突和达成共识
- ✅最有成就感的项目或工作经历
- ✅离职的原因是什么
- ✅你对加班怎么看待?
- ✅能不能说一下你对自己的评价
- ✅你作为项目组长,有制定过哪些规范吗?
- ✅有没有别的Offer?有没有别的面试?
其他
- ✅你平常是怎么查看日志和做分析的?
- ✅DO、DTO、VO都是干什么的?
- ✅CodeReview都会关注哪些问题?
- ✅什么是状态机,能描述一下状态机的实现原理吗?
- ✅什么是Web 3.0?
- ✅什么是闰秒?
- ✅Java中的随机是真随机吗?
- ✅什么是Java Dump,如何获取?
- ✅jps命令的作用是什么?
- ✅jstack命令的作用是什么?
- ✅jmap命令的作用是什么?
- ✅jhat有什么用,如何用他分析堆dump
- ✅javap命令的作用是什么?
- ✅jstat命令的作用是什么?
- ✅什么是流程引擎,请问流程引擎有什么优缺点?
- ✅SaaS系统中,多租户如何实现?
其他专属内容
- 2023网易技术分享
- 大厂程序员能力模型
- 大厂对学历的要求是什么?
- 为啥我不建议使用@Transactional事务
- 阿里的简历多久可以投递一次?次数多了有没有影响?可以同时进行吗?
- 为啥我觉得应该谨慎使用Lombok
- 交易主链路提供风控决策要求RT 5ms的技术方案
- 什么是隐私计算?
面经实战
- ✅26届,阿里后端2面
- ✅26届,百度一面&二面 美团一面
- ✅26届,双一流硕士,2段大厂实习
- ✅3年经验,985本科,电商财务相关业务
- ✅4年经验,上海某跨境电商,千万级大表经验
- ✅10年,深圳证券公司,系统架构组架构师,监控平台、电商平台,秒杀
- ✅2本,9年经验(6-7年服务端),停车管理系统
- ✅2年985硕,直播业务,redis,kafka,
- ✅6年经验,资产后台,汽车金融(贷款)SaaS
- ✅3年经验,2本,物流调度系统,mq,mysql
- ✅工作1年,大数据开发平台,seata贡献者
- ✅26届,985,12306项目,redis,多线程
- ✅工作8年,游戏中厂,Redis,分布式
- ✅工作3年,城市停车项目,保险理赔(财&人身)&电服业务
- ✅工作6年,211本,2手平台,卖家业务,结算
- ✅最强应届生,JVM,计算机网络
- ✅工作7年,2家大厂经验,下单&导购核心开发
- 24届,美团1-3面面经
- ✅22年毕业,培训了2个月Java,多线程,Spring
- ✅5年经验,流计算引擎、配置中心、流程编排、RPA
- ✅工作3年,分布式项目,实时数据分析功能
- ✅7年后端技术专家,清结算,资损防控,架构设计
- ✅985应届生,并发编程底层原理
- ✅工作2年,电商网站开发,负责购物车、详情页
- ✅工作7年,SaaS公司,架构师,技术负责人
- ✅工作4年,自研流程引擎项目
- ✅工作5年,主要做计费项目
- ✅字节支付1-2-3-hr面
- ✅23年毕业,电商运营平台,mysql,mq,redis
- ✅3年经验,智慧园区,mysql,Redis
- ✅菜鸟1-3面
- ✅平安一面
- ✅顺丰一面
- 阿里二面
- ✅阿里一面
- ✅百度二面
- ✅百度一面
- 滴滴二面
- 滴滴一面
- 拼多多二面
- 拼多多一面
- 猿辅导一面
- ✅白龙马科技2面
- ✅字节本地生活
- 阿里本地生活一面
- ✅白龙马科技一面
- ✅PDD海外用增一面
- ✅PDD海外用增二面
- ✅工作4年,供应链相关,分库分表、分布式锁
- 新增面经