Java项目分析--面试官会问那些问题

项目讲解一

系统架构:以 SpringCloud 微服务架构,将系统拆为推单服务和配单服务

核心技术:SpringBoot、Mybatis、Redis、Nginx、Kafka、MySQL

项目描述:

由于公司业务扩展,需要对接话费充值代理商,于是开发一套话费充值系统来扩展公司业务。这是套中后台系统的ToB类型的项目,该系统由推单系统和配单系统组成,推单系统用来对接话费订单渠道商,配单系统对接运营商。 【1、话费订单渠道商都做了什么?;2、运营商都做了什么?】

话费业务的特殊性,月初月末都会有较大单量在 15 万左右,TPS 峰值是在 700 左右,QPS 峰值在 1500 左右。 【一天产生 3w 左右的数据量,一个月大概 50w】

我的职责:

1. 为了提高并发量,将项目中主干业务同步调用,拆分成异步,从 TPS=20-30 到 TPS=600-700。 【1、并发量的决定因素:服务的节点数量;处理速度:业务流程的性能决定的;2、主干业务是否可以被拆分;主干业务产生的附带行为是可以被拆分出来的,附带行为不对主干业务造成影响;主干业务是一个原子性操作,要么全部成功,要么全部失败;a、主干业务是否需要等待异步执行的结果,如果异步执行的结果失败了】

2. 避免大量用户同时请求,减少大量资金损耗,通过 RentrantLock+自旋锁机制解决 Token 刷新问题。 【1、从项目简介上看,项目是一个分布式的;那么 RentrantLock 本地锁,本地锁只能对当前节点产生影响】

3. 引入 Redis,使用 List 结构存储支付凭证,支付凭证存在过期时间,通过左进右出的策略防止拉取支付凭证全部过期。使用 set 结构避免重复订单。 【1、存在消息堆积的现象;2、消息堆积是因为消费者的性能较低造成的;3、业务场景,消息处理一般使用 MQ 和 kafka+线程池的方式处理】

4. 接口调用的安全性,上游渠道有用于识别 API_ID,和验签字段 API_KEY,传过来之后会用这个订单号做 MD5 加密,再用传过来的验签做一下对比,相等就可以调用。

5. 同时修改数据,造成死锁,采用垂直分表,将订单状态和回调状态拆分成垂直的两张表,解决资源竞争问题。【1、是什么业务需要同时修改数据;2、同时修改数据是同时修改一条数据,还是多条数据;3、假如同时修改一条数据,第一个请求修改订单状态,第二个请求修改回调状态的时候需要等待第一个请求释放行锁;4、同时修改多条数据,假如同时修改 10 条数据,第一个请求先修改的 1-5 条数据,第二个请求修改 6-10 条数据,此时才会造成死锁;】

6.解决因为网络抖动造成的线程池任务堆积连锁反应产生的 OOM【1、线程池的问题,a、线程数量过多;b、任务队列是无边的造成 OOM;】

7.由于每月都会有近百万的数据,导致数据库性能极具下降,每个月都会进行数据归档操作【业务线必然有专门的 DB,那么 DB 来做数据归档,和我们开发有毛线关系】

项目讲解二--权益平台

权益智能服务平台

开发环境:JDK8.0 + spring boot + redis + spring cloud+ gateway+ Rocketmq

项目简介:

该项目主要用于实现权益活动的全生命周期管理及活动服务输出,包含参与活动、完成任务、权益领取、权益兑换、权益使用等多种功能。【1、如何创建活动;2、活动中的权益由谁提供,数据从何而来,需要实现数据闭环;3、如果权益出现滥发现象,对我们的平台运营造成困难,所以我们需要管理权限的数量,通过宏观调整权益数量,保证平台的正常运营;4、权益如何兑换;5、如果权益只剩下一份,如何保证兑换成功;6、如何保证我们的权益被正常使用,保证权益被使用后失效;7、如果使用失败,要保证我的权益的状态不发生改变】

服务内容包含微信支付类权益、立减金、商户卡券、代金券等。

主要应用于pc、h5、小程序端。

项目职责:

(1)使用策略模式对接多个供应商,实现短链接直充、短链接、卡劵类权益兑换与领取。【1、短链路直充和短链路有什么区别;2、卡券的权益通过什么数据进行兑换;3、兑换权益的数据如何获取】

(2)开发并实现手机端App、小程序和管理端的自测。【1、测试流程;2、是不是全链路回归测试】

(3)跟客户与多个供应商对接需求,根据需求制定开发计划,推进技术开发及产品优化。【1、供应商是否存在卡券的宏观调整;】

(4)针对不同级别用户,设定不同领取权益规则。【1、权限是通过注解实现,还是通过网关实现,或者根据用户的级别实现;2、具体领取权益的规则有哪些】

(5)设定九宫格抽奖或者转盘抽奖或者做活动,实现领取权益并使用。【1、抽奖的算法是自己写的,还是有第三方调用;2、领取或者兑换卡券,如果保证数据的一致性】

项目讲解三--24年应届生项目-告警

告警系统 -Java

项目描述:本项目专注于请求结果的全面监控,确保请求状态的实时跟踪。对于失败的请求,系统能够迅速识别原因,并通过钉钉和手机短信及时通知相关人员。项目致力于提供一个直观的可视化界面,展示请求结果、失败原因、异常时间以及请求频次。【1、它是一个监控系统;2、监控内容:请求次数,请求消耗时间,请求中发生的异常和未知异常】

技术栈:SpringBoot、Mysql 、Maven、Mybatis、Redis

项目职责:

1.实时监控与告警系统:通过自动化的监控机制,实时捕获应用的请求状态,对失败请求进行深度分析,并快速触发告警。告警方式包括钉钉通知和手机短信 ,确保相关人员能够迅速响应。 【1、如何自动化采集监控日志/数据;2、触发报警的机制;3、具体的技术栈是自己研发的,还是第三方插件,比如Prometheus和Granfan】

2.数据可视化:采用先进的可视化技术,将请求数据以直观的图表形式展现。这有助于团队快速了解应用性能、失败原因 以及异常时间 ,为应用优化提供数据支持【1、我们可以从这些监控得到的日志或者数据形成的图标发现那些问题,可以体现出那些问题,(1、通过请求次数,我们可以做出那些方案来提高应用性能;2、通过请求的耗时,我们可以做出那些方案来提高应用的性能;。。。同时也可以监控资源的消耗,这个资源可以是我们redis的内存占用,Mysql的高可用,资源也可以是消耗型资源,比如用户购买的请求次数)】

项目讲解四--24年应届生项目

标注系统 --Java

项目描述:本项目致力于提升简历和职位描述的匹配精准度。为实现这一目标,我们构建了一套标注系统为c端和b端用户更精确地推荐与需求匹配的简历和职位。

技术栈 :mysql、maven、springboot、mybatis、redis、apollo

项目职责:负责分配标注任务模块、标注模块、查看历史标注任务模块、标签结果图表模块。

技术亮点:

1.利用apollo中的远程数据动态驱动标注表单的数据集展示,增强了系统的灵活性和实时性。 【1、apollo的特性;2、apollo的数据如何与应用通信】

2.在分配标注任务时,我们引入了分布式锁机制,确保每位标注员在同一时间仅处理一个任务,从而有效避免任务冲突,提高工作效率【1、资源争抢,什么是死锁,死锁发生的必要条件;2、分布式锁锁定的资源是什么;3、是否可以画一下标注过程的时序图(UML);4、我们在正式工作中,除了代码开发,还需要写大量的功能设计文档,在文档中,我们需要画相对复杂业务的时序图】

项目讲解五--24年应届生项目

智慧易约 Java 2022.12-2023.07

项目描述:该项目是经过学校批准并给予资金支持从而为学生提供方便快捷的实验室预约服务。该小程序已经成功上线,并且被设计为能够承受高达300qps的并发请求。项目的主要功能是实现学生对实验室的预约操作,学生可以在小程序上进行实验室的预约操作。学生可以选择日期、时间段和实验室设备需求,并查看实验室的预约情况。系统会自动检查实验室的可用性,避免冲突预约。 开发的一个高性能预约实验室小程序,旨在【】

技术栈:Java 、Mysql、Maven、SpringBoot、Mybatis、Mybatis-Plus、Redis、JWT、Nacos GateWay、Feign、Docker、Seata、SpringTask

项目职责 :本人担任后端开发工程师、项目开发负责人。参与系统架构设计、负责项目业务设计。

技术亮点:

1.Nacos注册和管理:使用Nacos进行各模块的注册和管理,实现了服务的动态发现和配置管理,提高了系统的可扩展性和灵活性。 【1、服务发现机制】

2.分布式锁:通过Redis中的SETNX命令实现分布式锁 ,通过对版本号的控制,解决了用户预约高峰期抢占线程的问题,确保了数据的一致性和并发安全性。 【1、话术表达不正确;2、分布式锁锁定的资源描述不明确;3、版本号的生成方案】

3.Seata分布式事务:使用Seata解决了各模块间的分布式事务问题,确保了事务的一致性和可靠性。 【1、事务是否有补偿机制,保证数据的最终一致性;2、各模块之间的回滚机制如何确保触发】

4.异步调用:在学生预约成功后,通过异步调用将相应的实验室座位减少,提高了系统在高峰期的效率和性能。 【1、异步调用的解决方案;2、如果只有一个座位,如何避免超卖现象】

5.Redis缓存:将学生的预约信息存储到Redis中,减少了对MySQL数据库的负担,提高了系统的响应速度和吞吐量使系统达到了300qps。为了确保Redis和MySQL中的数据一致,采用Spring Task定时任务每隔5分钟刷新一次,解决了数据同步问题。 【1、是否还有其他方案解决数据最终一致性的问题;2、如何保证redis的数据成功落盘;3、系统的响应速度有哪些决定因素;4、系统的吞吐量有哪些决定因素;5、使用定时任务是否会对系统造成负担;6、redis的数据刷新到mysql使用增量还是全量】

业绩:

项目开发负责人,领导学习小组研发,目前该项目已上线供学校使用

项目讲解六--23年应届生项目

业务介绍:同城货运平台

工作中的主要技术栈:springboot、mysql、redis、springcloud、linux、git、rocketMq、grovy

工作内容概述:

  1. 在会员中台组任职
  2. 会员中台模块研发
  3. 优惠券模块研发
  4. **出行app会员模块的线上服务治理

工作难点和成果:

  1. 理解对会员和优惠券领域业务特性,并且用于实际的开发中 【会员和优惠券的关联,优惠券如何发放,优惠券发放数量如何决策,优惠券如何宏观控制数量】
  2. 优惠券模块大规模批量发券的场景都要先查券模版,并发高的场景下会有redis超时问题,引入了caffine解决 【caffine的机制,有没有了解布隆过滤器,讲解一下布隆过滤器机制,还有没有其他解决方案】
  3. 优惠券的自动过期需求,引入了RocketMq + 调度任务,做成一个滑动窗口的方案解决 【如果优惠券大量过期,是否会造成任务堆积】
  4. 压测优惠券发放有重复发券的问题,利用mq消息的唯一ID,做幂等校验解决 【消息重复消费的原因,如何避免重复消费,幂等校验是否需要加锁】
  5. 会员中台,核心机制是spi路由,掌握底层的路由原理,支撑日常开发 【讲一下SPI机制和应用场景】
  6. 理解业务的上下游链路,对于不同流量时段、场景进行灵活配置限流、警报、扩容、降级等 【有没有具体的场景,分析一下】
  7. 线上问题的定位,通过dump文件、资源使用状况、qps分析等方面进行分析 【有没有具体的案例,讲解一下】

项目讲解七--餐饮

项目名称:智慧餐饮系统 职责:JAVA开发工程师

项目描述:该项目是一款SAAS智慧餐饮系统,基于微信生态开发,旨在提供全面的餐饮解决方案,包括微信扫码点餐、商家端ERP点餐、数据分析等功能模块的开发

技术栈:Java, Spring Boot, RabbitMQ, MySQL, Redis,xxl-job

职责与成果:

  1. 负责系统核心模块的开发,采用Spring Boot框架进行快速开发【核心模块有哪些业务,完整的业务流程讲一下】
  2. 通过RabbitMQ实现异步处理,提高系统的并发能力和响应性能【应用并发能力的主要因素有哪些】
  3. 优化系统性能,使用Redis分布式缓存技术提升数据读取速度,减轻数据库压力【redis缓存如何维护,如何保证redis和db的一致性】
  4. 项目引进redisson分布式锁,实现对业务上进行加锁控制处理【为什么需要加锁,加锁的目的是什么】
  5. 将库存管理服务与系统进行对接,确保菜品和库存的准确管理【具体的方案是什么,有没有其他方案,选择这个方案的优势在哪里】
  6. 微信提醒通知代码开发,确保用户能够及时收到相关通知【如果消息延时,该如何处理,有没有兜底策略】
  7. 开发处理订单营销活动的代码逻辑,利用策略模式解决各个活动之间的结算,提高系统的拓展性和可维护性【如何保证订单与营销优惠资源的一致性问题,如果优惠券处理异常,如何处理】
  8. 员工提成结算以及实现微信员工端用户能够对钱包进行提现操作
  9. 参与项目需求评审,以及后续其他模块业务的开发和代码编写,包括数据库设计等
  10. 利用xxl-job 定时自动清台处理【具体的清理流程,清理那些资源,定时任务的时间策略】

项目讲解八--微商城

微商城 职责:JAVA开发工程师

项目描述: 微商城是一个基于微服务架构的电商平台,致力于提供稳定、高效的购物体验,包括商品服务、支付服务、订单服务等主要服务模块。

技术栈: Java, Spring Cloud, RabbitMQ, MySQL, Redis

职责与成果:

  1. 负责核心业务模块的设计和开发,采用Spring Cloud构建微服务架构,实现服务的解耦和扩展性【具体的核心业务有哪些,对应的业务流程讲一下】
  2. 通过引入Redis做缓存,提升系统的读取性能,减轻数据库压力,增强用户体验【redis缓存如何管理,如何保证缓存与DB的数据一致性】
  3. 对购物车的重构设计以及营销活动计算规则编写【为什么需要购物车,某夕夕为什么要取消购物车;营销活动如何管理和使用,业务流程讲一下】
  4. 使用RabbitMQ实现消息队列,处理订单状态变更和库存变动等异步操作,提高系统的并发处理能力和可靠性【提升并发处理能力的基本因素有哪些,如何保证服务的并发量】
  5. 对接内部进销存服务【商城与内存进销存服务的关系】
  6. 参与团队的协作开发,保证项目的质量和可维护性

项目讲解九----应届生项目

多多点评

技术选型:Spring Boot + Mybatis + SpringMVC + Mysql、redis、vue

开发时间/开发周期:2023年8月-11月

项目描述:多多点评是一款前后端分离项目,类似于大众点评,实现了发布查看商家、用户短信登陆、达人探店、点赞、关注等功能;主要业务是可以帮助商家引流,增加曝光度,用户也可以查看附近的消费场所。

责任描述:

1、使用Spring Boot完成整个项目的框架搭建工作

2、利用Spring Boot+Redis完成短信登陆模块,缓存用户登录信息;将用户对商家的查询进行缓存【所有的商家加入缓存会有什么影响,如何保证缓存和DB的一致性】

3、利用Redis是实现互斥锁解决缓存击穿问题,避免高并发访问下热点key突然失效导致大量请求访问数据库【为什么要用互斥锁解决缓存击穿的问题,两者有什么联系;热点数据是否需要过期时间,如果需要设置多久合适,如果不需要,该怎么维护热点数据】

4、利用Redis实现分布式锁,解决商品超卖和优惠券秒杀(一人一单)功能【如果不使用分布式锁,如何解决商品超卖问题/秒杀问题;如何获取优惠券】

5、完成达人探店、点赞、好友关注、共同关注等模块功能【如何保证点赞的有效性;好友关注后,如何维护/获取关注列表;如何维护共同关注;】

项目讲解十----应届生项目

项目名称 : 氢课教育平台

项目介绍 :氢课教育是一款在线培训与知识付费的在线学习平台。提供课程课程展示,购买、学习记录、评论点赞、订单管理等功能,并且包含了用户管理、商品功能、客服管理、资源等多个后台模块

技术栈 :SpringBoot +SpringCloud+ Redis + Mysql +RocketMQ+ElasticSearch

项目职责 :

1、负责需求评审、技术方案设计,核心代码的开发比如课程服务、用户服务,以及线上疑难问题的处理 【讲一下主要负责的模块,相关的业务流程;讲一下主要处理的线上问题】

2、使用 aop + 自定义注解记录系统日志 【日志太多,是否会影响接口性能】

3、使用 xxl-job 分布式任务调度,实现课程定时上下架等功能 【课程定时上下架有什么好处,为什么要设计这个功能,存在的背景和意义】

4、基于 RocketMQ 实现各个服务的解耦与异步通信,并对消息重复等问题进行解决 【如何解决消息重复消费的问题,有哪些解决方案】

5、使用 redis 分布式锁对请求做幂等,解决并发问题导致的数据异常 【接口幂等有哪些实现方案,并发为什么会导致数据异常】

6、课程订单超时取消,使用 redis 延迟队列实现【为什么不使用rocketMQ对消息统一管理?redis延迟队列是否稳定?】

项目讲解十一----CRM项目

项目:CRM客户体验管理系统

项目介绍:CEM(Customer Experience Managemen )客户体验管理系统。通过问卷调研、客户体验管理、数据分析与可视化技术、为企业提供商业价值。

主要有运营系统、问卷系统、仪表盘系统、AI系统。

我主要负责问卷系统、运营系统的研发和设计,包括问卷服务、答题服务、推送服务、运营服务等做研发设计工作。业务上我主导过转盘抽奖、MQ消息服务升级、大师问卷异构数据接入、协同问卷、问卷新题型研发、运营系统迭代等工作。【问题:1、数据分析与可视化视图是否可以做到实时更新,数据量有多大,如果要求实时显示,如何操作;2、协同问卷中,为什么要做协同行为,设计方案是什么;3、问卷如何审批,审批的方案或者标准是什么?

技术难点:转盘抽奖(高并发接口设计落地)

● 技术挑战:用户答完问卷后跳转到转盘抽奖页面,可在页面持续不断的进行点击抽奖, 查看奖品,领取奖品、红包等操作。同时库存、概率在活动期间还支持动态调整,这对于大量投放用户来说,如何确保转盘支持高并发请求,如何设计库存架构,如何防止恶意攻击成为一系列的技术难点。【问题:1、如何提高系统的并发能力;2、如何提高系统的处理能力;3、如何保证数据的一致性问题;

● 技术方案:设计了一套支撑百万用户的转盘抽奖方案。大量运用 Redis 多种数据结构存储转盘的核心数据,抗住高并发请求, 采用库存异步落库技术方案增加吞吐量,灵活运用分布式锁来保证动态概率更新、动态库存调整时的数据一致性。【问题:后台使用分布式锁调整库存和概率,用户抽奖是否也需要获取分布式锁;如果不加分布式锁,后台使用分布式锁的意义是什么;如果需要加分布式锁,系统的吞吐量如何保证;

项目讲解十二-CEM

项目介绍:CEM(Customer Experience Managemen )客户体验管理系统。通过问卷调研、客户体验管理、数据分析与可视化技术、为企业提供商业价值。

我主要负责问卷系统、运营系统的研发和设计,包括问卷服务、答题服务、推送服务、运营服务等做研发设计工作。业务上我主导过转盘抽奖、MQ消息服务升级、大师问卷异构数据接入、协同问卷、问卷新题型研发、运营系统迭代等工作。

● 技术难点:MQ 消息推送服务架构升级

● 技术挑战:为了增强商业竞争力与满足客户需要,需要对百万以上的客户群体做统一的投放。对于MQ消息推送服务来说,原有架构需要升级去支持未来大量用户投放的场景。 【问题:如何保证消息不丢失;如何处理消息堆积;如何保证投放成功,如果投放失败有没有补偿机制

● 技术方案:设计了一套支撑千万级用户的消息推送方案。利用 RocketMQ 进行异步化和削峰限流方案, 对用户进行分片、 异步分批次获取用户信息, 合并成 batch 多线程发送到 MQ 。最终推送服务启用30个线程去消费消息发送到第三方平台(短信、邮箱、公众号等)【问题:如果客户端的RocketMQ启动失败,如何保证消息的成功发放;线程数量是否可以动态调整

● 技术难点:大师问卷(异构数据接入)

● 技术挑战:公司内部系统原问卷系统沉淀了丰富的题型和数据,目前要源源不断的接入我方问卷系统。目前有三十多种题型, 且未来还会对接不同的题型和源数据,不仅要实现数据接入功能,还有答题详情展示,还要提供支持高拓展的方案。【问题:讲一下业务的完整流程和设计方案

● 技术方案:采用工厂 + 模板的设计模式,提取共用题型,进行复杂的抽象设计,实现了高拓展、灵活的数据处理。为后期维护提供了指导 【问题:异构的流程,如何保证数据的一致性

项目讲解十三--某某商城

某某商城为某某APP 首页核心业务之一,用户通过首页可直接接入到商城进行浏览、购物行为。商城团队历经了历次大促、活动促销的考验,我司作为合作方与某某大厂架构团队一起完成商城平台的开发建设;我作为核心开发人员参与了商城商品中台建设、库存中心、微服务改造升级、子系统接入、分库分表、拼团营销、金币抽签、合并支付等业务与架构工作。

·技术难点:库存中心

·技术挑战:商城经常做促销活动、秒杀场景, 商品瞬时进行库存扣减造成 redis 机器流量倾斜问题。 【秒杀场景需不需要单独的服务器,秒杀场景是否需要加锁;促销活动中,活动资源如何评定;

·技术方案:实现了一个高性能,可支撑分桶多分片的库存中心,提供单库存分片不足扣减的合并库存功能,提供商品操作库存入库的渐进性入缓存的实现。【如何保证数据的一致性;分桶多分片的库存扣减完整业务/时序图

·技术难点:数据迁移平台

·技术挑战:分库分表方案敲定,为了实现数据迁移、数据同步需要完善可靠的数据迁移系统【数据量有多大?分库分表后,如何保证数据闭环,业务是否需要修改

·技术方案:研发数据迁移系统,包括了业务表(订单、订单详情等),迁移表、迁移配置表等。实现了全量同步滚动拉取、增量同步(基于 Cancal+MQ)防止数据丢失和高效写入方案。实现了单库到八库八表的实践。 【binlog和redolog的区别,binlog异步迁移是否存在风险,是否会造成查询过程卡顿

项目讲解十四--社交分享平台 【刚培训结束,自己做的面试项目】

项目介绍 :社交分享电商平台旨在为用户提供分享购物心得,并可以直接购买相关商品。该项目分为管理端和用户端。

用户端核心业务有:查看附近门店、发布笔记(获取积分)、签到、点赞和收藏,以此带动用户的活跃度。还可以发放一些优惠券,促进用户消费。

管理端核心业务有:用户的笔记、评论、商品、优惠券的管理。

使用技术 SpringBoot、SpringCloud、RabbitMQ、Redis、XXL-JOB、Redisson、Mybatis-plus、分库分表等。 【接口性能主要在哪些地方消耗较大:IO】

工作职责

1、采用百度地址编码和路线规划服务,为用户和商家地址提供查找附近门店的功能。

2、采用Redis位图 ,优化用户签到功能,减少内存消耗。

按照每周讲解一下位图怎么使用:0000000---》0000001---->0000011

3、采用Redis SortedSet数据结构存储用户本月积分排行,使用MySQL分表存储历史积分排行。 【积分排行持久化的作用

4、采用XXL-JOB实现分布式任务调度,定时持久化上赛季积分排行,根据当月和历史积分排行发送优惠券。 【历史数据较多时,如何进行数据对比?

5、开发可扩展和通用的点赞/踩模块,利用Redis Set数据结构存储用户点赞明细, SortedSet数据结构存储特定业务项的点赞总数,增加用户互动性。 【为什么要用有序集合存储点赞明细

6、采用RabbitMQ实现消息队列,将点赞总数放入消息队列,实现系统解耦和异步处理, 提升系统响应速度。【点赞总数在什么场景下会被持久化DB层;场景如何界定

7、设计支持多类型配置的优惠券系统,采用策略模式选择不同类型的优惠券。

8、解决了超发和超领问题。使用JMeter工具进行压测,确保并发安全和提高用户体验和平台性能。

9、采用乐观锁思想解决优惠券超发问题,利用关系型数据库写锁排他性保证并发安全。 【如何不使用锁解决超发问题?

10、采用Redisson分布式锁解决优惠券超领问题,结合SPEL表达式、工厂模式、策略模式和AOP思想,封装自定义分布式锁注解。

个人成就

1、查询点赞状态使用 ,从单命令执行,改为RedisTemplate 的 executePipelined 方法进行批量处理,优化系统响应时间( 40s->100ms)。

2、多线程优化大批量数据插入速度:由于cdk的生成需要将这批码插入数据库中保存,当创建十万条cdk记录时,耗时达到了十几秒。使用@Async+自定义线程池的方式,异步生成cdk,优化后执行耗时2.5秒,执行时间缩短了6倍。 【批量插入的数据是否会受到间隙锁的影响;数据在插入过程中,如何避免/减少页分裂/页合并的产生/受到间隙锁的影响

3 、基于Redis异步领券响应速度:在兌换资格校验的时候,或者领券资格校验的时候,会有多次与Redis的交互,每一次交互都需要发起一次网络请求。在并发较高的情况下导致网络拥堵,导致业务变慢。通过编写LUA脚本,在脚本中编写复杂业务判断,通过一次请求,完成对脚本的调用。提高接口响应速度。

#java##java面试题##面试题#
八股文+场景题+算法真题 文章被收录于专栏

Java全新整理八股文 + 场景题 + 算法 精心设计,面试命中率超过80% 专栏优势: 1、问题和答案已经整理到位,答案更专业,可以直接回答,不需要额外总结! 2、场景题讲解清晰,适用于大部分场景的项目,并且持续更新中 3、分享学习心得【知识点的广度和深度,算法有哪些坑,如何准备面试等等】

全部评论

相关推荐

1.springsecurity是怎么搭建的我这边搭建的是springsecurity6,搭建分为两大块,一个是登录接口,一个是securityfilterchain的搭建,登录接口会springsecurity的方法创建一个将用户输入的用户名和密码作为参数的令牌,springsecurity那边会写一个impl来继承userdetailservice的方法,这里面会查询数据库的用户信息并且返回一个userdetails对象,springsecurity底层会有方法将userdetail的password和用户输入的密码进行对比,成功则返回一个token2.怎么实现单设备登录这边说的是登录的token存入redis,判断有没有有的话就删除并通知下线(网上查询是根据token一致性来判断,就是每次请求访问都会判断客户端发送的token和缓存的token是否一致)3.http1和2的区别http1相对于0多了Keepalive长连接,不用每次请求都要三次握手和四次挥手,但是有个弊端就是发送的报文必须是有序的,就存在一个问题,如果头报文过大就会发送阻塞,影响后面报文的发送。但是http2采用多路复用以及压缩报文的方式解决了这个问题,他讲报文压缩成二进制帧,且多路复用使得单个tcp链接能够多条路发送数据,就避免了头阻塞4.说一下jvm的垃圾回收这种问题就恶心啊,我不知道要讲什么,就说找垃圾的方法,应用计数法,可达性分析,然后垃圾回收算法又有四个,讲的口干舌燥的5.mysql的索引是什么,有什么索引索引是一种加快数据库查询效率的一种数据结构索引的类型:主键,唯一,常规,全文反问这边用什么技术栈说用的是golang,我就说怎么没问java的基础东西,一个实习把我拷打🐴了
查看5道真题和解析
点赞 评论 收藏
分享
11 23 评论
分享
牛客网
牛客企业服务