请描述一下这个系统?
【回答技巧】
从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方便客户端页面解析数据。
这个系统的用户认证是怎么实现的?
使用用户名密码认证方式。
1、 用户认证
2、 用户身份校验
用户身份校验使用springmvc提供拦截器完成。
流程:
公开权限:用户不需要登录就访问地址。在单独的配置文件进行配置。比如系统登录页面。
电商项目介绍
电商行业的发展
从截图我们可以发现,市场需求推动了电商的飞速发展,而且我们应该坚信电商会一直火下去,为了“钱途”我们必须学好这个项目!
电商行业技术特点
①技术新:(NoSql推广首在社区网站和电商项目),发展快,需求推动技术的革新。
②技术范围广:除了java,像淘宝前端还使用了PHP,数据库MySQL或者oracle,nosql,服务器端使用Linux,服务器安全、系统安全
③分布式:以前是在一台机器上做运算,现在是分散到很多机器上,最后汇总起来。(集中式向分布式进行考虑)由需求来推动
④高并发、集群、负载均衡、高可用:由并发问题采用集群进行处理,其中,集群会涉及服务器的主从以及分布问题,使用负载均衡。(权重高低)高可用是对用户而言,用户的服务不中断(系统升级,服务不中断,淘宝每周更新2次)。
⑤海量数据:双11,570亿的背后,订单有多少?浏览次数有多少?商品会有多少?活动相关数据?
⑥业务复杂:不要简单的认为是:商品展示出来后,加入购物车后购买就完成了。后台特别复杂,比如优惠(包邮、满减)
⑦系统安全:系统上线必须通过系统安全部门审核通过。前年CSDN数据泄露。快捷酒店数据泄露(通过身份证就可以查看你的开房记录)。近几年,安全意识逐步在提高。
电商行业的一些概念
B2C:商家对客户,京东、当当、发展为B2C平台,天猫(B2C平台淘宝商城由马云提出,率先发展为平台),1号店也是(在上海)
B2B:商家对商家,阿里巴巴(不零售,只批发,淘宝很多商家都会去阿里巴巴进货);
C2C:个人对个人,淘宝市场,淘宝,QQ商城;
系统功能
本商城系统是一个综合性的B2C平台,类似京东商城、天猫商城。
会员可以在商城浏览商品、下订单,以及参加各种活动。
商家可以在入住淘淘商城,在该平台上开店出售自己的商品,并且得到淘淘商城提供的可靠的服务。
管理员、运营可以在平台后台管理系统中管理商品、订单、会员等。
客服可以在后台管理系统中处理用户的询问以及投诉。
思维导图
说明:
上图中,数字标号为功能模块开发优先级,鉴于本系统搜索模块使用的技术点Lucene,由2级别提升为1级别。期初的电商项目是没有购物车功能的(不同商家发货,付款方式也多样化,这样过于复杂)
上述功能不要强行记忆,以商品为中心进行发散理解记忆!如下图
首先我们要有商品,管理员可以在系统中管理商品,用户可以查看商品。
商品多了之后要有类目模块,管理员可以管理类目信息,用户可以根据类目检索商品。
有了商品之后,要有人(会员)去买东西,普通用户注册为会员,会员可以登录到系统管理自己的信息(密码等)
买了之后会生成订单,会员可以购买商品并且可以下单,管理员可以管理订单。
有了订单之后需要支付(在线支付/货到付款)
这样,我们就可以把整个电商项目的功能记清楚了!
分布式系统架构
传统架构
各个系统说明:
后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
搜索系统:提供商品的搜索功能。
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
谈到分布式架构,我们必须对比传统架构才能彰显其优势。
最为明显的一点,在传统的架构中,如果某个功能需要进行维护,那么我们必须停掉整个服务,这对于公司的运营会造成损失。分布式系统在核心功能模块使用单独服务器,维护部分模块不影响用户的其他操作。
在海量数据处理方面,传统架构显得比较乏力;分布式系统架构采用服务器集群,使用负载均衡,海量数据处理游刃有余!
在性能(检索)以及维护方面,分布式系统架构也有较为明显的优势。
本系统人员配置情况
产品经理:3人,确定需求以及给出产品原型图。
项目经理:1人,项目管理。
前端团队:3人,根据产品经理给出的原型制作静态页面。
后端团队:20人,实现产品功能。
测试团队:3人,测试所有的功能。
运维团队:2人,项目的发布以及维护。
开发流程
后台开发环境
需要注意,在几个环境中,预发布环境和生产环境几乎一样,开发环境和测试环境是独立存在的,每一个阶段的活是由对应的工作人员来负责的。
此外,我们还需要熟悉 SVN主干、分支、标签开发过程流程:
整个开发沿着主线进行,在一个版本定型后,前一个版本出现bug,那么此时会对bug进行修复,投入使用的依旧是之前定型的那个版本,待前一个版本的bug修复好了之后,会定义一个新的版本,主线不会改变,如果改动不大,那么只需修订问题,继续沿用此版本(1.0.x),只有出现较大改动时,才会升级一个新的版本号(1.1.x)。所有动作,交替进行,沿主线向前推进!
涉及技术
Spring、SpringMVC、Mybatis
JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV
Redis(缓存服务器)
Lucene、Solr(搜索)
httpclient(调用系统服务)
Mysql
Nginx(web服务器)
Quartz(定时任务)
RabbitMQ(消息队列)
开发工具和环境
Eclipse 4.4.1
Maven 3.2.3
Tomcat 7.0.47(Maven Tomcat Plugin)
JDK 1.7
Mysql 5.6
Nginx 1.5.1
Redis 2.8.9
Win7 操作系统
SVN(版本管理)
需要注意所有开发工具的版本号要对应(一致),否则会出现冲突问题,面试大忌!(常识:电商项目火起来的时间不是很久,在开发的时候,很多开发工具和环境不像之前那些传统系统那么老旧,这点一定要引起注意!)
电商面试题
2.1 说说你最近做的这个项目的背景,简单的介绍一下你这个项目?
背景
电商项目的背景一般是由市场推动的,比如行业竞争或者经营方式的改变(营销理念)。竞争的形态也发生了巨大的变化,从以产品、价格为主的竞争转向以服务为主的竞争,服务成为主导竞争格局的重要因素。渠道作为企业完成客户沟通、产品/服务交换过程以及实现价值、产生效益的重要载体,发挥了采集、传达客户和竞争对手等市场信息,为买卖双方提供便利,协调供需矛盾,为客户提供合适的产品与服务,向客户传递产品/服务信息,实现营销/服务目标等重要的功能。
XXX商城之前主要以实体店为主,进行批发与零售。业务也相对比较传统,为了提升业务绩效,增强客户满意度和粘性,另一方面,也为基于互联网的商务模式创新奠定基础。针对上述行业环境变化和业务战略目标,xxx商城网上终端预约销售基础上,即将启动网上商城建设项目,用于建立网上终端、营销案在线销售及相关辅助功能,包含商品管理、订单管理、类目管理、客户管理、合作商管理、客服管理、购物平台、内容管理等,很大程度上分担了人工的压力,对提高客户服务效率和客户满意度能够起到较好的作用。基于此,XXX公司提出建设网上商城建设项目工程。
项目介绍
标签:mapper,订单,鲜儿,系统,企业级,商品,模块,电商 From: https://www.cnblogs.com/web1123/p/18394114