简历里写了电商项目 ,面试的时候怎么回答_简历上写电商项目

本文详细介绍了电商网站的购物车功能实现,包括存储选项(session、cookie、数据库和缓存)、并发问题解决方案、如京东购物车的登录状态判断,以及订单管理、支付流程、数据库优化、安全措施等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

包含功能:提交商品到购物车、显示购物车列表、删除购物车里商品、修改购物车、
清空购物车等等

1、 购物车的实现方式:① 可以把购物车的数据,给存储到 session 里面,一旦关闭浏览器,则商品数据就丢失;②可以把购物车的数据,给存储到 cookie 里面,可以长久的保存购物车里面的数据;③可以把购物车的数据,给存储到数据库里面,可以长久的保存购物车里面的数据;④可以把购物车的数据,给存储到缓存里(memcache,redis),也可以长久的保存购物车的数据。

注:Session 可能会引起并发问题,如果脚本很短,这通常没有问题。但如果脚本运行时间比较长,那就可能会产生问题。在现代 Web 应用程序开发中,有一个非常常见的情况,就是使用 AJAX 技术在同一个页面内发送多个请求获取数据。如果这些请求都需要使用Session,那么第一个请求到达服务器后会取得 Session 锁,其它请求就必须等待,所有请求将串行处理,即使它们彼此之间并没有依赖关系。这将大大增加页面的响应时间。有一个方法可以避免这个问题,就是在使用完 Session 以后立即调用 session_write_close()方法关闭 Session。这样 Session 锁就会释放,即使当前脚本还在等在处理。需要注意的是,调用该方法后,当前脚本就不能进一步操作 Session 了

2、实例:京东购物车的设置,如果用户已经登录,则把购物车数据保存到数据库里面,如果没有登录,则把购物车的数据给保存到 cookie 里面,当登录时,要判断 cookie是否有购物车的数据,如果有,则把 cookie 里面的数据给移动到数据库里面。

3、提交商品到购物车:在前台模块里新建一个 CartController 控制器,添加 addCart方法

图片

4、购物车列表:在购物车模型里添加 cartList 方法,用于显示列表。如果用户已经登录,则直接从购物车数据库里面取出数据,如果用户没有登录,则直接从 cookie里面获取数据。最后在购物车控制器里面的 cartList 的方法中,并取出购物车数据,并在对应的静态页面里完成遍历,显示出来
5、cookie 移到 DB 中:用户登录后,要判断 cookie 里面是否有购物车数据,如果有,则就移动到数据库,在购物车模型里面定义一个方法 cookie2db

图片

登录成功后调用 cookie2db 方法即可

订单管理

描述举例:

1、建立订单控制器,添加 flow 方法,完成对应的静态页面。在 order 控制器里面添加一个 done 方法,用来完成下订单功能:首先接受传递过来的订单信息数据,判断购物车里面是否有商品,防止出现能够直接访问该方法的情况,如果没有商品则提示无法下单,接着判断用户是否已经登陆,如果没有登录把当前访问的地址存储到 session里,跳转登录页面,完成登录后再跳转回来,再判断是否填写收货人的信息,同理,如果没有填写则跳转填写页面。下单时会自动算出订单总额,生成唯一的订单号,并且从session 中取出用户 id,获取收货人信息。随后将订单信息和订单商品信息入库结算完成后,清空购物车,订单完成

2、下订单注意事项:

①在下订单之前要判断库存是否充足:判断商品属性 id 是否有值,如果有说明该商品有属性,直接从 product 表里进行判断,如果没有属性则直接从goods 表里判断库存

②下完订单后要减掉库存:在入库 it_order_goods 表时,要完成减掉库存

③ 高并发下订单问题:使用文件锁,对文件锁定后,不是操作文件,是锁定文件后,执行下订单, 查看库存之前,就要加锁,一直到购买完成(另外 redis 消息队列)

图片

④添加事务:防止某些操作只完成一半

网上支付管理
支付过程主要是调用第三方支付接口
网上支付流程:

图片

图片

商城与银行对接方案:

1、直接与银行对接

优点:

因为直接与银行进行财务结算,交易资金结算比较安全。适合资金流量比较大的企业,这种方案适合于,每月结算金额百万以上的企业。

缺点:

开发工作量比较大,而且银行会不定期升级交易系统,随着银行系统的升级,企业也也需要做相应的改动,所以维护工作量也是比较大的,而且企业每年还需要向银行交纳一定数量的接口使用费用。

2、通过中间公司间接与银行对接

图片

优点:

开发工作量较少,银行升级系统,不需要企业做相应的修改,除非中间企业的接入规范发生了改变,相对前一种接入方案,这种方案的维护工作量比较少的。因为只与一家企业对接,所以接入费用相对比较低。这种方案适合于:每月结算资金在几十万以下的中小企业。

缺点:

因为是与中间企业进行资金结算,目前所有中间企业都是私企,资金安全是个大问题

7.对于大流量的网站,您采用什么样的方法来解决访问量问题?

①确认服务器硬件是否足够支持当前的流量

②优化数据库访问

③禁止外部的盗链

④控制大文件的下载

⑤使用不同主机分流主要流量、集群

⑥使用流量分析统计软件

8.数据库的存储引擎?有什么区别?

MyISAM、InnoDB

构成上,MyISAM 的表在磁盘中有三个文件组成,分别是表定义文件(.frm)、数据文件(.MYD)、索引文件(.MYI),而 InnoDB 的表由表定义文件(.frm)、表空间数据和日志文件组成。

安全方面,MyISAM 强调的是性能,其查询效率较高,但不支持事务和外键等安全性方面的功能,而 InnoDB 支持事务和外键等高级功能,查询效率稍低。

对锁的支持,MyISAM 支持表锁,而 InnoDB 支持行锁。

9.Sql 语句的优化?

1)尽量选择较小的列

2)将 where 中用的比较频繁的字段建立索引

3)select 子句中避免使用‘*’

4)避免在索引列上使用计算、not in 和<>等操作

5)当只需要一行数据的时候使用 limit 1

6)保证单表数据不超过 200W,适时分割表。针对查询较慢的语句,可以使用 explain 来分析该语句具体的执行情况。

10.什么是页面静态化?

就是把一个动态的页面(操作数据库的 php 页面)变成一个静态页面,后续用户直接访问静态页面。
页面静态化技术分为两种:真静态和伪静态。

真静态:把一个动态的页面,实实在在的转成一个静态的页面,即.html 文件
伪静态:所谓伪静态是从 url 地址上看是一个静态页面,但是实际上还是对应一个动态页面

11.如何实现用户的安全登录?

①防止 Sql 注入,对特殊字符进行转义、过滤或者使用预编译的 sql 语句绑定变量。最小权限原则,特别是不要用 root 账户,为不同的类型的动作或者组建使用不同的账户。

②当 sql 运行出错时,不要把数据库返回的错误信息全部显示给用户,以防止泄露服务器和数据库相关信息

③XSS 攻击

④暴力破解

12.使用过 Memcache 缓存吗?请简述一下

Memcache 是把所有的数据保存在内存中,采用 hash 表的方式,把每条数据有 key 和 value组成,每个 key 独一无二的,当要访问的某个值的时候先按照找到值,然后在返回结果,Memcache采用 LRU 算法来逐渐把过期的数据清除掉

13.说出 JQUERY 常用的几个函数?

$(selector).hide() 隐藏被选元素
$(selector).show() 显示被选元素
$(selector).toggle() 切换(在隐藏与显示之间)被选元素
$(selector).slideDown() 向下滑动(显示)被选元素
$(selector).slideUp() 向上滑动(隐藏)被选元素
$(selector).slideToggle() 对被选元素切换向上滑动和向下

(

s

e

l

e

c

t

o

r

)

.

f

a

d

e

I

n

(

)

(selector).fadeIn() 淡入被选元素

(selector).fadeIn()淡入被选元素(selector).fadeOut() 淡出被选元素
$(selector).fadeTo() 把被选元素淡出为给定的不透明度
$(selector).animate() 对被选元素执行自定义动画

14.什么是二次开发?二次开发的弊端?

二次开发,简单的说就是在现有的软件上进行定制修改,功能的扩展,然后达到自己想要的功能,一般来说都不会改变原有系统的内核。dede 二次开发就是以 dede 织梦系统为基础进行的二次开发。
弊端:

1)插件限制太多;

2)修改源文件对升级有影响。

15.单例模式

图片

16.Redis 有几种持久化的方式?redis 缺点是什么?

两种,分别是 RDB 和 AOF 快照;

Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上

17.前后台数据不一致怎么办?

前后操作人员录入数据保持一致,开启验证功能,由于通讯故障造成的前台数据积压,维护时及时备份

18.数据库的读写分离?主从复制?

读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理 SELECT 查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。

至少两台数据库服务器,可以分别设置主服务器和从服务器,对主服务器的任何操作都会同步到从服务器上

原理:mysql 中有一种日志,叫做 bin 日志(二进制日志),会记录下所有修改过数据库的 sql 语句。主从复制的原理实际是多台服务器都开启 bin 日志,然后主服务器会把执行过的sql 语句记录到 bin 日志中,之后把这个 bin 日志发给从服务器,在从服务器再把 bin 日志中记录的 sql 语句同样的执行一遍。这样从服务器上的数据就和主服务器相同了。

19.高并发如何处理?

需要对服务器的架构分层,重新布局,负载均衡,集群策略。

负载均衡器(硬件和软件)

硬件:F5-Bigip:立竿见影,价格昂贵,网游公司或大网站用的比较多

软件:lvs(linux virtual server 虚拟服务,集成到内核中),nginx(可以做 web 服务器,也可以做负载均衡使用)

负载均衡策略:

(1)轮询技术:把客户端的请求轮流分发给服务器。

(2)最少连接;负载均衡把请求给最空闲的服务器

(3)ip 哈希:同一地址的客户端,始终请求同一台服务器。

20.前后台数据交互时用到那些技术?

Ajax,Ajax 的跨域请求常用的有两种方式:

1)使用中间层过渡的方式:

中间过渡,很明显,就是在 AJAX 与不同域的服务器进行通讯的中间加一层过渡,这一层过渡可以是 PHP 、JSP、c++等任何具备网络通讯功能的语言,由中间层向不同域的服务器进行读取数据的操作。拿 PHP 做 一个例子,如果需要对不同域的某一个 php 进行通讯,现在客户端的xmlhttprequest 先 query 本域的一个 PHP,然后由本域的这个 PHP 去和不同域的 PHP 进行通讯,然后由本域的 PHP 输出 response;

2)使用标签

这个方法是利用标签中的 src 来 query 一个 PHP 获得 response,因为标签 的 src 属性不存在跨域的问题。

21.什么是 Ajax,Ajax 异步处理?

Ajax 是一种在页面没有刷新的情况下,通过客户端(浏览器)与服务器交互的一种技术。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数软件测试工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

n-1712789389252)]
[外链图片转存中…(img-tDRH81Lv-1712789389252)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上软件测试开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-qB6BPXXP-1712789389252)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值