电商支付简历书写+面试可能问的问题+笔记总结
这个项目的核心是支付,所以面试官可能会对支付相关的问的比较多,大家做完项目,一定要按照下面说的去准备。
一、复习笔记
部分同学做完项目之后,可能给忘了,再次去看视频,可能比较花时间,如果你不想看视频回顾,那可以看这些笔记,我从网上找了一些笔记,你可以找对应的模块看:支付实战简易笔记
二、简历书写
简历书写的话,写法有很多,但是不同的写法,可能被问的会不一样,比如你加上了数据,那面试官可能会重点问,下面是一个通用写法。
微电商支付系统(最好自己命名,不要和课程名字一样) xxxx.yy ~ xxxx.yy(时间不能太短,至少3+个月)
项目介绍: 本项目具体完整电商平台的功能,比如实现了支付、购物车、商品管理、用户管理、订单管理、地址管理等常见功能,并且集成了微信第三方支付,用户可以丝滑在本网站购物。本人主要参与后端接口的开发,比如授权登录系统,购物车模块,订单支付模块等。 (项目介绍,如果你很熟悉,你也可以包装成参加比赛,毕业课设等的)
技术栈:使用主流的 SpringBoot + MyBatis + MySQL + Redis + RabbaitMQ 进行系统的搭建。
我的职责:负责后端的实现,具体如下:
1、对后端各模块业务进行具体编码实现,如购物车模块、订单模块的增删改查等。
2、购物车数据及时落地,使用 Redis 持久化保存购物车数据,提高购物车的读写性能,减少 MySQL 访问压力。(购物车这里有很大概率被问,很多人被问过了)
3、对接第三方支付文档,集成了微信支付,并且将支付模块独立成系统,实现与电商系统的解耦。
4、使用 RabbaitMQ 作为消费支付消息中间件,支付环节实现异步处理消息发送与接受,提高了接口响应速度。
学习收获(可有可无)自己写吧,主要突然自己解决问题能力得到提升,对 xx 知识的理解更加深刻,对对接第三方平台接口怎么样怎么样,反正自己写吧,根据你自己的学习收获来
三、项目可以如何优化?
具体可以参考我这个:何给项目加分:新功能+部署+加数据
四、总结一下大概会问啥
1、数据库表设计,比如让你谈一谈数据库表,这里的话,你只需要拿几个表来推理说就好了
2、购物车模块,这里主要集中在你为啥要用redis来存放?,你具体是如何做的,存放了什么字段?+ redis常规八股文
3、支付模块:各种支付连环炮,主要集中在各种支付异常处理上。
4、MQ模块:问各种MQ相关问题,具体到 RabbitMQ,这里有个视频讲解,可以刷下具体的面试题:消息队列RabbitMQ
总的来说,就是抓关键词来问,如果你不知道怎么复习,那么可以按照我这个说明来复习:9. 项目复习到什么程度?
五、项目知识总结
部分学员也整理了笔记,大家可以作为一个参考,这是 @孤独时代的罗永浩 同学总结的笔记,比较全面,也有很多通用问题,大家可以学习下
点击下载
目录

六、真实面经
学员1
1、一般一上来,面试官首先会问你,这个项目是做什么的?你为什么要做这个项目?对于这些问题,面试官其实就是想了解你做项目的初衷以及对项目的总体思考,这也是最基本的问题。
2、接下来,可能就会先挖一挖你对Spingboot的理解,问你为什么要用Spring boot?那这里就可以开始发挥了,嘿嘿,赶紧扯一波SSM就对了。
3、咳咳,重头戏来了,面试官要开始挖你对Redis的掌握和理解了,问你为什么用Redis而不用MySQL或Memcached?为什么不直接在JVM中做缓存?问你如果Redis在服务器挂了,内存中的数据怎么办?Redis持久化机制?Redis缓存穿透?缓存雪崩?怎么解决?Redis如何实现队列、分布式锁?等等
这里就需要你把握Redis了,掌握得好直接起飞,不然,可能在这里就翻车了,因为使用多一个组件,有好处也有坏处,面试官主要想考察你对技术选型的思考,总不能招一个人进来为公司埋坑吧,哈哈,不能为了用Redis而用Redis,任何组件都一样,不要真的成为只会搬运的码农了,这样的人,不要说大厂不会要,稍微有水平的公司都不会要,一定要去思考,而不是成为只会用工具的人,简称工具人。
4、Redis挖完了,就到第二个重头戏了,MQ,这里为什么是强调MQ,而不是说RabbitMQ,还是像上面说的,技术选型,不需要掌握所有MQ,但是你必须懂得所有MQ的特点,然后掌握本项目的MQ,最好去网上找一些博客,去看看MQ的底层运行机制,然后你就会明白为什么MQ的依赖包是AMQP,你就会明白关于消息的一系列问题是怎么解决的。
5、然后,面试官就会针对项目的业务,问问你对超卖的解决方案,毕竟还是电商项目嘛,然后问问项目难点和你的解决方案,这里就需要你自己去挖掘难点了,难点也是你项目的最大卖点,一定要准备,切记!
6、最后,面试官可能会问问你表设计相关的问题,问问你对字段的设计,问问你的SQL怎么写的等等。
这里其实就是面试官想看看这个项目你有没有真的去写过,还是糊弄过关。
以上是本项目的真实面试现场,但肯定不能囊括所有问题,因为每个面试官都不一样,所以小伙伴们可以根据自己的思考,以及面试经验,再去补充,然后面试就稳了,嘿嘿。
学员2
这里主要说一下购物车问题,有不少面试官会问你为啥要这样做,我这里我再次强调,不是最优解没关系,但你一定要先清楚为啥要这样
然后有一个需要思考的问题:就是购物车为啥要用 redis 来缓存,为啥要缓存这些字段,曾经有两个面试官和一个面试者探讨过这个问题,我截图给大家看一下:

还有的话,有些学员也有自己加了一些内容,大家也能学习一下

学员3
首先问多级分类怎么实现,然后问怎么让一个商品属于两个分类或者多个分类,设计表,回答了,用个中间表,面试官觉得可以。事后我觉得可能不是最优,看网上说淘宝用SKU在表设计。
然后问支付怎么实现,然后说怎么确保消息不丢,因为我回答订单支付怎么实现说了引入MQ将订单从未付款变成已付款的状态是可以异步削峰。
然后就回答了RabbitMQ怎么保证消息不丢失。然后就问支付宝那边没有支付消费发过来怎么样,这里我直接认为出错了,是基于排除故障和紧急处理来说的,然后面试官给我提醒下支付宝那边有没有提供查询支付订单支付状态的API,我一下就知道应该是要先向支付宝那边查询状态,才能判断用户是否支付成功,而不是直接判断用户支付失败。
然后就问我怎么设计一个支付宝的回调接口(把支付消息成功告诉调用者),我基于确认-重传机制回答。然后问下HTTP怎么是无状态的,什么是Cookie和Session
学员4
电商项目做了什么模块
说一下订单模块的流程
超卖
库存存在哪里 啥时候存进去的
说一下登录认证,Redis+Token怎么实现的
RabbitMQ是干嘛的
学员5
主要是针对支付模块进行了连环炮:
腾讯视频二面
主要拷打训练营里的项目
1 自我介绍,项目中的角色
2 实习六个月的时间段?到岗时间?
3 介绍一下电商支付商城
4 订单结构是怎样的?
5 我有五个商品,数量和价格都不一样,你是几个订单出来的?
6 你的商品id和数量是先在redis的购物车里添加更新再进入订单表吗?
7 我可能订单中已付款的几个商品进行退款,订单怎么扭转?
我这里才意识到场景题是怎么回事,还和面试官确认一下可不可以脱离自己项目去想办法…
8 你是要重新编辑订单,然后再重新插入吗?你觉得这合理吗?
拷打麻了,开始胡言乱语直接对数据库的那张表进行修改,最后面试官的方法是可以一个支付订单,底下很多子单…
9 未支付的订单怎么回滚?
10 Redis购物车具体是存储了哪些内容?什么数据结构?
11 Redis里只存储了id和数量,总价格是怎么计算的?
12 那你支付成功之后就清除redis里hash的key?
13 那你后续如果退货退款操作怎么办?上一题上套了,回答的是,这里我赶紧修正删的是field,要不没法做到部分的退货退款,追问中讲了下自己想的退款流程
14 库存管理?超卖问题?用悲观锁是不是性能太低了?用乐观锁性能还是不够呀?还有其他方案吗?
15 你先更新库存还是先插入订单?如果更新成功了,插入失败了怎么办?除了事务还有什么方法?
16 消息队列的有序性如何保证?我把rabbitmq和kafka的有序性保证按照博客内容讲了,面试官还是有点怀疑,问了一句“这么做的吗?”搞的我也不自信了
最后
大家按照上面的去复习,复习完就有底了,当然,项目的背后,其实还是八股文的综合运用,所以大家八股文原理只要学好了,就都不慌