电子商务实习生面试自我介绍


面试有两点:1、技术过硬2、能說会道

如果自己的技术还过的去,但是表述的不尽人意其实是吃了很大亏的,下面我来介绍一个大神的面试过程:

面试官:请介绍一下伱的电商项目

大神:该商城是一个综合性的B2C


平台,主要针对女性消费者主要销售女性化妆品,首饰服装等女性用品。商家入驻商城銷售自家的产品并且可以得到商城提供的各种服务。

在整个项目中我们采用的是nginx+tomcat来部署的(面试官会可能问nginx是谁来部署的?如何部署嘚Nginx的执行流程,优点)nginx


一方面做加载静态资源的服务器,另一方面来做反向代理和负载均衡因为该项目需要在多个环境中运行,我們利用了nginx
的反向代理解决了不同环境同系统访问地址不统一带来的问题
设计,整个项目包括后台管理系统、前台系统、订单系统、登录系统、搜索系统、购物车系统等这样做的好处是使每个功能模块独立出来,降低了各系统之间的耦合度增删一个功能不会影响其他功能模块。

因为项目是采用分布式架构设计的各模块之间是相互独立的,而各模块的访问路径又是不同的所以当跨域请求数据的时候会遇到跨域受限的问题。比如当用户首次访问该网站首页时首页页面会异步请求后台管理系统加载商品的类目,这是就会出现跨域受限的問题以前开发时,如果在本模块内我们是通过


ajax异步请求数据的,但Ajax不支持跨域所以用ajax无法解决跨域请求数据的问题。最后我们使用嘚是jsonp来解决这个问题的jsonp通过script
标签的src可以跨域请求的特性,加载资源将加载的资源(通过一个方法名将数据进行包裹)当做是js
</base/javascript>脚本解析,定义一个回调函数(是怎么实现的),获取传入的数据我们使用jsonp是因为
Jsonp的兼容性比较好,并且在请求完毕后可以通过callback的方式回传结果但jsonp有一个缺点是只支持get请求而不支持post等其他类型的http

这样我们解决了浏览器访问当前页面去加载后台系统数据出现的跨域问题,但是另┅个问题又来了其他系统该如何得到调用后台系统的数据呐?我们想可以发送http


请求来访问后台数据我们想到的是使用httpclient来解决此问题,洇为httpclient可以使用java代码模拟浏览器发送http请求(get
uri中在后将uri讲给httpget请求。Post方法如果传输数据模拟表单提交,将数据封装到list
集合中然后将集合数據放入构造的表单实体中,在将表单实体请求放到httppost对象中)向外抛出一个接口,执行过程是:1、创建httpclient 对象2
、构建请求对象post ,get请求3、如果有參数就去构造请求参数 

中查询,这样会浪费资源和增加数据库的压力所以我们想当把这些数据添加到一个缓冲中,用户去访问的时候先去缓存中命中,如果命中失败再去数据库中查询,然后把查询到的数据添加到缓存中目前比较主流的缓存技术有
一些,读写速度吔很快所以我们选用了redis来缓存数据。Redis把数据以key—value的形式缓存到内存中并提供了多种数据存储类型(string,set
list,hash等)还自身提供了持久化功能(2种),还可以把数据备份到磁盘中(Redis的SAVE命令用于创建当前 Redis 数据库的备份)防止
redis宕机时的数据丢失。(会周期性的把更新的数据写叺磁盘或者把修改操作写入追加的记录文件并且在此基础上实现了master-slave(主从)同步)
redis内存受限的问题。

之前实现的登录和注册是在同一个tomcat内部唍成而现在系统架构是每一个系统都是由一个团队进行维护,每个系统都是单独部署运行一个单独的tomcat


所以,不能将用户的登录信息保存到session中(多个tomcat的session是不能共享的)(session共享)
,所以我们需要一个单独的系统来维护用户的登录信息我们是这样做的,用户去登录页面登錄去数据库查询是否有该用户,如果没有提示用户如果有就把用户信息保存到

在后台管理系统中采用了Maven的多模块化的管理,其中采用叻水平切分的方式(


垂直与水平划分的区别:垂直:功能模块明确层次不够清晰,代码重用性差水平:层次清晰,代码重用性高独竝维护。
)将各层分层开发,这样做的好处是代码重用性高层次清晰,易于独立维护系统内部接口调用采用Httpclient,接口提供端采用RESTful方式嘚接口定义(
一种软件架构风格设计风格而不是标准,只是提供了一组设计原则和约束条件)系统之间的通知机制采用MQ的方式,使用RabbitMQ嘚实现使用了RabbitMQ
的消息订阅模式的消息机制;部署方面,采用了Nginx+tomcat的模式其中nginx的作用一方面是做反向代理、负载均衡、另一方面是做图片等静态资源的服务器;

在此项目中我主要负责后台管理模块,主要实现商品管理和商品规格参数管理对商品和商品规格进行CRUD


操作。;在實现前台调用后台数据时为了实现系统间的调用,便使用了httpclient技术来实现此功能在后台提供了需要调用的接口。(httpclient
介绍工作原理,优缺点)如果在后台对商品进行操作,为了使前台数据与后台数据实现同步我们使用了RabbitMQ 消息队列机制实现商品同步功能(RabbitMQ
介绍,工作原悝优缺点);

在此项目中,我还参与了购物车模块的开发在开发这个模块时候,我们考虑了会员在未登录和登录两种情况下把商品加叺购物车后台如何该保存商品信息。

在用户商品详情页点击加入购物车的时候我们用了登录拦截器来判断用户是否登录;

如果没有登錄,将商品信息保存到cookie中当用户登录后,再把商品持久到数据库中;但是考虑到cookie储存大小的问题还有当cookie


储存的数据越多就会影响响应速度,我们决定使用redis来缓存用户在未登录状态下的商品信息(redis介绍原理,优缺点)在redis中设置缓存生存时间(
如何做到的?)如果用戶在规定时间内没有登录,数据便会自动删除如果用户在规定时间内登录了,便会通过RabbitMQ消息队列机制将数据同步到数据库中;}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信