avatar-decorate
六年JAVA程序员 level
获赞
742
粉丝
471
关注
7
看过 TA
3276
山西农业大学
2018
Java
IP属地:浙江
需要看简历可以私信我,只会Java
私信
关注
#我的失利项目复盘##java##java面试题##java项目##项目#在给别人做模拟面试时,看到的项目某某商城某某商城为某某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脚本,在脚本中编写复杂业务判断,通过一次请求,完成对脚本的调用。提高接口响应速度。
查看11道真题和解析 我的失利项目复盘 Java求职圈
0 点赞 评论 收藏
分享
头像
09-12 13:11
已编辑
山西农业大学 Java
Java简历项目亮点是优势,也是被坑最惨的地方由于市面上大部分资料都讲解的一知半解,导致应聘者在面试过程中直接无从下手注释:任何方案都有对应的场景,我们要尽可能的保证我们的方案适合大部分的场景亮点一:秒杀场景1、被争抢的资源是什么?2、用户下单后,不进行支付,被争抢的资源是否会被扣减?3、超时未支付的订单释放后,资源是否会回归被秒杀的资源池中?4、如何不使用锁,实现秒杀场景?5、如何保证所有用户公平的争抢资源,而不是限流排队等机制亮点二:缓存DB一致性问题1、策略一:布隆过滤器【大家简历上经常使用的一种方案】2、策略二:先写DB后删缓存/先删缓存,后写DB【两者都是有问题的】3、策略三:本地缓存【本地缓存必然会造成更复杂的IO通信,一方面我们要维护本地缓存不会丢失,另一方面需要与缓存层/DB层保证数据的一致性】亮点三:消息异步处理1、如何保证消息处理的绝对顺序2、如何避免消息重复消费【消息重复消费是可怕的,博主就曾在线上遇到过消息重复消费,造成了发布事故】3、如何避免消息堆积/丢失等问题#java##秋招##简历中的项目经历要怎么写##项目#  秒杀场景要不要加分布式锁?--第一版-牛客网 https://www.nowcoder.com/issue/tutorial?zhuanlanId=mPZY5M&uuid=b34217fc53ab4aaca52c6fd65bae548f
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务