php发展

首页 » 常识 » 预防 » 简历里写了电商项目,面试的时候怎么回答
TUhjnbcbe - 2021/3/21 14:28:00

四叶草网络安全学院致力于网络安全攻防实战型人才培养,学院总结多年一线实网攻防经验与案例,自研实战攻防安全教学体系,结合线上、线下培训、竞赛以及攻防实战等形式培养和提升实战能力。

一周漏洞速览

QYKCMS_v4.3.2任意文件上传漏洞

QYKCMS,是青云客开发的一款基于PHP+MySql的轻量级智能建站系统,个人用户可免费使用于非商业网站。QYKCMSv4.3.2在文件/admin_system/include/lib/upfile.php参数types处存在任意文件上传漏洞。攻击者可以利用此漏洞上传恶意脚本,从而控制达到控制服务器的目的。

EasyTalk2.0.2topicaction.class.php页面存在SQL注入

EasyTalk是国内首款多用户PHP+Mysql开源微博客系统。EasyTalktopicaction.class.php页面存在sql注入漏洞。攻击者可以利用此漏洞执行任意的sql命令,可以造成数据库信息泄露,严重者可导致服务器被控制。

HucartCMSv5.7.4存在CSRF漏洞

HuCart(虎卡)系统是免费开源企业建站系统,原名智伟CMS现已改名为了HuCart系统,基于PHP+Mysql架构的,可运行在Linux、Windows等各种服务器平台上。Hucartcmsv5.7.4版本存在一个CSRF漏洞,当管理员登陆后访问CSRF测试页面,可导致增加一个管理员账号。

一周安全资讯速览

FBI建议人们慎重连接公共Wi-Fi并注意线上购物安全

作为“技术星期二”的一部分,美国联邦调查局(FBI)刚刚向大家发出了一条建议——在连接公共Wi-Fi网络的时候,请慎重决定是否网购。历史数据表明,每年的假日期间,针对这类人群的欺诈事件都有高发态势。同时,FBI建议大家始终保持联网设备已处于最新状态,无论是计算机还是智能手机。如果不得已使用公共Wi-Fi网络,需提防被黑客嗅探网络流量、甚至拦截在线支付所需的敏感信息。作为加强,FBI建议网民为在线账户设置更加复杂的密码。

Facebook公司硬盘失窃导致员工信息泄露

据外媒报道,Facebook未加密硬盘在工资管理部门的员工车内失窃,约2.9万名现任和前任雇员受到这起盗窃案的影响。据内部邮件显示,这起事件发生在11月17日,11月20日公司意识到硬盘丢失。11月29日,一项“司法调查”证实,这些硬盘内包含了员工工资信息。Facebook从12月13日开始向受影响的员工发出警报。

Npm团队针对新的“二进制植入”错误发出警告

Npm团队近日发布了安全警报,建议所有用户更新到最新版本(6.13.4),以防止“二进制植入”(binaryplanting)攻击。黑客的最终目标是在使用受感染的npm软件包构建的应用程序内部发起攻击或植入后门程序,这些应用程序以后可用于从它的用户那里窃取数据。

VISA警告针对加油站PoS系统的持续性网络攻击

根据VISA发布的安全警报,北美汽油供应商(就是各种加油站)的POS系统正日益受到网络犯罪集团协调的攻击的威胁。PFD披露,第一起攻击事件中,不知名黑客使用钓鱼邮件成功上传RAT并感染目标厂商的一个系统。第二起和第三起攻击事件中,黑客使用了黑客组织FIN8的恶意工具和TTP(战术,技术和程序)

卡巴斯基透露有黑客同时利用Windows10和谷歌浏览器零日漏洞发动攻击

微软和谷歌都已经在昨天发布软件更新用于修复部分安全漏洞,这其中就包括某个在野外已遭到利用的零日漏洞。这些零日漏洞由卡巴斯基发现但是高级黑客团体早已利用,黑客借助这些漏洞可以直接在计算机上安装间谍软件。事实上这次安全漏洞不仅影响Windows10,据微软官方说明所有受支持的Windows版本包括服务器版均受影响。

Ryuk勒索软件涉嫌参与新奥尔良网络攻击

一周前,新奥尔良市官员在新闻发布会上确认该市受到勒索软件攻击,攻击事件发生于年12月13日上午。IT人员立即通知所有了员工,并要求他们关闭计算机,以防威胁扩散。媒体提供了有关这次攻击的更多消息。根据提交给VirusTotal的文件,新奥尔良市涉及的勒索软件可能是RyukRansomware。

人脸识别被3D面具破解?

日前,一家位于美国加利福尼亚州的人工智能公司宣称,他们使用特质的3D面具欺骗了支付宝、

TUhjnbcbe - 2021/3/21 14:28:00
电商项目里的技术特点?

①技术更新较快:根据市场的需求,不断迭代更新.②技术涉及面广:除了PHP,还会用到Python,GO等其他的一些语言;数据库中MySQL,nosql是最频繁使用的(当然也有的公司会用oracle,但是PHP一般都是以MySQL为主),服务器端使用Linux(少部分公司会用到Unix),还经常涉及到服务器安全、系统安全等安全方面的技术.③分布式:从前的单一的机器上运行,现在是分散到不同机器上,最后将数据集中汇总。集中式向分布式进行发展是由需求来推动.④高并发、集群(高可用集群)、负载均衡:由并发问题采用集群进行处理,其中,集群会涉及服务器的主从以及分布问题,使用负载均衡。(权重高低)高可用是对用户而言,用户的服务不中断(系统升级,服务不中断,公司电商系统的部分更新等)。⑤海量数据:每年商家的各类活动(双11,双12等等)订单量、浏览数、商品量、活动相关数据都将会超级大超级多(一般随同高并发出现).⑥业务复杂:电商业务并不简单:并不是商品展示出来后,简单的加入购物车后购买就完成了。除此以外后台业务逻辑是相当复杂,比如优惠(包邮、满减),秒杀,抢购等.⑦系统安全:系统上线必须通过系统安全部门审核通过,安全性问题正逐步的被放到台面上,而且很多企业对这块相当重视.

系统功能

本商城系统是一个综合性的B2C平台,类似京东商城、天猫商城.

用户:

用户可以通过注册成为商城的会员,登录商城

根据会员等级获得相应的优惠和特权

用户可以浏览商品,可以根据商品类型进行搜索

用户可以对购物车进行操作(增删改查商品的数量、商品详情等)

用户下订单、退订单,对订单的结算等

商家:

商家可以入驻商城,在商城里开店售卖自己的商品.

商家也有商家等级,如果在商城好评和商品销售量到达一定数量,可获得商家的一些特权

商家可以管理自己店铺的商品:上架下架商品;设定库存量;设定自己店铺的会员制度等

电商项目的思维图

以上是大部分常用模块,如有其它模块自行补充。根据上图的体系架构,一层层的进行归纳记忆,从项目——模块——功能一点点的往深入熟悉记忆,并且加以理解.

项目团队构成

产品经理:1人,确定需求以及给出产品原型图。项目经理:1人,项目管理。UI设计:1人,制作项目原型效果图。前端团队:1人,根据产品经理给出的原型制作静态页面。后端团队:3人,实现产品功能。运维:1人,负责公司运维项目的系统。测试团队:2人,测试所有的功能。(小公司不会有测试)

(上述是以团队为单位,有的公司技术部不止一个团队,还有运维、UI、交互设计师等等,视情况而定)

项目开发流程涉及技术

前端:HTMLCSSJS/JQ(Bootstrap、node.js、angluar.js等可以了解下)AJAXPHP:PHP+MySQLsession和cookieNosql(redismemcachemongdb)接口技术缓存技术优化技术等等服务器方面:LinuxNginx开发环境:WAMP或者是LAMP比较常见,除此以外还有LNMP等

(简历中或者是面试中尽量不要提及版本号,如果要写则需要把版本号对齐,否则不要写版本号)

电商面试常见问题1.说说你最近做的这个项目的背景,简单的介绍一下你这个项目?

我们公司之前主要以实体店为主,进行批发与零售,业务也相对比较传统。为了适应市场需求,增强公司竞争力,提升业务绩效,另一方面,也为基于互联网的商务模式创新奠定基础。所以开始xxx商城建设项目,其中包含商品管理、订单管理、类目管理、客户管理、合作商管理、客服管理、购物平台、内容管理等,很大程度上分担了人工的压力,对提高客户服务效率和客户满意度能够起到较好的作用。(先大体的描述下项目,然后能够挑一两个自己最为熟悉的模块进行叙述)

2.项目的整体结构(从框架和具体技术来说)

框架方面:从大处进行描述,比如本项目是属于电商项目,采用的是TP框架,运用php+MySQL+Apache进行开发。因为TP框架是开源的、轻量级的,所以用起来更加方便快捷,从效率和成本方面来讲都是性价比比较高的,所以那时候团队决定用这个框架进行开发。然后再从框架的一些优点特性进行说明下,让面试官觉得你对这个框架很了解技术:描述技术时首先用从自己比较熟悉的模块入手(比如说注册验证时会用到的JS技术、正则匹配、ajax无刷新验证等等),然后由此慢慢的向其他方面的技术进行拓展,在说具体技术的时候如果能说到目前比较新或者是比较有难度的技术,能够让面试官眼前一亮,这样能为自己的面试增加不少分。

3.分布式架构,对比传统架构的优势。

①最为明显的一点,在传统的架构中,如果某个功能需要进行维护,那么我们必须停掉整个服务,这对于公司的运营会造成损失。分布式系统在核心功能模块使用单独服务器,维护部分模块不影响用户的其他操作。②在海量数据处理方面,传统架构显得比较乏力;分布式系统架构采用服务器集群,使用负载均衡,海量数据处理游刃有余!③在性能(检索)以及维护方面,分布式系统架构也有较为明显的优势。

4.本项目提供了哪些模块(功能和服务)

?商品模块:其中包括商品管理,类型管理,属性管理,栏目管理等等?订单模块:其中包括下单,退单,库存,收货人信息等?会员模块:会员注册,会员信息管理,会员等级管理,会员权限等?购物车模块:购物车数据存储,增删改查购物车商品,清空购物车等?提交订单页面:提交用户的订单信息,处理并发问题。?个人中心:包括用户的登录,个人信息的管理,收货地址的管理,用户所下的订单的管理?支付模块:支付方式管理(在线支付、货到付款)等

5.你负责的哪些模块

在项目中主要负责相关功能的开发,主要有:1)后台管理系统:主要实现商品管理、商品规格参数管理、订单管理、会员管理等、CMS(内容管理系统)等,并且提供了跨域支持;2)前台系统:主要是面向用户访问,使用js、ajax进行前后台数据交互(一般是用json格式数据返回)3)会员登录:提供和用户信息相关的接口,比如说用户注册、查询等接口(登录时需要进行多重验证,特别注意安全方面)4)订单功能:主要是提供和订单相关的业务接口,在订单系统了做了严格的数据校验以及高并发写的支持(这里可以说使用队列实现),并且使用了定时器实现对下单的时间控制,比如说关闭超时未付款的订单;5)搜索功能:主要是提供商品的搜索,可以采用Sphinx全文搜索,当然也有其他的搜索方式;6)会员系统:主要是维护用户的信息,已购买订单、优惠券、系统消息、修改密码、绑定手机等功能;7)缓存:主要是用Redis实现,并且对Redis做了集群来保证Redis服务的高可用(缓存方面除了redis外还有memcached)8)支付系统:主要是负责订单的支付、对账等功能,主要是对接了支付宝的接口;(根据个人的实际情况选择最为熟悉的模块,进行叙述)

6.简述下这些模块怎么实现的?(描述举例只给出部分功能的过程)

商品类型管理包含功能:添加商品类型、显示商品类型列表、修改商品类别、删除商品类型描述举例: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(SimpleMailTransferProtocol):即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。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)避免在索引列上使用计算、notin和等操作

5)当只需要一行数据的时候使用limit16)保证单表数据不超过W,适时分割表。针对查询较慢的语句,可以使用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()对被选元素切换向上滑动和向下$(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(linuxvirtualserver虚拟服务,集成到内核中),nginx(可以做web服务器,也可以做负载均衡使用)负载均衡策略:(1)轮询技术:把客户端的请求轮流分发给服务器。(2)最少连接;负载均衡把请求给最空闲的服务器(3)ip哈希:同一地址的客户端,始终请求同一台服务器。

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

Ajax,Ajax的跨域请求常用的有两种方式:1)使用中间层过渡的方式:中间过渡,很明显,就是在AJAX与不同域的服务器进行通讯的中间加一层过渡,这一层过渡可以是PHP、JSP、c++等任何具备网络通讯功能的语言,由中间层向不同域的服务器进行读取数据的操作。拿PHP做一个例子,如果需要对不同域的某一个php进行通讯,现在客户端的xml

1
查看完整版本: 简历里写了电商项目,面试的时候怎么回答