确实是,同一个项目每个人挖出来的和自己改出来的亮点都不一样,而且项目烂大街是因为写的人多,不是项目本身就是下水道,烂大街和烂完完全全是两个不同的东西。但是话说咱连名字都不换一个的吗
15 3

相关推荐

你xx项目/xx实习/xx经历中 你觉得最有挑战、创新点、你最大的成长是什么?面试一共一小时,抛开八股、算法估计只有半小时,如何在这短短的半小时给面试官留下最有差异化、竞争力的印象其实就取决于这类问题的回答。大部分人可能的回答方式是:xx项目用了xx技术,优化了性能xx%,节省了人力xx%。 这种回答固然没有问题,但是没有足够的让面试官了解到最全面的你。好的回答方式应当是从项目背景出发,按照项目背景->产品设计->技术选型->问题发现->产品优化->技术优化->最终成果 这样的思路去回答问题。用大家最熟悉的外卖项目举个例子:面试官:你这个项目最大的难点在哪?回答:【面试官您好!我选择重点分享 “订单高峰期高并发处理与系统稳定性保障” 这个核心技术难点的实践过程。首先先介绍下项目背景:苍穹外卖是覆盖 C 端用户、B 端商家、骑手端的全链路 O2O 餐饮平台,核心支撑 “下单 - 接单 - 配送 - 支付 - 统计” 全流程,而午晚高峰的高并发下单是平台最核心的场景之一,直接影响三方用户的核心体验,也是整个项目最关键的技术挑战。从产品设计来看,我们的核心诉求很明确:高峰时段用户下单支付不能卡顿、不能超时,要求响应时间≤3 秒;商家要实时收到订单通知,骑手能及时获取配送单,同时绝对不能出现菜品超售的情况 —— 毕竟超售不仅会让用户投诉,还会影响商家口碑。初期我们的技术选型是 SpringCloud Alibaba 微服务架构,因为微服务能横向扩展,应对并发压力;用 MySQL 存订单核心数据,Redis 缓存热销菜品这类热点数据,RabbitMQ 来解耦订单推送、短信提醒这些异步通知,核心思路就是 “拆分压力、解耦流程”,让每个服务专注做自己的事。但压测的时候,问题很快就暴露了:当并发量超过 300QPS,下单接口响应时间直接冲到 5 秒以上,完全不达标;而且热点商家比如连锁快餐,出现了明显的超售 —— 多个用户同时下单同一款菜品,库存校验没控制好,导致实际卖出的比库存多;另外骑手端还出现订单推送延迟,因为 RabbitMQ 队列堆了太多消息,消费速度跟不上。发现这些问题后,我们先从产品层面做了优化:把下单流程拆成优先级,核心的 “创建订单 + 库存预占” 先完成,让用户快速看到下单成功,而积分赠送、短信通知这些非核心流程,后续异步处理;还加了库存预占机制,用户下单后先占住库存 5 分钟,没支付就自动释放,从业务上避免超售;骑手端这边,给订单分了级,距离商家近、路线顺的骑手,优先推高优先级订单,比如快超时的单子。技术层面的优化是重点,我们做了四件核心事:第一是并发控制,用 Redis+Lua 脚本实现库存原子预减,因为 Lua 脚本能保证操作的原子性,不会出现并发冲突;给热点商家加了 Redisson 分布式锁,限制单商家的并发下单量,避免单个商家拖垮整个系统。第二是流量防护,用 Sentinel 对下单接口做限流,峰值设到 500QPS,超出的请求就返回 “高峰期稍候再试” 的友好提示,防止系统雪崩。第三是异步提速,把下单流程拆成 “同步核心 3 步 + 异步非核心 4 步”,异步任务通过 RabbitMQ 投递,消费端用多消费者组加线程池提升处理速度,还设了死信队列兜底失败的消息,避免消息丢失。第四是缓存优化,把热点商家的菜品信息、库存都缓存到 Redis,设 3 分钟过期;同时用 Canal 监听 MySQL 的库存变更,实时同步到 Redis,保证缓存和数据库一致。最终的成果也很显著:高峰时段能支持 500+QPS 的并发下单,接口响应时间控制在 800ms 以内,超时率低于 0.1%;热点商家的超售率降到了 0,骑手端的订单推送延迟也≤500ms,完全满足了产品设计的核心诉求,也保障了平台高峰时段的稳定运行。这个难点的解决,让我深刻体会到 “产品诉求引导技术方案,技术优化落地业务价值” 的思路,也积累了高并发场景下 “限流、缓存、异步、分布式锁” 的实操经验,也是我做这个项目中收获的最大成长】这种有头有尾的介绍,能够带给面试官一种你能依赖自己设计架构-发现问题-解决问题-总结问题的能力,从而与其他同学拉开差距。如果有帮助,希望能送朵小花。
点赞 评论 收藏
分享
12-03 16:43
已编辑
门头沟学院 Java
bg:单二硕居然不是一对一,是一对二?两个人一个先回答一个补充。介绍下毕业课题?是深度学习的,简单说了下JVM了解吗?说了JVM的内存结构,哪些是线程私有哪些是线程公有;垃圾回收,可达性分析算法,标记清除、标记整理、复制算法。另一个人补充了具体的垃圾回收器。说说mysql的索引?另一个人先说了,说了底层数据结构,分类。我补充了节点是以页为单位,每页默认16kb。说说mysql索引的注意事项?创建的时候注意使用区分明显的字段,使用的时候注意最左匹配原则。另一个人补充索引失效的其他情况,我补充说有一种函数索引,可以提前创建好,这样使用对应的函数时索引也会生效。说说mysql的数据量达到多少即使使用了索引,性能也会很慢以及具体原因,3000w?4000w?我回答即使是上亿的数据,最多也就四层b+树,查询应该不会很慢吧。面试官说让我下来去了解下”mysql 磁盘存储的页的大小 以及其带来的数据表索引大小限制。“ 查了也没懂,太菜了Redis的基本数据结构有哪些,分别适用于什么场景;另一个人说了一个String。我补充,字符串,hash,List,set ,Zset。说了底层的SDS,压缩列表,紧凑列表,跳表,hash。场景就说了排行榜,滑动窗口限流这俩。Redis使用时的注意事项,有哪些容易导致系统崩溃的场景;说了缓存三剑客。(其实应该还说说大Key的)Redis的集群架构方案有哪些,分别适用于什么业务场景?主从,主从+哨兵,cluster。场景看具体业务大小吧。Redis为什么读写速度快?内存,单线程,io多路复用,后续引入多线程处理网络请求。sql题目:设计一个数据表,存储所有同学月考的语文、数学、英语等各科成绩;写一个SQL,查询出总成绩大于200分的学生姓名和总成绩,并按照总成绩排名用过maven吗?管理依赖,打包编译这些用的idea的插件。介绍项目。反问业务类型,工作时间。
查看13道真题和解析
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务