最强应届生,JVM,计算机网络

面试者背景 :::warning 今日面试者:双非24届,准备春招,缓存组件项目,抖音短视频项目。 挑一个最复杂的模块介绍下流程。发视频&获得视频列表。MinIO,如何实现刷过的视频不会再刷到。 如果视频特别大,会做压缩吗?这两个模块你觉得哪里还能优化? 敏感词过滤怎么实现的?除了前缀树还有其他的吗?DFA算法知道吗? 登录密码增强怎么做的?MD5是加密算法吗?为啥可以防止彩虹表攻击?随机加盐、多次hash、 对称加密和非对称加密区别是啥? 视频的唯一的URL地址生成方式?雪花算法。为啥不用uuid?雪花算法用的哪个工具类? 进程和线程、协程有啥区别?Java是多进程还是多线程,Java的线程是如何实现的知道吗。什么语言支持协程?go、java 进程间通信方式有哪些?管道(半双工和全双工区别)、CPU和GPU有啥区别?为啥大模型训练用GPU。TCP为啥需要三次握手?TCP对头阻塞是啥?能解决吗?ping的原理是什么?ping localhost没网吗?ping需要端口吗? CMS的垃圾回收过程。为啥要分成4步。为啥初始标记和重新标记需要STW?什么东西可以当做GC Root。跨代引用怎么办?fullgc和younggc都会吗? 安全点了解吗?如果有一段代码进不了安全点怎么办?什么是安全区域?除了GC还有其他场景用安全点吗?锁降级、Dump、jit、热替换 Java的类加载机制。双亲委派模型。有哪些类加载器?bootstrap、ext、app,哪个版本是这样的?后面有变化吗? JDK 8以后的版本有哪些新特性?模块化知道吗?ZGC了解吗?G1知道吗,和CMS区别?位置、算法、AOT编译知道吗? 设计模式用过吗?多个支付渠道的实现,用什么设计模式实现?策略+模板+工厂 频繁FullGC排查如何做?dump、MAT。如何获取dump?dump之前发生了GC怎么办?不做dump能定位fullgc原因吗? ::: 题目解析 :::color4 登录密码增强怎么做的?MD5是加密算法吗?为啥可以防止彩虹表攻击?随机加盐、多次hash、 对称加密和非对称加密区别是啥? ::: ✅MD5是加密算法吗?绝对安全吗? ✅对称加密和非对称加密有什么区别? ✅什么是对称加密和非对称加密? :::color4 视频的唯一的URL地址生成方式?雪花算法。为啥不用uuid?雪花算法用的哪个工具类? ::: ✅什么是UUID,能保证唯一吗? ✅什么是雪花算法,怎么保证不重复的? :::color4 进程和线程、协程有啥区别?Java是多进程还是多线程,Java的线程是如何实现的知道吗。什么语言支持协程?go、java 进程间通信方式有哪些?管道(半双工和全双工区别)、CPU和GPU有啥区别?为啥大模型训练用GPU。 ::: ✅进程,线程和协程的区别 ✅JDK21 中的虚拟线程是怎么回事? ✅进程间通信方式有哪些? ✅什么是全双工和半双工 ✅GPU和CPU区别?为什么挖矿、大模型都用GPU? :::color4 TCP为啥需要三次握手?TCP对头阻塞是啥?能解决吗?ping的原理是什么?ping localhost没网吗?ping需要端口吗? ::: ✅什么是TCP三次握手、四次挥手? ✅为什么需要HTTP/2,他解决了什么问题? ✅ping的原理是什么? :::color4 CMS的垃圾回收过程。为啥要分成4步。为啥初始标记和重新标记需要STW?什么东西可以当做GC Root。跨代引用怎么办?fullgc和younggc都会吗? ::: ✅介绍下CMS的垃圾回收过程 ✅为什么初始标记和重新标记需要STW,而并发标记不需要? ✅什么是跨代引用,有什么问题? :::color4 安全点了解吗?如果有一段代码进不了安全点怎么办?什么是安全区域?除了GC还有其他场景用安全点吗?锁降级、Dump、jit、热替换 ::: ✅什么是safe point,有啥用? :::color4 Java的类加载机制。双亲委派模型。有哪些类加载器?bootstrap、ext、app,哪个版本是这样的?后面有变化吗? ::: ✅Java中类加载的过程是怎么样的? ✅JDK1.8和1.9中类加载器有哪些不同 :::color4 JDK 8以后的版本有哪些新特性?模块化知道吗?ZGC了解吗?G1知道吗,和CMS区别?位置、算法、AOT编译知道吗? ...

March 22, 2026 · 1 min · santu

22年毕业,培训了2个月Java,多线程,Spring

面试者背景 :::warning 22年毕业,培训了Java 2个月,双非二本,非科班 怎么理解面向对象?什么是多态?Java是值传递还是引用传递?值传递 AQS介绍一下?state是什么类型,state的修改是怎么改的?state=1表示什么? AQS有哪些具体实现?reentrantLock和synchronized区别是啥? 公平锁和非公平锁区别是啥?公平锁的缺点?reentrantLock是如何实现公平锁和非公平锁的? 你觉得用synchronized和reentrant哪个好?synchronized锁的是什么?锁对象和锁类有区别吗? 同一个类中有两个synchronized方法,能被两个线程同时执行吗?同一个线程可以吗?重入怎么判断?为啥要做成可重入?死锁了解么?什么情况会发生死锁?如何解决死锁的问题? 如何创建一个线程?子线程抛异常,主线程能捕获到吗?start和run区别是啥 主子线程的执行顺序是怎么样的?守护线程知道吗? 实现功能:统计Spring的某个bean中的某个方法被调用多少次?如果不让改动bean的类呢? 用过spring中的哪些注解?@Service、@Compotent区别是啥? 同一个接口有多个实现,如何指定该注入哪个实现? SpringEvent用过吗?IOC控制反转是啥意思?把什么反转了,谁反转给谁了? Spring有几种注入方式?平常用哪个?字段注入IDEA有没有给警告? Spring和SpringBoot最大的区别是啥?简化开发,内置web服务器?内置了哪些web服务器? 讲讲Spring的循环依赖问题?二级缓存就够了? Mysql主键一定是自增的吗?建表一定要有主键吗?隐藏row_id干嘛用的?聚簇索引 如果没有创建主键,一定会创建隐藏主键吗?如果有这时候有唯一键一定就不会了吗? 主键用自增ID和UUID哪个好?自增ID有缺点吗? 分库分表字段怎么选的,雪花算法?按照ID分表?查询怎么办? 日志输出用的什么框架,slf4j只是个门面,日志怎么输出的? Maven出现了jar冲突,该怎么解决?删一个, ::: 题目解析 :::color4 怎么理解面向对象?什么是多态?Java是值传递还是引用传递?值传递 ::: ✅如何理解面向对象和面向过程? ✅Java是值传递还是引用传递? :::color4 AQS介绍一下?state是什么类型,state的修改是怎么改的?state=1表示什么? AQS有哪些具体实现? ::: ✅如何理解AQS? :::color4 reentrantLock和synchronized区别是啥? 公平锁和非公平锁区别是啥?公平锁的缺点?reentrantLock是如何实现公平锁和非公平锁的? ::: ✅synchronized和reentrantLock区别? ✅公平锁和非公平锁的区别? :::color4 你觉得用synchronized和reentrant哪个好?synchronized锁的是什么?锁对象和锁类有区别吗? ::: ✅synchronized锁的是什么? :::color4 同一个类中有两个synchronized方法,能被两个线程同时执行吗?同一个线程可以吗?重入怎么判断?为啥要做成可重入?死锁了解么?什么情况会发生死锁?如何解决死锁的问题? ::: ✅什么是可重入锁,怎么实现可重入锁? ✅什么是死锁,如何解决? :::color4 如何创建一个线程?子线程抛异常,主线程能捕获到吗?start和run区别是啥 主子线程的执行顺序是怎么样的?守护线程知道吗? ::: ✅创建线程有几种方式? ✅run/start、wait/sleep、notify/notifyAll区别? ✅为什么不能在try-catch中捕获子线程的异常? https://www.yuque.com/hollis666/ec96i7/dlg6vw :::color4 实现功能:统计Spring的某个bean中的某个方法被调用多少次?如果不让改动bean的类呢? 用过spring中的哪些注解?@Service、@Compotent区别是啥? 同一个接口有多个实现,如何指定该注入哪个实现? ::: ✅如何统计一个Bean中的方法调用次数 ✅Spring中@Service 、@Component、@Repository等注解区别是什么? @Qualifier注解 :::color4 SpringEvent用过吗?IOC控制反转是啥意思?把什么反转了,谁反转给谁了? ...

March 22, 2026 · 1 min · santu

24届,美团1-3面面经

候选人是北京某211大学的,参加了24届美团的面试,目前已经完成了1、2面及HR面。 一面 自我介绍 挑一个项目介绍一下 说一下你对计算机网络的了解 你有了解过Socket编程吗 了解Netty吗?面试官说如果要做 Java,建议去了解一下 Netty。 说一下你对操作系统的了解(感觉面试官问的问题都比较大) 了解 JVM 吗 JVM的内存模型 CMS如何优化空间 如果我要在 JVM 上跑一个项目,JVM 参数一般怎么设置? 什么时候用 G1 比 CMS 更好 了解线程池吗 ThreadPoolExecutor参数的了解?哪些参数比较重要? MySQL 索引 B+树和B树的性能谁更好 写题:给一个数组,输出前 N 大的元素(快排思想,堆排思想,ACM模式) 有什么兴趣爱好 学习方法 反问 一面基本上是纯八股,从计算机网络到JVM、再到线程池及MySQL,最后来一道算法题。整体难度都不大,以上这些算是大厂的常规面试题目,并没有特别为难候选人。 ...

March 22, 2026 · 1 min · santu

工作7年,2家大厂经验,下单&导购核心开发

面试者背景 :::warning 7年,Java后端,2家大厂工作各3****年,下单页、订单、性能,稳定性,民宿业务,导购、页面耗时优化, 导购页面性能优化方案,有哪些?有哪些技术手段?链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询,completableFuture, 如果外部接口的RT无法保证,如何处理?弱依赖、降级。比如评价没查到,如何降级? 如果有一个外部接口必要降级,你自己会怎么做? completableFuture用了它的什么功能?流式编程,他和executorService****区别是啥?线程窃取, 导购这部分的难点?性能,复用性, 分库分表做过吗?分库分表之后全局ID如何做的?雪花算法(时间戳、机器码、业务类型、标记位),时钟回拨问题?分表字段如何选的?分表算法是什么?假如128分表不够了怎么办?再扩容**+**迁移、数据清理。业务不中断情况下数据迁移如何做?存量迁移和增量双写之间如何避免丢数据? 如果有一个大的商户,导致数据倾斜,如何解决? **幂等是什么?如何保证读幂等?读用做幂等吗?写请求的幂等如何保证?加锁、校验、执行。加锁用什么锁?不加锁有啥问题?如果有唯一性约束了,还需要加锁吗?f(x)= **f(f(x)) Redis****实现分布锁的时候,哪些问题需要考虑?超时时间、redisson(watchdog)、redlock解决的是什么问题?拿到锁的机器挂了会有啥问题吗? **工作7年来,遇到的最大挑战是什么?稳定性,衡量稳定性指标?****SLA,**几个九(宕机时间)、 设计一个高可用的架构考虑哪些方案?异地多活、微服务、限流熔断降级、 限流、降级,熔断区别是啥?限流保护自己、给外部接口降级、 压测做过吗?什么是全链路压测?如何避免压测数据影响正常数据?压测标、影子表。压测标自己识别吗? 大促除了压测,预案怎么做的?大促封网状态,如何保证预案能执行?预案开关、 线上问题排查案例讲一个。Fullgc,如何用arthas定位到那个大的list的? ::: 题目解析 :::color4 导购页面性能优化方案,有哪些?有哪些技术手段?链路梳理、流程优化(异步)、代码性能优化、外调接口异步,线程池并行查询,completableFuture, 如果外部接口的RT无法保证,如何处理?弱依赖、降级。比如评价没查到,如何降级? 如果有一个外部接口必要降级,你自己会怎么做? completableFuture用了它的什么功能?流式编程,他和executorService区别是啥?线程窃取, 导购这部分的难点?性能,复用性, ::: ✅使用CompletableFuture完成并发编排,提升接口性能 ✅和外部机构交互如何防止被外部服务不可用而拖垮 ✅限流、降级、熔断有什么区别? :::color4 分库分表做过吗?分库分表之后全局ID如何做的? 雪花算法?(时间戳、机器码、业务类型、标记位),时钟回拨问题?分表字段如何选的?分表算法是什么? 假如128分表不够了怎么办?再扩容+迁移、数据清理。 业务不中断情况下数据迁移如何做?存量迁移和增量双写之间如何避免丢数据? 如果有一个大的商户,导致数据倾斜,如何解决? ::: ✅分表后全局ID如何生成? ✅什么是雪花算法,怎么保证不重复的? ✅什么是数据倾斜,会带来哪些问题?如何解决? :::color4 幂等是什么?如何保证读幂等?读用做幂等吗?写请求的幂等如何保证?加锁、校验、执行。加锁用什么锁?不加锁有啥问题?如果有唯一性约束了,还需要加锁吗?f(x)= f(f(x)) ::: ✅如何解决接口幂等的问题? :::color4 Redis实现分布锁的时候,哪些问题需要考虑?超时时间、redisson(watchdog)、redlock解决的是什么问题?拿到锁的机器挂了会有啥问题吗? ::: ✅如何用Redisson实现分布式锁? ✅什么是RedLock,他解决了什么问题? :::color4 工作7年来,遇到的最大挑战是什么?稳定性,衡量稳定性指标?SLA,几个九(宕机时间)、 ::: ✅什么是SLA? :::color4 设计一个高可用的架构考虑哪些方案?异地多活、微服务、限流熔断降级、 限流、降级,熔断区别是啥?限流保护自己、给外部接口降级、 ::: ✅如何设计一个高可用架构? ✅限流、降级、熔断有什么区别? :::color4 压测做过吗?什么是全链路压测?如何避免压测数据影响正常数据?压测标、影子表。压测标自己识别吗? 大促除了压测,预案怎么做的?大促封网状态,如何保证预案能执行?预案开关、 ::: ✅什么是全链路压测? :::color4 线上问题排查案例讲一个。Fullgc,如何用arthas定位到那个大的list的? ::: ✅频繁FullGC问题排查 ...

March 22, 2026 · 1 min · santu

5年经验,流计算引擎、配置中心、流程编排、RPA

面试者背景 5年经验,做过:低代码、组件、k8s开发,流计算引擎、配置中心、流程编排、RPA 面试过程 :::warning 为什么不用MQ,而是用Redis造轮子?消息丢的问题怎么解决? Redis的集群模式是怎么样的?挂了就挂了?你了解哪些集群模式? Redis的Stream底层实现原理与数据结构。唯一消息ID和内容,消费者。 Redis的Stream的消息怎么避免重复消费?XACK、XPENDING、XREADGROUP Redis的Stream有重平衡的机制吗? 为啥要造轮子搞个配置中心?AP的还是CP的? 配置数据发生变化,客户端是如何感知到的?长轮询。 除了长轮询还有其他的方案吗?区别是啥?实时性、socket.io是长连接吗? 有高并发经验吗?高可用有保障吗?做了哪些事情保证高可用?集群架构、 SLA标准是什么? 流量突增100倍,如何解决?流量来源分析、限流(令牌桶)、 介绍下令牌桶的原理,为啥令牌桶可以应对突发流量?漏桶如果出现突发流量会怎么样 压测怎么做的?要做一次压测的步骤怎么样的? 压测怎么来探测系统水位? ::: 题目解析 :::color4 为什么不用MQ,而是用Redis造轮子?消息丢的问题怎么解决? ::: 造轮子,一定要能说清楚: 1、为什么造轮子 2、已有的轮子为啥不能用 3、你造的轮子有什么好处 4、你造的轮子缺点是什么 5、已有的轮子中的XX特性让你实现你怎么做 :::color4 Redis的集群模式是怎么样的?挂了就挂了?你了解哪些集群模式? Redis的Stream底层实现原理与数据结构。唯一消息ID和内容,消费者。 Redis的Stream的消息怎么避免重复消费?XACK、XPENDING、XREADGROUP Redis的Stream有重平衡的机制吗? ::: ✅介绍一下Redis的集群模式? ✅Redis 5.0中的 Stream是什么? :::color4 为啥要造轮子搞个配置中心?AP的还是CP的? 配置数据发生变化,客户端是如何感知到的?长轮询。 除了长轮询还有其他的方案吗?区别是啥?实时性、socket.io是长连接吗? ::: 造了个配置中心的轮子,那么就需要能讲清楚,你的配置中心是怎么做的,一些方案是如何做的选择。 ✅Nacos是AP的还是CP的? ✅Nacos如何实现的配置变化客户端可以感知到? :::color4 有高并发经验吗?高可用有保障吗?做了哪些事情保证高可用?集群架构、 ::: ✅如何设计一个高可用架构? :::color4 流量突增100倍,如何解决? ::: ✅如果你的业务量突然提升100倍QPS你会怎么做? :::color4 介绍下令牌桶的原理,为啥令牌桶可以应对突发流量?漏桶如果出现突发流量会怎么样 ::: ✅什么是限流?常见的限流算法有哪些? :::color4 压测怎么做的?要做一次压测的步骤怎么样的? 压测怎么来探测系统水位? ::: ✅什么是压测,怎么做压测?

March 22, 2026 · 1 min · santu

7年后端技术专家,清结算,资损防控,架构设计

面试者背景 Java7年,技术专家,供应链财务,开发+设计+管理,应收应付\清结算\dubbo,架构设计,资损防控有经验心得。 面试过程 :::warning 资损防控的平台的介绍。如何实现的?事前事中事后 事前:反查上游系统,做校验。(事务发消息,上游回滚了?) 事后:大数据平台,离线数据核对 事中:唯一键做幂等,分布式锁(脑裂?),乐观锁,(上游的后门,bops入口?) 你的系统做了很多反查的逻辑,帮上游系统做防错,这种高耦合的方案真的好吗? 校验规则的配置,脚本校验。 有考虑过遇到什么样的问题,或者业务上有什么变化后会考虑新的方案吗(准实时同步、准实时核对), 分布式锁会不会导致并发度降低?B端系统没有高并发? 分布式系统的数据一致性如何保证的?TCC最终一致性,还有其他的方案吗? 为什么不让下游提供一个原子性的冻结并转账接口? Seata,2PC 3PC XA, 消息最终一致性,有哪些点需要的呢?有哪些问题需要考虑? 下游系统接受到消息的时候会落库么?如何防止消息的重复消费? 二阶段提交和三阶段提交有什么区别?解决什么问题呢? 二阶段提交和TCC是一回事么? rocketMQ如何保证消息不丢的呢?异步发送、异步刷盘还能保证消息不丢吗? MQ的顺序消息是如何保证有序的?接收方先接收到了后发送的消息,这种怎么办? 假如让你实现一个消息队列,会如何实现?考虑哪些问题呢? 消息的消费会采用推还是拉呢?消息的推的功能如何实现呢?注册监听器到MQ上? 消息中间件和消费者网络这块是如何处理呢? ::: 题目解析 :::color4 资损防控的平台的介绍。如何实现的?事前事中事后 事前:反查上游系统,做校验。(事务发消息,上游回滚了?) 事后:大数据平台,离线数据核对 事中:唯一键做幂等,分布式锁(脑裂?),乐观锁,(上游的后门,bops入口?) ::: 这部分是因为候选人主要做了个资损防控平台,并且简历&自我介绍中提到了有资损防控相关经验,所以问了一下关于资损防控的细节,主要分事前、事中和事后。 事务消息:https://www.yuque.com/hollis666/ec96i7/abxh7z 数据核对:https://www.yuque.com/hollis666/ec96i7/vh0msbr3qrqzfrfm 幂等处理:https://www.yuque.com/hollis666/ec96i7/gz2qwl :::color4 你的系统做了很多反查的逻辑,帮上游系统做防错,这种高耦合的方案真的好吗? 校验规则的配置,脚本校验。 有考虑过遇到什么样的问题,或者业务上有什么变化后会考虑新的方案吗(准实时同步、准实时核对), ::: 这里面试者说自己在和上游交互的时候,自己做了很多反查的逻辑来确保数据一致性及做资损防控。所以这里抛出个问题,毕竟他工作7年,所以问问他,自己有没有想过更好的方案。 这也是很多人平时不会考虑的问题,其实很多时候,应该跳出来看一看,站在第三方的视角看看自己已有的方案是否最优。 这里其实涉及到一个领域边界的问题,有些能力强的开发,总想着啥都自己多做一点,但是其实,我们应该想清楚,有些东西,到底放在哪里做才合适。让他该放在哪里就放在哪里。要有清晰的系统边界。 :::color4 分布式锁会不会导致并发度降低?B端系统没有高并发? ::: 分布式锁是一定会降低并发度的,这没啥说的,锁的机制就是要做排队,排队了并发就会有所影响。 :::color4 分布式系统的数据一致性如何保证的?TCC最终一致性,还有其他的方案吗? 为什么不让下游提供一个原子性的解冻并转账接口? ::: 分布式事务:https://www.yuque.com/hollis666/ec96i7/yr0lu6 这里候选人说下游提供了一个解冻接口和转账接口,有的是会出现解冻了转账失败的问题。其实,这就是我们作为工作7年的同学,要有的架构思维,其实只需要下游提供一个原子性的 解冻并转账 接口就能很大程度上解决这个问题了。而且对于下游系统来说,他们做这个即合理有简单。而这个问题如果交给上游系统做,那一定是很复杂的。 :::color4 消息最终一致性,有哪些点需要的呢?有哪些问题需要考虑? 下游系统接受到消息的时候会落库么?如何防止消息的重复消费? ::: 消息重复问题:https://www.yuque.com/hollis666/ec96i7/paqecpn87o0v6np5 :::color4 二阶段提交和三阶段提交有什么区别?解决什么问题呢? 二阶段提交和TCC是一回事么? ::: 2PC&3PC:https://www.yuque.com/hollis666/ec96i7/du7xnm 2PC 和 TCC:https://www.yuque.com/hollis666/ec96i7/xhvbak3ouy6xqiml ...

March 22, 2026 · 1 min · santu

工作3年,分布式项目,实时数据分析功能

面试者背景 普本,3年经验,IOT项目,微服务+大数据,SSM,redis,kafka,go,flink,实时分析,数据过滤,自定义规则,责任链模式 面试过程 :::warning 责任链模式的好处是什么?都哪些场景可以用责任链? 开通的分布式一致性怎么保障的?最大努力通知。如果超时的情况如何兼容? 重试是如何实现的?sleep?这个过程应用重启了怎么办? 除了Sleep还有其他方案吗?回滚操作调失败了怎么办?下游系统失败的原因可能是什么?失败人工介入? 最大努力通知为啥不用MQ?遇到什么问题会考虑用MQ?作用?异步、削峰、解耦。 MQ是如何实现的削峰填谷?消息投递数量会不会超过消费者的消费能力,pull,push? Pull对MQ造成压力怎么办?拉的很慢消息堆积了怎么办?堆积之后如何解决?增加消费者、 Kafka的重平衡问题介绍下?重平衡的过程是怎么样?重平衡过程的问题有哪些?STW,重复消费。 如何避免重复消费对业务造成影响? Kafka的消费者可能有哪些状态?kafka的高水位是什么?LEO 一句话总结HW的作用? 性能优化做过吗?介绍一下,arthas ,优化流程,CMS优化, Mysql隔离级别默认是哪个?为啥是RR?RR解决了幻读吗?完全解决了吗? RR的缺点是什么?RR相比RC多了什么?为啥很多大公司要把RR改成RC? Mysql的行级锁到底锁的是什么东西? Redis常用数据结构有哪些?hash、string、set、zset、list、geo、 Reids渐进式rehash过程是怎么样的?为啥要这么干?每次渐进rehash的时候怎么选择rehash哪些数据呢? 为什么redis有一批key过期,为啥其他的key读写效率降低?单线程 如何避免这种问题?被动删除、随机过期时间, Redis的集群模式介绍下,主从、哨兵、分片。怎么避免脑裂的问题?能彻底避免吗? ::: 题目解析 :::color4 责任链模式的好处是什么?都哪些场景可以用责任链? ::: 责任链:https://www.yuque.com/hollis666/ec96i7/yhmvq8 :::color4 开通的分布式一致性怎么保障的?最大努力通知。如果超时的情况如何兼容? 重试是如何实现的?sleep?这个过程应用重启了怎么办? 除了Sleep还有其他方案吗?回滚操作调失败了怎么办?下游系统失败的原因可能是什么?失败人工介入? 最大努力通知为啥不用MQ?遇到什么问题会考虑用MQ?作用?异步、削峰、解耦。 ::: 这里面候选人提到自己用了最大努力通知,但是实现方式竟然是自己在代码中sleep,然后自己重试,这个方案肯定是不过关的。因为sleep这种一旦应用重启之后,数据就都丢失了,任务就没人继续调度重试了。 所以好一点的方案肯定是用MQ,依赖他的可靠性来实现。 ✅什么是最大努力通知? ✅如何基于本地消息表实现分布式事务? ✅为什么要使用消息队列? :::color4 MQ是如何实现的削峰填谷?消息投递数量会不会超过消费者的消费能力,pull,push? Pull对MQ造成压力怎么办?拉的很慢消息堆积了怎么办?堆积之后如何解决?增加消费者、 ::: ✅消息队列使用拉模式好还是推模式好?为什么? ✅RocketMQ消息堆积了怎么解决? :::color4 Kafka的重平衡问题介绍下?重平衡的过程是怎么样?重平衡过程的问题有哪些?STW,重复消费。 ::: ✅什么是Kafka的重平衡机制? :::color4 如何避免重复消费对业务造成影响? ::: ✅如何解决接口幂等的问题? :::color4 Kafka的消费者可能有哪些状态?kafka的高水位是什么?LEO 一句话总结HW的作用? ::: ✅Kafka 高水位了解过吗?为什么 Kafka 需要 Leader Epoch? :::color4 性能优化做过吗?介绍一下,arthas ,优化流程,CMS优化, ::: ...

March 22, 2026 · 1 min · santu

985应届生,并发编程底层原理

面试者背景 985应届本科生,秋招中,最近在找工作,但是还没拿到满意的offer,自述主要技术栈:java后端,mysql,jvm,kafka 面试过程 :::warning 项目介绍一下,定时任务,采集数据,从哪个数据源采集数据。ES、kafka、 定时任务是用的开源框架,E-job, 预警模块的优化,线程池,批处理-》流处理,优化前和优化后的效果数据有吗? 之前10w条数据处理会崩溃的原因是什么?那你这个方案能解决的原因是什么? 线程池的原理介绍一下?JAVA中如何创建线程池?线程池有哪几种?线程数如何设置?核心线程数,最大线程数该该设置成多少该怎么定?IO密集、CPU密集?为什么IO密集型可以设置的多一些? 为什么不建议使用Executors创建线程池? 创建线程有哪些方式?Callable可以单独用吗?FutureTask 多线程的执行是同步的还是异步的?虚拟机会等线程执行完在shutdown吗? Run方法和start方法有啥区别?守护线程了解吗?守护线程和用户线程的区别? GC是有单独的线程吗?STW WAITING和TIMED_WAITING 什么是CAS?CAS都有哪些应用?乐观锁、自旋 Synchronized的自旋是怎么实现的?代码上是如何实现的? CAS有什么问题吗?ABA问题、忙等待。通过自旋的角度思考一下CAS的问题? JAVA中的CAS怎么实现的?如何保证的原子性, 有了synchornized为什么还需要volatile?锁、 双重校验锁实现单例?volatile, 怎么实现的用了voaltile就会有内存屏障。 设计模式,用枚举实现单例有什么好处?为什么枚举可以防止单例被破坏?为什么枚举实现的单例就线程安全了?static修饰的对象特点?类加载的过程是线程安全的吗?为什么? 如何实现一个类加载器?为什么是LoadClass而不是findClass? 什么是聚簇索引?有什么避免回表的方式吗?下推、覆盖索引? ::: 题目解析 :::color4 Q:预警模块的优化,线程池,批处理-》流处理,优化前和优化后的效果数据有吗? 之前10w条数据处理会崩溃的原因是什么?那你这个方案能解决的原因是什么? ::: 这个问题,主要是考察面试者对于自己做过的项目,尤其是技术改造是不是真的做到了掌握,对于这一类问题,是大厂面试官非常喜欢问的一类问题。 所以,如果你在简历、或者面试的时候提到自己做了一些技术改造、技术选型、线上问题的解决等 ,一定要想清楚下面这几个问题: 本次技术改造中遇到的问题是什么? 问题是怎么来的? 你是如何解决的? 你的方案为什么可以解决这个问题? 还有没有其他的方案可以选择? 你的方案还有没有什么改进的空间? 切忌类似回答:不知道为什么这么做,主管(架构师、老师)让我这么做的,我来的时候就是这样的 :::color4 Q:线程池的原理介绍一下?JAVA中如何创建线程池?线程池有哪几种?线程数如何设置?核心线程数,最大线程数该该设置成多少该怎么定?IO密集、CPU密集?为什么IO密集型可以设置的多一些? ::: 如果在项目中用到线程池,一定要能清楚为什么要用、不用行不行、他的原理是什么、用了之后还会不会带来其他的问题? 关于线程池,请参考:https://www.yuque.com/hollis666/ec96i7/fb5th6 线程数:https://www.yuque.com/hollis666/ec96i7/zanzx4giay7gixf6 :::color4 创建线程有哪些方式?Callable可以单独用吗?FutureTask ::: 关于线程的创建方式,请参考:https://www.yuque.com/hollis666/ec96i7/gmgb2a :::color4 多线程的执行是同步的还是异步的?虚拟机会等线程执行完在shutdown吗? Run方法和start方法有啥区别?守护线程了解吗?守护线程和用户线程的区别? GC是有单独的线程吗?STW WAITING和TIMED_WAITING ::: run和start区别问题:https://www.yuque.com/hollis666/ec96i7/bw9p42#t6Mya 守护线程&虚拟机shutdown问题:https://www.yuque.com/hollis666/ec96i7/dlg6vw waiting&timed_waiting问题:https://www.yuque.com/hollis666/ec96i7/rt6e6b#pvTzP :::color4 什么是CAS?CAS都有哪些应用?乐观锁、自旋 Synchronized的自旋是怎么实现的?代码上是如何实现的? CAS有什么问题吗?ABA问题、忙等待。通过自旋的角度思考一下CAS的问题? JAVA中的CAS怎么实现的?如何保证的原子性, ::: CAS的问题:https://www.yuque.com/hollis666/ec96i7/cgckk3 CAS与自旋:https://www.yuque.com/hollis666/ec96i7/cle1ag1rfu3uuwzg CAS的实现:https://www.yuque.com/hollis666/ec96i7/ed72dt8guaf4fvn8 ...

March 22, 2026 · 1 min · santu

工作2年,电商网站开发,负责购物车、详情页

面试者背景 2年后端JAVA经验,代销平台,订单模块,购物车,详情页,分布式架构,简历上写了自己做过分布式系统、对于分布式事务、分布式锁等有了解、 面试过程 :::warning 项目自己负责的购物车模块介绍一下?未登录、redis存储,临时用户->登录用户的购物车合并,购物车限制, 登录用户的购物车存储,在redis中Key和value都是什么?除了SKUID为什么还需要存商品的信息?价格、库存改的时候怎么办?为什么要保存而不是直接查一下? 登录用户和未登录用户,购物车限制有区别?存储时间的区别, 如何实现登录用户可以存1000 sku,未登录用户只能存200 sku,如何实现? 有没有可能并发情况导致超过购物车限制? 购物车只存在Redis里面,数据会丢吗?AOF、 AOF能保证不丢吗?混合模式为什么数据就不丢? 如果需要实现一个凑单的功能,你会考虑哪些功能?或者系统上可能会做哪些改动?凑单凑满之后,优惠券失效了怎么办? 分布式系统之间的数据一致性的问题如何保证的?订单创建成功,但是购物车删除商品失败了怎么办? 分布式事务的方案都有哪些?SEATA、mq最终一致性、 MQ实现最终一致性,具体是怎么做的?补偿机制怎么做? Redis都在哪些场景中用?缓存、token, 商品详情页快照的设计可以介绍一下吗?每一个订单都对应一个详情页快照?有什么优化的方案吗? 分布式锁有用过吗?商品详情并发加锁?分布式锁能解决缓存穿透吗?? 介绍一下threadlocal?弱引用,threadlocal能解决并发的问题吗?threadlocal会有内存泄露的问题吗?threadlocalMap和普通的hashmap有什么区别? Hashmap在1.8中除了引入红黑树、还有其他改动吗?为什么头插法要改成尾插法?hashmap的方法的具体实现,比如put?hashcode是怎么取到的? 扩容是怎么实现的? 1.8里面concurrenthashmap有改动吗? ::: 题目解析 :::color4 登录用户的购物车存储,在redis中Key和value都是什么?除了SKUID为什么还需要存商品的信息?价格、库存改的时候怎么办?为什么要保存而不是直接查一下? ::: :::color4 登录用户和未登录用户,购物车限制有区别?存储时间的区别, 如何实现登录用户可以存1000 sku,未登录用户只能存200 sku,如何实现? 有没有可能并发情况导致超过购物车限制? ::: 这里是对于面试者负责的业务的讨论,主要考察一下他对于自己负责的购物车业务是不是足够了解,并且探讨一下他们当前的实现方式是不是合理的。 通过交流,有经验的面试官很容易就能发现其实他现在的购物车的存储方式是存在很大的问题的,他把商品所有信息都保存在缓存中,而这其实是完全没有必要的。其实只需要保存商品的skuid+数量就行了。 而且,对于未登录的用户和已登录用户的存储,其实也完全可有采用不同的存储架构。所以整个项目看上去还有很大的优化空间。 面试中,如果面试官发现候选人的项目中技术方案存在很大的问题的时候,就会开始怀疑项目的真实性以及面试者在项目中的参与度的问题。所以这方面一定要注意。尤其是自己负责的项目的一些细节问题,比如存储方式、表结构设计、分层架构等等。 购物车系统设计:https://www.yuque.com/hollis666/ec96i7/iv02gw :::color4 购物车只存在Redis里面,数据会丢吗?AOF、 AOF能保证不丢吗?混合模式为什么数据就不丢? ::: Redis的持久化机制:https://www.yuque.com/hollis666/ec96i7/zc5q70 :::color4 如果需要实现一个凑单的功能,你会考虑哪些功能?或者系统上可能会做哪些改动?凑单凑满之后,优惠券失效了怎么办? ::: 这其实是一个场景题,主要考察一个面试者在实现一个新的功能的时候,考虑的是否全面。 可能的思路: 1、用用户的购物车商品的价格、或者已勾选的购物车商品的价格和用户已有的优惠券的门槛进行比较。 2、当触发一定的凑单阈值的时候,根据用户的购物车信息进行凑单推荐 3、凑单商品要经过算法选择,需要是价格不高、并且实用或者和已加购商品有关的 4、在选择优惠券的时候,因为要凑单,所以需要考虑优惠券的失效的问题,要么就选择距离失效时间还有几小时以上的优惠券,或者就先进行优惠券的预锁定。 5、对于因凑单加购并购买成功的商品,做打标,方便后面用户自查,以及数据分析,并且还可以智能的推荐给其他用户。 6、考虑一键凑单功能,让用户提前设置凑单喜好,在用户需要凑单的时候,一键凑单 7、增加凑单商品购物车,可以让用户在看到一些价格不高,也不急用的商品,先放到凑单购物车中,后面在日常下单的时候,优先从凑单购物车选择商品进行拼单凑单。 :::color4 分布式系统之间的数据一致性的问题如何保证的?订单创建成功,但是购物车删除商品失败了怎么办? 分布式事务的方案都有哪些?SEATA、mq最终一致性、 MQ实现最终一致性,具体是怎么做的?补偿机制怎么做? ::: 这里考察的其实是分布式系统的数据一致性问题,也就是分布式事务的问题。 分布式事务:https://www.yuque.com/hollis666/ec96i7/yr0lu6 事务消息:https://www.yuque.com/hollis666/ec96i7/abxh7z :::color4 Redis都在哪些场景中用?缓存、token, ::: 缓存、排行榜、计数器应用、共享Session、分布式锁、社交网络、消息队列、位操作 ...

March 22, 2026 · 1 min · santu

工作4年,自研流程引擎项目

面试者背景 工作4年,springboot技术栈,工作在一家还不错的某个领域的头部公司,做过几个项目,最近一个项目在做一个自研的流程引擎。 面试过程 :::warning 流程引擎是完全自研,介绍一下这个项目。功能节点(异步)、 你们自研的流程引擎遵守了BPMN规范吗?流程节点支持重试吗?流程的重试是如何实现的? 整个项目中最大的技术难点是什么?数据库实现了发布/订阅的功能,有其他的方案吗?不想依赖MQ的原因是什么?redis可以实现发布/订阅的功能吗? 抗10W的实例执行做了哪些技术手段? 第三方想用你的流程引擎,是怎么用的?节点支持哪些协议? 调DUBBO的话是通过泛化调用实现的吗?泛化调用的原理是什么?GenericService和普通的调用方式,区别是什么? DUBBO的一次服务调用过程是怎样的?代理、序列化、 DUBBO的负载均衡是如何实现的?服务端挂了怎么避免被调用到?心跳 服务端在服务执行过程中,重启了,怎么办?hook(钩子) 工作中有排查过哪些线上问题吗?OOM 内存泄漏、CPU飙高 应用中中什么情况会导致CPU飙高?CPU的哪个指标飙高了? CPU利用率和负载有关系吗?LOAD 1 ,LOAD 5 业务中做了分库分库的场景介绍一下。2000w,为什么2000w要分表?如何分表的? 分库分表后回带来什么问题?分表查询、join问题、 订单库做分库分表,该选择哪个字段做分表字段(买家ID还是卖家ID?)?基因法。 选择分表字段的时候会考虑哪些因素?查询条件。 分库和分表有什么区别?分区是什么? 用过哪些设计模式?责任链、观察者、策略、享元 ::: 题目解析 :::color4 流程引擎是完全自研,介绍一下这个项目。功能节点(异步)、 你们自研的流程引擎遵守了BPMN规范吗?流程节点支持重试吗?流程的重试是如何实现的? ::: 这个地方主要是考察这个流程引擎的背景,这种东西一般面试官会比较重点考察自研而不是直接使用开源产品的必要性。 关于这一点,回答的时候需要注意,首先要能讲清楚自研的背景以及原因,并且还需要能够对开源的产品有所了解就最好了,能知道自己做的产品和开源的有什么区别,好处、坏处是什么,有什么需要改进的地方等等。 :::color4 整个项目中最大的技术难点是什么?数据库实现了发布/订阅的功能,有其他的方案吗?不想依赖MQ的原因是什么?redis可以实现发布/订阅的功能吗? ::: 这个地方是听上去很明显的方案不合理,使用数据库实现发布/订阅模式,这种方案一定有改进的空间,这对于候选人的要求就是:你要知道你的方案不好、并且你要知道好的方案是什么、否则,没戏。 Redis实现发布订阅:https://www.yuque.com/hollis666/ec96i7/oz0kvggva663l911 :::color4 抗10W的实例执行做了哪些技术手段? ::: 这个是重点!而且是面试中很容易出彩的点。不管你工作中有没有遇到,或者你实际上有没有做过哪些技术手段,但是面试的时候都可以答。 服务端接口性能优化的手段:https://www.yuque.com/hollis666/ec96i7/ifuuagaqo3yd8vqb 如何设计高并发系统:https://www.yuque.com/hollis666/ec96i7/gfgqpua8gu3oag44 :::color4 调DUBBO的话是通过泛化调用实现的吗?泛化调用的原理是什么?GenericService和普通的调用方式,区别是什么? DUBBO的一次服务调用过程是怎样的?代理、序列化、 DUBBO的负载均衡是如何实现的?服务端挂了怎么避免被调用到?心跳 服务端在服务执行过程中,重启了,怎么办?hook(钩子) ::: 泛化调用:https://www.yuque.com/hollis666/ec96i7/kogite7l9dkksl4q dubbo服务调用:https://www.yuque.com/hollis666/ec96i7/io1pkwin43mkwaup 优雅停机:https://www.yuque.com/hollis666/ec96i7/gxda8y :::color4 线上问题排查,是一个面试官很喜欢问的东西,所有人都需要准备几个,可以是OOM、FullGC、Load飙高,接口性能慢,慢SQL等等。重点是问题发生的过程,排查的思路,解决的方案,以及得到的结果。 工作中有排查过哪些线上问题吗?OOM 内存泄漏、CPU飙高 应用中中什么情况会导致CPU飙高?CPU的哪个指标飙高了? CPU利用率和负载有关系吗?LOAD 1 ,LOAD 5 ::: OOM:https://www.yuque.com/hollis666/ec96i7/vdnaxh CPU飙高:https://www.yuque.com/hollis666/ec96i7/yp216u CPU利用率:https://www.yuque.com/hollis666/ec96i7/hhmxp4xri441moiq :::color4 业务中做了分库分库的场景介绍一下。2000w,为什么2000w要分表?如何分表的? ...

March 22, 2026 · 1 min · santu

留言给博主