电商项目中的经典问题(持续更新)![](static/image/smiley/alibaba/35.gif)
请描述一下这个系统?【回答技巧】
从3个方面来回答这个问题:
|--系统背景及系统概述
|--系统包括的业务模块及主业务流程
|--责任模块
【回答示例】
第一个方面:系统背景及系统概述
优购时尚商城是香港上市公司百丽国际公司为拓宽旗下运动品牌服饰市场而开发的一个专业销售购物网站户外运动装备的网站。
第二个方面:系统包括的业务模块及主业务流程
改项目分为前台和后天2大模块:
前台又包含:全部商品分类、运动馆、户外馆、鞋靴馆、女装馆、男装馆、母婴馆、生活馆、会员中心、秒杀、闪团、INNET运动鞋、潮流馆。每一个分类都是对该范围类商品的一些具体分类以及明星商品的展示、新品展示、品牌连接等等。前台还包含用户的登录注册、我的优购、我的订单、公告等模块,主要用于客户下单。结算、收货等一系列购物操作。以及个人中心的个人信息、订单信息的查看和维护。
后台后台包含:商品管理、订单管理、代客下单、支付管理、广告管理、合作伙伴管理、会员管理、权限管理、系统配置、报表管理等模块。
第三方面:责任模块
这个系统我主要负责的是商品管理模块的CRUD以及商品的属性管理、商品的上下架、品牌管理、订单管理
前台主要负责商品的主页面展示、商品的筛选、商品详情展示。在商品详情页面采用freemarker页面静态化技术。降低服务器压力减少对服务器的I/O。商品详情页实现了添加购物车和结算功能。购物车根据与项目经理协商采用cookie技术实现。【此处可以加入几种保存方案:1.保存数据库{问题是造成数据库压力倍增} 2.使用cookie{用户更换电脑或浏览器添加购物车商品丢失,但是此网站不考虑} 3.最好解决方案保存到redis数据库。前两个问题全部解决】。提交订单功能可能出现并发问题。原因在于大量用户都可能购买。库存出现不足问题。这里可以插入自己对数据库的理解:锁机制【悲观所:线程等待。效率太低。乐观锁:解决了悲观所的效率问题。可选。但是update语句本身就带锁。所以不用加锁就能解决这个并发修改库存问题】,前台我还负责了个人中心的模块。包括:我的订单、退换货订单、我的收藏、个人资料、收货地址等功能模块。
说说系统的架构?
本系统使用maven进行构建,
将系统分成了技术基础架构模块、前台工程模块、后台工程模块、主工程模块、文件系统工程模块。
扩展问题:
Spring在系统中如何使用?
Spring对控制层、业务层、持久层的bean进行统一管理。
对控制层的action,通过@controller注解,自动组件扫描方式将action在spring容器注册。
对业务层的service,在spring配置文件进行配置,好处是方便系统开发与维护。Spring对业务层进行事务控制。
对持久层的mapper,通过spring与mybatis整合包的mapper扫描器自动扫描编写的mapper。
本系统如何用maven开发?
本系统采用maven进行模块划分,将系统分成了核心基础架构模块、前台工程模块、后台工程模块、主工程模块、文件系统工程模块
核心基础架构模块:
此模块包括了对spring、mybatis的配置信息
pom.xml中配置jar包的依赖,方便统一管理本项目的jar包依赖。
前台和后台所有业务和数据访问层的编码实现。方便子模块重复调用。
前台工程模块:
此模块包括系统前台所用到所有controller。负责调用核心基础模块中的业务方法进行前台数据展示
后台工程模块:
此模块包括系统后台所用到所有controller。负责调用核心基础模块中的业务方法进行商家的后台管理
主工程模块
此模块是将各各子模块进行聚合,最终生成一个war包。
文件系统工程模块:
次模块用于保存系统的所有文件。包括商品图片、报表模板、企业公告等文件。用于分散服务器I/O提高项目访问效率。
扩展问题:
maven仓库是怎么构建?
实际开发在局域网中公司创建了一个maven私服,私服上存放系统所用到的jar包。
本系统实现国际化了吗?是怎么做?
本系统没有实现国际化,本系统是具有中国特色的电商项目,不需要实现国际化
这个系统mybatis是怎么用的?或这个系统持久层如何实现的?
1、mybatis框架
使用mybatis官方出的mybatis与spring整合包将mybatis和spring整合。
针对单表的增、删、改、查使用mybatis官方提供的逆向工程,根据数据库表的结构生成mybatis当中的mapper.xml、mapper.java、po及相关的类。在service中直接使用自动生成的mapper接口。
针对自动生成的mapper无法满足业务需求时,自定义mapper,一般情况下多表查询需要自定义mapper。
Mapper开发完成通过mybatis与spring整合包中的mapper扫描器将mapper在spring容器中进行注册。
扩展问题:(回答问题切莫问什么答什么。自己要发散思维。扩展的回答面试问题)
1、 mapper的扫描器是如何使用的
在spring配置文件配置mapper扫描器,配置项指定扫描的包的路径。
使用扫描器需要遵循一些mapper编写规则:
Mapper.xml和mapper.java在同一个目录,且文件名相同。
Mapper.xml中的statement 的id和mapper.java中的方法名一致。
Mapper.xml中的statement的parameterType和mapper.java中的方法输入参数一致。
Mapper.xml中的statement的resulttype和mapper.java中的方法输出结果类型一致。
这个系统springmvc是怎么用的?
使用springmvc注解开发。
1、 对于页面展示类的方法,控制器方法返回string ,string就是逻辑视图名。
2、 对于提交类的方法,控制器方法返回json数据,使用@Responsebody注解将action方法的返回值转为json输出。
Responsebody注解内部使用jackson将java对象转为json
本系统ajax+json具体是怎么做的?action的方法返回的json是如何实现的?
ajax+json:页面采用ajax提交,服务端返回是json,
页面提交统一采用ajax Form提交方式,使用了jquery提供form组件,在开发时和原始form的post 提交方法配合使用,使用jquery Form组件更能简化开发提高用户体验和开发效率。
扩展问题:
系统哪些地方使用到了json?
1、 图片上传返回的相对和绝对路径。方便图片回显和URL保存。
2、 购物车中的最小销售单元的数据保存
3、 权限列表使用json数据表示。
4、 个人中心的省市县联动数据使用json返回
使用json目的:使用json方便客户端页面解析数据。
|
|