推荐 面试技巧 提高练习-电商项目遇到的面试题(有参考答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
关于电商项目面试遇到的问题:
1、电商项目中有没有用到多线程,哪些地方要用多线程?
2、你项目对于订单是怎么处理的,假如一个客户在下订单的时候没有购买怎么办,对于顾客在购买商品的时候你们怎么处理你们的库存?
3、计算一下133平方是多少?
4、你平时测试的流程?
5、你们数据库怎么设计的?
6、你们怎么处理redis缓存的数据,怎么删除的?
7、你觉得分布式开发的缺点是什么?
8、缓存技术你觉得在什么时候用的比较多?
9、你们怎么管理你们的内存?
10、说说你对于web前端的优化?
11、插入商品的话,要求级联插入几张表,你们当时是怎么实现的?
12、支付接口是怎么做的?
13、redis为什么可以做缓存?
14、当被问到某个模快存在安全性问题(sso单点登录系统)时,如何回答?
15、solr怎么设置搜索结果排名靠前(得分)?
16、activeMQ在项目中如何应用的?
17、activeMQ如果数据提交不成功怎么办?
1、电商项目中有没有用到多线程,哪些地方要用多线程?
项目中自己写的程序没有用到多线程,通常使用开源框架编写程序,框架中已将多线程进行了封装。
2、你项目对于订单是怎么处理的,假如一个客户在下订单的时候没有购买怎么办,对于顾客在购买商品的时候你们怎么处理你们的库存?
按照我们的理解:
如果客户在下订单的时候没有支付成功,最终订单没有完成,此商品信息还在购物车。
如果未完成的订单在一定的时间内不支付,自动取消。
如果管理库存?
对于库存的管理,我们有专门的团队负责一个进销存系统的来管理库存。
我们是在用户付款后再调用进销存系统的接口,更改库存。
3、计算一下133平方是多少?
需要详细确定题目意思?
4、你平时测试的流程?
开发过程中自己编写单元测试类对dao、service方法进行测试。
一个模块开发完成我会对模块的业务流程进行测试。
整个系统开发完成我们团队进行集成测试,测试通过后提交给测试人员
系统进行测试阶段,我会协助测试人员进行缺陷修复。
5、你们数据库怎么设计的?
先对自己负责模块的需求进行分析,搞清楚业务需求。
定义出一个一个实体(表)
根据分析的业务需求定义表的一个一个字段
分析表与表之间的关系,定义外键。
6、你们怎么处理redis缓存的数据,怎么删除的?
redis缓存的数据有一些是常驻缓存的,当数据库中数据有变化时做数据同步。
有一些缓存是设置有效期的,当缓存到期后会自动删除。
删除redis缓存使用del或者hdel命令。
7、你觉得分布式开发的缺点是什么?
1. 和集中式相比,功能之间的调用使用的是接口调用,而不是直接调用。需要编写稳定有效的API。
2. 分布式系统之间的通信无法直接通知,需要使用消息机制(MQ)进行通知。
3. 分布式开发涉及到多个开发团队,开发过程中需要频繁的进行沟通
4. 分布式开发中测试更加复杂,有效的测试用例可以帮助我们更好的剥离项目逻辑与协调组件系统。而小的集中系统开发甚至可以不使用测试用例。
5. 集中式系统开发可以使用debug从头到尾进行调试,而分布式层次太深,组件调用太多,使用debug很难整体调试。需要有效使用日志组件,更好的帮助我们找到问题。
8、缓存技术你觉得在什么时候用的比较多?
不是什么地方都需要使用缓存,符合以下两个条件才需要使用缓存。
1. 数据访问的频率很高
2. 数据修改的频率低
另外在使用缓存的时候,要注意缓存是否有效利用,需要及时清理掉缓存中不常用的数据
9、你们怎么管理你们的库存?
我们主要是负责商城功能的开发,不直接管理商品库存。
对于库存的管理,我们有专门的团队负责一个进销存系统的来管理库存
我们是在用户付款后再调用进销存系统的接口,查询商品的库存数量。如果没有库存,则付款失败并提示用户。
10、说说你对于web前端的优化?
前端是庞大的,包括 HTML、 CSS、 Javascript、Image 、Flash等等各种各样的资源。前端优化是复杂的,针对方方面面的资源都有不同的方式。那么,前端优化的目的是什么 ?
1. 从用户角度而言,优化能够让页面加载得更快、对用户的操作响应得更及时,能够给
用户提供更为友好的体验。
2. 从服务商角度而言,优化能够减少页面请求数、或者减小请求所占带宽,能够节省可
观的资源。
总之,恰当的优化不仅能够改善站点的用户体验并且能够节省相当的资源利用。
前端优化的途径有很多,按粒度大致可以分为两类,第一类是页面级别的优化,例如 HTTP请求数、脚本的无阻塞加载、内联脚本的位置优化等 ;第二类则是代码级别的优化,例如 Javascript中的DOM 操作优化、CSS选择符优化、图片优化以及 HTML结构优化等等。
另外,本着提高投入产出比的目的,后文提到的各种优化策略大致按照投入产出比从大到小的顺序排列
11、插入商品的话,要求级联插入几张表,你们当时是怎么实现的?
此问题主要是考察商品表设计问题:
电商网站中,商品表设计是电商的核心业务,在电商系统中占有很重要的地位:那么在商品业务系统中,保存商品表,就需要涉及很多相关表保存:
商品表涉及简单业务流程表:
1)商品分类表
2)分类属性表
3)货品表
4)货品表规格参数
5)商品表
6)品牌表
商品在保存时基本需要考虑以上几张表的关系,保存商品表必须级联保存商品属性表,同时必须保存货品表以及货品对应的规格参数表,同时必须维护商品对应的商品规格属性表
12、支付接口是怎么做的?
企业支付可以使用银联进行支付,如果使用银联进行支付,那么需要去申请,填写申请材料,获取银联提供的密钥。
企业还可以是使用第三方支付进行支付。
一般支付接口流程都大同小异。下面以支付宝为例:
接口开发最重要的应该是理解数据交互流程了,流程弄清了,并理解为何这么设计,开发起来也是事半功倍
首先,要准备下面几个参数:
企业支付宝账号的PID(也叫ParnerID)和KEY,如果使用RSA签名而不是MD5的话,还要把RSA私钥准备好支付时用户看到的东西:商品名称(subject)、支付总额(total_fee)、购买数量交易后的跳转地址,交易成功后用户可以手工点击,或页面延迟自动跳转到这个地址(return_url)交易状态异步通知地址,交易成功或交易关闭会把消息POST到这个地址(notify_url)
发起支付流程如下:
1.网站按照指定要求,用token和自己的私钥,构造一个重定向得到支付地址
(调用支付接口)