2024年软件测试最新简历里写了电商项目 ,面试的时候怎么回答_简历上写电商项目,腾讯T3手把手教你

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

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

商品类型管理

包含功能:添加商品类型、显示商品类型列表、修改商品类别、删除商品类型

描述举例:

1、添加商品类型:在后台模块新建一个商品类型的控制器(TypeController),并添加add 方法, 同时建立好对应的静态页。新建一个对应的商品类型表,在表里添加数据验证。在商品类型控制器中的 add 方法中完成商品类型的添加。(其中关键点是 create 验证和防止非法字段提交)

2、商品类型列表:在商品类型控制器中添加一个 lst 方法,取出商品类型数据,并在对应的静态页中完成数据遍历,就能在页面中得出相应的商品类型列表

属性管理

包含功能:添加属性、显示属性列表、根据商品类型搜索属性、修改属性、删除属性
描述举例:

前提条件:建立一个属性表将各字段全部预先设置好,才可以进行一下操作

1、添加属性:在后台模块新建一个 AttributeController 的控制器,并添加 add 方法,并建立好对应的静态页面,修改页面里的表单。然后新建一个 attribute 表对应的模型文件,进行数据验证(验证规则可以查手册),在方法中完成属性添加的代码。在属性控制器中写入 lst 方法,并且完成对应静态页,把取出的数据遍历到对应的静态页

2、根据商品类型搜索属性:(给 select 添加 change 事件,完成提交表单, 表单提交到当前页面。)首先在方法中将商品显示出来,并将商品数据完成遍历,给显示商品 类型的 select 添加 change 事件,完成表单提交,其中会引用 JQ 添加 change 事件,当触 发change 事件后,显示出当前显示的商品类型。在商品类型列表,添加“属性列表“的 连接,在添加完成属性后,跳转到属性列表,直接显示所 属当前商品类型的属性,最后实 现分页.

商品栏目管理

包含功能:创建栏目、栏目的增删改查 (注:商品类型和商品栏目的区别,类型是大类,
栏目是小类)

描述举例:

前提条件:要创建一个栏目表,以便进行下面的功能开发

1、添加栏目:在 admin 模块里面新建一个 category 的控制器,添加 add 方法,并完成对应页面设计。在页面上设计好表单,在添加栏目时将已经添加的栏目显示出来(新建一个商品栏目模型,在里面定义好方法,用于取出栏目的数据,并且已经格式化好的),然后在 add 方法里将数据取出来,并且进行遍历,在此方法中完成栏目的添加

2、栏目列表:在 category 的控制器里添加 lst 方法,并且完成对应页面的设计,在页面中遍历栏目数据,将其遍历显示到页面中

3、删除栏目:(注:在删除栏目时,如果有子栏目则不能删除)在栏目列表中添加删除栏目的链接(用 U 函数自动生成路径),在相应的 category 控制器里,写上 del 方法,接受传递过来的 id,实例化自定义模型,利用 sql 拼接进行查询,找出对应的栏目记录,将其删除

商品管理

包含功能:商品的增删改查,在线编辑器,属性选项卡,属性的增删改查,商品相册选项卡,添加相册,文件上传,相册上传等

描述举例:

前提条件:要将商品表创建好,具体字段根据需求开设计

1、添加商品:在后台模块(admin 模块)里新建一个 Goods 控制器,写入 add 方法,同时完成相应的页面设计,在 add 方法对应的页面中对表单行进相应的修改(具体的页面要求感觉需求来修改)。在 add 方法中完成商品的添加功能代码,例如生成唯一的商品 id号、添加商品的时间等(利用前缀+时间+唯一码=唯一 id)

2、图片上传:可以利用 TP 已经定义好的钩子函数,来 完成图片文件的上传,返回保存图片的路径。钩子函数在模型里面会自动调用, 比如:入库之前:_before_insert() 和入库之后:_after_insert() 会被模型里面的 add 方法,自动调用。只需要在上传之前,把图片的路径、上传单个文件的最大值、允许上传格式限制好

3、缩略图:在图片上传的基础上利用 new \Think\Image()按照原生图片的比例生成一个缩略像素*缩略像素的缩略图,每个缩略图都会生成一个唯一的 id 名,并且保存到预设好的路径文件夹中(这里要注意的是生成多张缩略图的时候,必须先生成大图,再生成小图),图片生成后将路径入库。

4、显示属性选项卡:(选项卡的显示重点是给标签设置一个 onclick 事件函数)要在选项卡中显示商品类型,在 goods 控制器里面的 add 方法中取出商品类型数据,然后在相应的页面商品属性选项卡位置遍历商品类型数据,分别显示出来

5、完成商品属性的添加:前提将商品属性表设计好,然后根据实际的静态页面进行表单的修改,修改指定表单的域名(即标签中的 name),修改完成后在 Goods 模型里定义一个钩子_after_insert,在该方法中完成属性数据的入库,由此属性的添加完成.

权限管理

包含功能:管理员登录,权限管理(权限管理控制),角色管理,管理员管理

权限管理简述:权限管理是根据不同等级,不同管理员的情况下,授予不同的权限,各自操作各自授权。授权方式大体分为两种:一种是直接给管理员授权权限,适合于管理员比较少,权限数量也比较少的情况下;第二种是 RBAC 基于角色的访问控制。

在建表方面,采用五张表,其中有三张主表,权限表、角色表、管理员表,两张从表,角色与权限的中间表、管理员与角色的中间表。

角色表与权限表的关系:一个角色可以有多个权限,一个权限可以属于多个角色,权限表与角色表是多对多的关系,要体现这种关系,要使用角色与权限的中间表;管理员表与角色表的关系:一个管理员可以属于多个角色,一个角色可以包含多个管理员,角色表与管理员表是多对多的关系,要体现这种关系,要使用管理员与角色的中间表。

五张表关系图如下:

图片

描述举例:

1、权限管理:在项目中权限管理就是按钮,通过按钮给对应的管理员或者是角色分配权限。在后台模块新建一个权限的控制器,并写入 add 方法,完成对应的页面设计,修改好页面上的表单,完善页面。新建一个权限模型,并且在模型中添加数据验证,设置好验证规则(具体代码参考项目中的),在模型中完成权限添加。在父级权限完成后,继续添加子级权限:在模型里面定义一个方法,用于取出权限,并格式化好权限数据,然后在添加权限控制器里面,取出权限数据,并进行遍历,将遍历出来的子级权限显示在页面中

2、角色管理:角色管理中包含对角色的增删改查,授权等等。添加角色首先要在在后台模块新建一个 RoleController 的控制器,写入添加 add 方法,完成对应的静态页面,取出权限数据,并修改对应的表单。在后台模块里面,添加一个 RoleModel 模型,写入添加数据验证。接下来就是数据入库,在入库时要注意的是该表单提交的数据,是入库两张的表,一个是角色表,一个是角色与权限的中间表,其中角色与权限的中间表的数据,是使用钩子函数_after_insert()来完成。

3、角色删除:如果角色里面有管理员,则不能删除,在删除角色的同时,要删除角色与权限的中间表里面的对应的数据。首先在角色列表中添加删除的链接(用 U 函数自动生成路径),然后在角色控制器中添加删除 del 方法,用于删除角色,其次在角色模型中添加钩子函数_after_delete()用来删除角色与权限中间表对应的角色数据,删除完成

4、管理员管理:在添加管理员时,要分配管理员所属角色,并且将管理员各个数据根据要求设定好格式。创建管理员控制器,添加 add 方法,取出角色数据,并完成页面设计将数据显示到页面上。在管理员模型中添加数据验证,使用静态方法来完成验证,

图片

使用模型添加数据,接受明文密码,然后用双重 md5 进行加密,这个过程的代码可以直接写到钩子函数里。使用钩子函数添加管理员与角色中间表的数据,在管理员的模型里面,添加_after_insert()钩子函数

图片

5、管理员列表:在管理员的控制器里面添加 lst 方法,用于取出管理员数据,并完成对应的静态页面,要注意:显示管理员的同时,要显示出所属角色的名称,因此要连表查询(管理员表 管理员角色表 角色表)

图片

然后在对应的界面中进行管理员数据遍历并且显示到页面上。

6、删除管理员:要操作的表是:it_admin 和 it_admin_role,在删除 it_admin_role表里面数据时,则可以使用钩子函数_after_delete(),钩子函数是 TP 框架里面提供的,

主要有:_before_insert()、_after_insert()、_before_update()、_after_update(),_before_delete(),_after_delete()(该系列函数是在模型里面定义,会被自动调用。)

注意:超级管理员不能被删除(拥有最高权限)

邮件发送验证管理

包含功能:(原理要理解、)注册、登录、发送、密码找回等

描述举例:

1、原理:

图片

邮件的 SMTP(Simple Mail Transfer Protocol):即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于TCP/IP 协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过 SMTP协议所指定的服务器,就可以把 E-mail 寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循 SMTP 协议的发送邮件服务器,用来发送或中转发出的电子邮件。

2、用户注册:创建用户表,将所需字段设置好(在设置字段的时候可以预留一些字段以便后面拓展使用)。在前台模块中新建一个 user 控制器,添加 register 方法,并且完成对应静态页。在 user 模型中添加数据验证,返回数据.

图片

在控制器中完成注册后,发送邮件:

图片

邮件发送后,由用户进行激活认证,因此在控制器中新建 active 方法。方法中首先要接受数据(key 值,用户邮件数据),然后判断链接是否合法,根据传递的 email 查找出 vaildate字段内容和 key 值进行匹配。如果匹配成功那么,就让用户进行激活,激活的同时将 active的初始状态更改为 1,则功能完结

3、密码找回功能:实现方式,根据用户名->查找出注册时设置的问题->输入问题的答案->如果答案正确->发送一封邮件,根据该邮件里面的链接去完成密码的修改。首先在页面上将密码找回的链接设置好,在 user 控制器里添加 findpwd1 方法(用于找回密码的第一个方法),该方法显示出找回密码输入用户的一个界面,同时应该完成对应页面的编写。再在 user 控制器中添加 findpwd2 方法,根据用户名查找出注册时设置的问题,让用户输入问题的答案。第三是在user 控制器中写入 findpwd3 方法,用于问题答案的匹配并发送邮件,通过邮件的链接来完成密码的修改。最后在 user 控制器中添加一个 update 方法,用于完成密码的修改

购物车管理

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

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

(

)

img
img
img

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

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

需要这份系统化的资料的朋友,可以戳这里获取

d

e

I

n

(

)

[外链图片转存中…(img-5ne9qsyL-1715049775631)]
[外链图片转存中…(img-FB3P5mHP-1715049775631)]
[外链图片转存中…(img-HFFu7Fq9-1715049775631)]

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

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

需要这份系统化的资料的朋友,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值