首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
永远都要在一起
中国科学院大学 智能驾驶系统工程师
发布于广东
关注
已关注
取消关注
mark
@Eckel丶:
秒杀项目常见问题
秒杀项目常见面试题 0、讲一下你这个高并发抢购系统 这是一个模拟了高并发场景的商城系统,它具备秒杀功能,并在经过几个版本的迭代之后成为支持高并发的高性能系统。为了解决秒杀场景下的高并发问题。引入了redis作为缓存中间件,主要作用是缓存预热、预减库存等等。针对高并发场景进行了页面优化,缓存页面至浏览器,前后端分离降低服务器压力,加快用户访问速度。在安全性问题上,我使用双重MD5密码校验,隐藏了秒杀接口地址,设置了接口限流防刷。最后还使用数学公式验证码不仅可以防恶意刷访问,还起到了削峰的作用。通过Jmeter压力测试,系统的QPS从150/s提升到2000/s。 1、秒杀中如何处理超卖问题?(网易)(百度)(美团)(滴滴)(字节) 直接由数据库操作库存的sql语句如下所示。依靠MySQL中的排他锁实现 update table_prmo set num = num - 1 WHERE id = 1001 and num > 0 利用redis的单线程特性预减库存处理秒杀超卖问题!!! 在系统初始化时,将商品以及对应的库存数量预先加载到Redis缓存中;(缓存预热) 接收到秒杀请求时,在Redis中进行预减库存(decrement),当Redis中的库存不足时,直接返回秒杀失败,否则继续进行第3步; 将请求放入异步队列中,返回正在排队中; 服务端异步队列(MQ)将请求出队,出队成功的请求可以生成秒杀订单,减少数据库库存,返回秒杀订单详情。 2、秒杀中如何解决重复下单问题?(网易) mysql唯一索引(商品索引)+ 分布式锁 3、热点数据失效(缓存击穿)问题如何解决?(网易)(美团) 设置热点数据永远不过期。 4、缓存和数据库数据一致性如何保证?(shopee)(美团)(网易) 使用canal组件实现(canal的原理,模拟MySQL的主从复制机制) 更新数据库后立即删缓存,然后下一次查缓存找不到数据后会再次从数据库同步到缓存。 5、减库存成功了,但是生成订单失败了,该怎办?(shopee)(美团)(华为) 非分布式的系统中使用Spring提供的事务功能即可。 分布式事务:将减库存与生成订单操作组合为一个事务。要么一起成功,要么一起失败。 CAP理论(只能保证 CP、AP)、BASE理论(最终一致性,基本可用性、柔性事务)。 分布式事务的两个协议以及几种解决方案: 全局消息 基于可靠消息(MQ)的分布式事务 TCC 最大努力通知 seata分布式事务控制组件。 6、做了什么限流削峰的措施?(字节)(美团)(华为) 秒杀令牌(token)加秒杀大闸限制入口流量。线程池技术限制瞬时并发数。验证码做防刷功能。 7、如何解决客户的恶意下单问题?(shopee) 封IP,nginx中有一个设置,单个IP访问频率和次数多了之后有一个拉黑操作。 8、多机器扣减库存,如何保证它的线程安全的?(shopee)(美团)(华为) 分布式锁。redission客户端实现分布式锁。 9、如何去减Redis中的库存?(华为) decrement API减库存,increment API回增库存。以上的指令都是原子性的。 10、缓存中的数据突然失效,导致请求全部打到了数据库,如何解决?(字节) 典型的缓存雪崩问题,给缓存中的数据的过期时间加随机数。 11、如果项目中的Redis挂掉,如何减轻数据库的压力?(滴滴)(华为) 组redis集群,主从模式、哨兵模式、集群模式。 主从模式中:如果主机宕机,使用slave of no one 断开主从关系并且把从机升级为主机。 哨兵模式中:自动监控master / slave的运行状态,基本原理是:心跳机制+投票裁决。 每个sentinel会向其它sentinel、master、slave定时发送消息(哨兵定期给主或者从和slave发送ping包(IP:port),正常则响应pong,ping和pong就叫心跳机制),以确认对方是否“活”着,如果发现对方在指定时间(可配置)内未回应,则暂时认为对方已挂(所谓的“主观认为宕机” Subjective Down,简称SDOWN)。 若master被判断死亡之后,通过选举算法,从剩下的slave节点中选一台升级为master。并自动修改相关配置。 12、页面静态化 那就把能提前放入cdn服务器的东西都放进去,反正把所有能提升效率的步骤都做一下,减少真正秒杀时候服务器的压力。 13、秒杀系统面临的问题有哪些?(滴滴)(华为)(字节)(美团) 高并发 超卖、重复卖问题 脚本恶意请求 数据库扛不住 加了缓存之后的缓存三大问题(击穿、穿透、雪崩) 14、秒杀系统设计? 1、redis缓存预热、预减库存 2、MQ异步下单 15、分布式会话问题?(顺丰科技)(网易)(美团) token+redis解决分布式会话问题。 Token是服务端生成的一串字符串,作为客户端进行请求的一个令牌,当第一次登录后,服务器生成一个userToken便将此Token返回给客户端,存入cookie中保存,以后客户端只需带上这个userToken前来请求数据即可,无需再次带上用户名和密码。二次登录时,只需要去redis中获取对应token的value,验证用户信息即可。 // 用户第一次登录时,经过相关信息的验证后将对应的登录信息以及凭证(token)存入reids中String uuid = UUID.rondom().toString();redisTemplate.opsForValue().set(uuid, userModel);// token下发到客户端存入cookie中进行保存// 再次登录时cookie携带着token到redis中找到对应的value不为空,表示该用户已经登陆过了,如果查询结果为空,则让该用户重新登陆,然后将用户信息保存到redis中。// 一般设置一个过期时间,表示的就是多久后用户的登录态就失效了。 16、线程池的执行过程?(美团)(滴滴) 先说一下核心参数: corePoolSize: 线程池核心线程数最大值 maximumPoolSize: 线程池最大线程数大小 keepAliveTime: 线程池中非核心线程空闲的存活时间大小 unit: 线程空闲存活时间的单位 workQueue: 存放任务的阻塞队列 threadFactory: 用于设置创建线程的工厂,可以给创建的线程设置有意义的名字,可方便排查问题。 handler: 线城池的饱和策略事件,主要有四种类型。 一个任务进来,先判断当前线程池中的核心线程数是否小于corePoolSize。小于的话会直接创建一个核心线程去提交业务。如果核心线程数达到限制,那么接下来的任务会被放入阻塞队列中排队等待执行。当核心线程数达到限制且阻塞队列已满,开始创建非核心线程来执行阻塞队列中的 业务。当线程数达到了maximumPoolSize且阻塞队列已满,那么会采用拒绝策略处理后来的业务。 17、你项目中难的难点是什么?(字节)(百度)(平安科技)(新浪) 一、限流、削峰部分的设计。 入口大流量限制 例如有10W用户来抢购10件商品,我们只放100个用户进来。 采取发放令牌机制(控制流量),根据商品id和一串uuid产生一个令牌存入redis中同时引入了秒杀大闸,目的是流量控制,比如当前活动商品只有100件,我们就发放500个令牌,秒杀前会先发放令牌,令牌发放完则把后来的用户挡在这一层之外,控制了流量。 获取令牌后会对比redis中用户产生的令牌,对比成功才可以购买商品 // 设置秒杀大闸redistemplate.opsForValue().set("door_count"+promoId, itemModel.getStock()*5)// 发放令牌时,先去redis获取当前大闸剩余令牌数int dazha = redistemplate.opsForValue().get("door_count"+promoId) if (dazha <= 0) { // 抛出一个异常 throw new exception; }else { String tocken = UUIDUtils.getUUID()+promoId; // 用户只有拥有这个token才有资格下单 redistemplate.opsForValue().set(userToken, token); } 使用数学公式验证码削峰,用户在下单秒杀的时候需要先输入验证码,这样的话分散了同一时间下单的用户数量 二、用户登录的问题(分布式会话) 做完了分布式扩展之后,发现有时候已经登录过了但是系统仍然会提示去登录,后来经过查资料发现是cookie和session的问题。然后通过设置cookie跨域分享以及利用redis存储token信息得以解决。 18、项目中Redis都做了些什么? 作为缓存中间件提升系统性能 预减库存,防止超卖功能实现 redis设置热点数据永不过期 19、项目中RabbitMQ都做了什么? 作为异步下单的中间件,利用队列排队下单缓解数据库的并发压力。 20、线程池技术中核心线程数的取值有经验值吗?(美团)(滴滴) CPU密集型业务:N+1 IO密集型业务:2N+1 21、TPS提升了多少?(美团) 基础架构下的tps是200 经过做动静分离、nginx反向代理并做了分布式扩展、引入redis中间件后达到了2500 tps。 26、一个人同时用电脑和手机去抢购商品,会颁发几个token?(美团) 首先多台设备登录属于SSO问题,用户登录一端之后另外一端可以通过扫码等形式登录。虽然用户登录了多台设备,但是用户名是一样的。为用户办法的token是相同的。我们为一个用户只会颁发一个token。 27、如何利用线程池实现了流量削峰? 设置最大线程数来限制浪涌流量 28、线程池的拒绝策略能详细说一下吗?(美团) ThreadPoolExecutor.AbortPolicy://丢弃任务并抛出RejectedExecutionException异常。DiscardPolicy://丢弃任务,但是不抛出异常。DiscardOldestPolicy://丢弃队列最前面的任务,然后重新提交被拒绝的任务CallerRunsPolicy://由调用线程(提交任务的线程)处理该任务 29、被线程池拒绝掉的那部分用户的秒杀令牌还有效吗?(美团) 无效,会从redis中删除, 30、线程池中阻塞队列的大小设置为多少合适?(美团) 设置为秒杀商品的个数减去核心线程数最合适。 31、项目上线之后想看JVM的GC情况在Linux中用什么命令?(美团) jstat -gc vmid countjstat -gc 12538 5000 // 表示将12538进程对应的Java进程的GC情况,每5秒打印一次 32、你做这个项目有什么预期吗?(美团) 33、秒杀令牌(token)每秒钟生成多少个?(美团) 跟随用户的请求会动态变化,令牌桶机制可以控制每秒生成令牌的个数。 34、能不能详细描述一下使用MQ异步减redis与MySQL库存的过程?(美团) redis中库存减成功后,生成一条消息包含了商品信息、用户信息消息由MQ的生产者生产,经由queue模式发送给消费方,即订单生成的业务模块,在该模块会消费这条消息,根据其中的信息进行订单的生成,以及数据库的修改操作。 35、做到了什么程度、库存量与并发度是多少?(美团) QPS:单机2000/s 36、MySQL中的表是怎么设计的?(美团)(字节) 秒杀用户表、商品信息表、秒杀商品表(记录该商品的秒杀始末时间,秒杀价和剩余量)、秒杀订单表(记录了秒杀用户名和秒杀的商品还有订单号)、订单详情表(通过秒杀订单号来查找对应的订单详情,里面记载更详实的业务信息)、 37、假设现在你的项目需要多人协作,有没有好的办法做一个协调?(美团)(华为) 38、如何只使用MySQL保证商品没有超卖?(大华) 将查库存、减库存两个sql语句作为一个事务进行控制,保证每一个库存只能被一个用户消费。两条语句都执行成功进行事务提交,否则回滚。但这样会导致并发很低。但也没办法。 39、数据库改库存的SQL?(美团) update table set stock = stock-1 where prom_id = ? and stock > 1; 40、如何防止用户一直点击下单按钮?(华为) 前端限制:一次点击之后按钮置灰几秒钟。 后端限制:由于秒杀令牌的设置,用户的一个下单请求会先判断用户当前是否已经持有令牌了,因为用户全局只能获取一次令牌,然后存入到Redis缓存中。用户有令牌的话直接返回 “正在抢购中”。
点赞 141
评论 13
全部评论
推荐
最新
楼层
暂无评论,快来抢首评~
相关推荐
05-30 13:22
门头沟学院 Java
中科院一区论文该不该写在简历上
大佬们,我想请教一个问题。我现在是想要找一个java开发的工作,准备的简历里的技能和项目都是关于前后端开发的,但我在"荣誉"一栏写上了"中科院一区论文"。这篇论文主要是关于人工智能文本检测的综述,和我要找的工作相关度并不高。我是六作,主要找了点资料加上写了点内容,参与的工作量不是很大。然而我最近在面试中总能碰到纠结于这篇论文的HR。我想请问这篇论文该不该写在简历上作为一个所谓的闪亮点?还是说HR会反感这种无关紧要的东西浪费了时间?
投递中科院自动化所等公司8个岗位 >
应届生简历当中,HR最关注哪些?
简历中的项目经历要怎么写
点赞
评论
收藏
分享
昨天 07:45
同济大学 ARM工程师
📖 《面试官让我手写操作系统内核,我反手掏出了……》
🌃 深夜·出租屋·代码坟场显示器蓝光刺破黑暗,烟蒂堆成小山。林默盯着屏幕上的报错日志,眼球布满血丝——这已是第17次编译失败。“缺页异常处理流程?”电话那头传来冰冷的男声。凌晨2点,突如其来的技术面,像把刀抵住喉咙。“虚拟地址…通过MMU转换物理地址…”林默声音干涩,“如果页表项无效,触发缺页中断,内核分配物理页框…”“具体函数名?”对方打断。冷汗滑进衣领。他想起昨天刷过的面经里用荧光笔标黄的答案:“__handle_mm_fault!先检查vma权限,再调用handle_pte_fault…”听筒里传来键盘敲击声。“下一个问题:设备树匹配失败,怎么定位?”💥 致命三连击驱动地狱面试官突然...
点赞
评论
收藏
分享
05-09 10:38
已编辑
湖南工商大学 自动化测试
双非一本,想进大厂,求建议
因为三、四月课比较多,作业也超级多,所以没办法全心全意的专注于技能的学习;本人又对自己要求比较高,学习一项技能喜欢从头到尾地学(初期的时候看黑马的网课喜欢从头到尾全部看完,浪费了好多时间),拖到现在才把简历完成,。四月初看到有人五六月也能拿到满意的 offer。心里仿佛有了一点点希望,于是又把自己的投递期限往后延了一些。整个四月一边上课,一遍学习测试。中间还遇到很多坎坷。虽然很痛苦,但是在这个春暖花开的四月,我也成长了很多。现在我终于觉得自己学的差不多,有勇气投递了,简历如下,想问问大家有什么建议吗?-------------------05.03 修改版 p2-------------------------------------05.09 修改版 p3------------------
nuc_ai_aclownfish:
你是我在牛客见过最美的女孩
听劝,我这个简历该怎么改?
点赞
评论
收藏
分享
05-12 17:00
门头沟学院 Java
26届日常实习需要怎么沉淀
如题,就一个面试然后挂了
king122:
你的项目描述至少要分点呀,要实习的话,你的描述可以使用什么技术,实现了什么难点,达成了哪些数字指标,这个数字指标尽量是真实的,这样面试应该会多很多,就这样自己包装一下,包装不好可以找我,我有几个大厂最近做过的实习项目也可以包装一下
点赞
评论
收藏
分享
06-03 11:24
南京邮电大学 Java
24届非目标无经验-C面经-C++面经-嵌入式面经-华OD
背景24届人工智能专业,非目标院校,考公失败,春招拿到过offer,但是工作环境原因拒了。毕业之后有找过专业相关的工作,但是人工智能算法相关的工作门槛太高,投了都没反馈。于是想找计算机其他方向的工作,考虑测试或嵌入式。想着尽快入职,就培训了四个多月,到12月中旬。这几个月的学习,一直刷力扣题,刷基础数据结构算法。网上了解到华为OD,然后经过同学的推荐找了栗栗姐。因为在学校的时候刷了一些算法题,所以重新复习起来也比较快,就是在力扣上刷一些经典题。12月底联系了栗栗姐,开始刷题面试,最后顺利拿到offer。机试1、静态代码扫描服务2、最大矩阵和3、攀登者考试的时候不要紧张,正常心态写代码才能思路清...
查看28道真题和解析
点赞
评论
收藏
分享
评论
点赞成功,聊一聊 >
点赞
收藏
分享
评论
提到的真题
返回内容
全站热榜
更多
1
...
我被光速开除了……
1.2W
2
...
字节last day,知无不言!
4042
华为开奖进度👉
热聊中
3
...
找实习三个月,感觉已无心气
3959
4
...
字节暑期捡漏!附面经
3841
5
...
分享我的秋招之路(2025届版)
3541
6
...
作为面试官,比较喜欢听到「实习收获」回答是什么样的?
3284
7
...
🐧应届生选offer防踩坑指南:为什么"有鹅选鹅"是当前最佳策略?
3021
8
...
你的经历比较单薄, 但简历又弥补了这一点--双非仔个人简历分享
2410
9
...
只有收到offer那一刻是开心的
2230
10
...
中金所一面
2221
创作者周榜
更多
正在热议
更多
#
晒一晒你的工位
#
76299次浏览
251人参与
#
24届的你们现状如何了?
#
69202次浏览
399人参与
#
写给毕业5年后的自己
#
8011次浏览
138人参与
#
电网笔面经互助
#
33107次浏览
331人参与
#
职场捅娄子大赛
#
339962次浏览
3430人参与
#
实习中的菜狗时刻
#
357807次浏览
3268人参与
#
今年形式下双非本找得到工作吗
#
137340次浏览
1041人参与
#
我的第一份实习怎么找的
#
101894次浏览
1001人参与
#
工作压力大怎么缓解
#
77811次浏览
925人参与
#
想给25届机械人的秋招建议
#
26433次浏览
219人参与
#
机械人,你的秋招第一份简历被谁挂了
#
137737次浏览
1972人参与
#
入职第三天,晒晒你的工位
#
30478次浏览
144人参与
#
25届非技术实习投递记录
#
116298次浏览
969人参与
#
实习必须要去大厂吗?
#
95203次浏览
1337人参与
#
你最满意的offer薪资是哪家公司?
#
25274次浏览
129人参与
#
面试被问期望薪资时该如何回答
#
248428次浏览
1444人参与
#
腾讯求职进展汇总
#
832017次浏览
8828人参与
#
请用你的专业向妈妈表白
#
15845次浏览
111人参与
#
选完offer后,你后悔学机械吗?
#
28657次浏览
157人参与
#
你的秋招第一场笔试是哪家
#
129295次浏览
1404人参与
牛客网
牛客企业服务