欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  互联网

面试:电商项目

程序员文章站 2022-06-26 13:50:46
1.行业概念B2C:商家对客户,京东、当当、发展为B2C平台,天猫B2B:商家对商家,阿里巴巴(不零售,只批发,淘宝很多商家都会去阿里巴巴进货)C2C:个人对个人,淘宝市场,淘宝,QQ商城2.系统功能后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息订单系统:提供下单、查询订单、修改订单状态、定时处理订单搜索系...

1.行业概念

  • B2C:商家对客户,京东、当当、发展为B2C平台,天猫
  • B2B:商家对商家,阿里巴巴(不零售,只批发,淘宝很多商家都会去阿里巴巴进货)
  • C2C:个人对个人,淘宝市场,淘宝,QQ商城

2.系统功能

  • 后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能
  • 前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作
  • 会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息
  • 订单系统:提供下单、查询订单、修改订单状态、定时处理订单
  • 搜索系统:提供商品的搜索功能
  • 单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息

3. 项目介绍

3.1 项目的模式

属于B2C平台,商家对客户

3.2 项目的功能

提供B2C的平台,其中自营商品也有商家入住,类似天猫

3.3 项目的架构

采用分布式的系统架构,其中前台系统和单点登录系统采用了集群的方式部署,在后台管理系统中采用了Maven的多模块化的管理,其中采用了水平切分的方式,将pojo、dao、service、web分层开发,这样做的好处就是可以重用性更高
系统之间的通知机制采用MQ的方式,使用RabbitMQ的实现,使用了RabbitMQ的消息订阅模式的消息机制
系统的接口还对JS的跨域做了支持,采用了jsonp的解决方法,在后台接口中扩展了spirng提供的jackson数据转化器实现

3.3 项目的部署

采用了Nginx+tomcat的模式,其中nginx的作用一方面是做反向代理、负载均衡、另一方面是做图片等静态资源的服务器

4.项目服务

  1. 后台管理系统:主要实现商品管理、商品规格参数管理、订单管理、会员管理等、CMS(内容管理系统)等,并且提供了跨域支持
  2. 前台系统:主要是面向用户访问,使用Httpclient和后台系统接口做交互,并且该系统在部署上采用集群的方式
  3. 单点登录系统:主要是提供集中用户登录凭证的集中解决方案,提供和用户信息相关的接口,比如说用户注册、查询等接口
  4. 订单系统:主要是提供和订单相关的业务接口,在订单系统了做了严格的数据校验以及高并发写的支持(这里可以说使用队列实现),并且使用了Quartz定时任务实现对订单的定时扫描,比如说关闭超时未付款的订单
  5. 搜索系统:主要是提供商品的搜索,采用开源企业级系统Solr实现,采用了MQ机制保证了商品数据可以及时同步到solr中
  6. 会员系统:主要是维护用户的信息,已购买订单、优惠券、系统消息、修改密码、绑定手机等功能
  7. 缓存:主要是用Redis实现,并且对Redis做了集群来保证Redis服务的高可用。
  8. 支付系统,主要是负责订单的支付、对账等功能,主要是对接了支付宝的接口

5.常见问题

5.1支付请求超时怎么处理?

重试,一般三次,每次重试都要停顿一会,比如,以第一次停顿1秒,第二次停顿2秒,第三次停顿3秒
给订单标识付款异常状态,并且发出警告(邮件、短信)给相关人员
写个定时任务,定时处理异常状态的订单

5.2支付成功但无数据返回,或者返回按时,怎么处理?

请求了支付宝/微信,但是没有接受到响应,就认为该订单没有支付成功,并且将订单标识为异常状态
使用定时任务处理
做一个对账的任务,实时处理异常状态的订单

5.3项目的金额用什么数据类型存储?

第一种:使用BigDecimal来表示金额(igDecimal在进行入库时, 数据库选择decimal类型, 长度可以自定义, 如18; 小数点我们项目中用的是2, 保留2位小数. 此外还要注意的就是默认值, 一定写成0.00, 不要用默认的NULL, 否则在进行加减排序等操作时, 会带来转换的麻烦)
第二种:数据库里存分为单位的整型数据

5.4项目接口如何保证安全性?

  1. 凭证。 根据用户名或者用户id,结合用户的ip或者设备号,生成一个token。在请求后台,后台获取http的head中的token,校验是否合法(和数据库或者redis中记录的是否一致,在登录或者初始化的时候,存入数据库/redis)
  2. 加密。客户端和服务器都保存一个秘钥,每次传输都加密,服务端根据秘钥解密

客户端:

1、设置一个key(和服务器端相同)

2、根据上述key对请求进行某种加密(加密必须是可逆的,以便服务器端解密)

3、发送请求给服务器

服务器端:

1、设置一个key

2、根据上述的key对请求进行解密(校验成功就是「信任」的客户端发来的数据,否则拒绝响应)

3、处理业务逻辑并产生结果

4、将结果反馈给客户端
  1. 第三方支持。比如spring security-oauth

本文地址:https://blog.csdn.net/xueguchen/article/details/108196349

相关标签: 面试题汇总