2019年电商基础面试总结




找工做面试的过程当中,项目将会是整个流程的核心灵魂,也是能在面试中能让面试官尽快认同你的一个强有力的依据,因此在面试中把电商项目清晰的表述出来是极为关键的。

电商项目里的技术特色?

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

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

用户:html

用户能够经过注册成为商城的会员,登陆商城
根据会员等级得到相应的优惠和特权
用户能够浏览商品,能够根据商品类型进行搜索
用户能够对购物车进行操做(增删改查商品的数量、商品详情等)
用户下订单、退订单,对订单的结算等
商家:前端

商家能够入驻商城,在商城里开店售卖本身的商品.
商家也有商家等级,若是在商城好评和商品销售量到达必定数量,可得到商家的一些特权
商家能够管理本身店铺的商品:上架下架商品;设定库存量;设定本身店铺的会员制度等
电商项目的思惟图java

以上是大部分经常使用模块,若有其它模块自行补充。根据上图的体系架构,一层层的进行概括记忆,从项目——模块——功能一点点的往深刻熟悉记忆,而且加以理解.node

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

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

项目开发流程
nginx

 

涉及技术
框架:ThinkPHP CI YII Laravel 等
前端:HTML CSS JS/JQ(Bootstrap、node.js、angluar.js 等能够了解下) AJAX
PHP:PHP+MySQL session 和 cookie Nosql(redis memcache mongdb)  接口技术 缓存技术 优化技术等等
服务器方面:Linux Nginx
开发环境:WAMP 或者是 LAMP 比较常见,除此之外还有 LNMP 等
经常使用的工具:PHPStorm(PHP 最正统的工具) NetBeans Editplus Webstorm(web 最正统的工具) Sublime Dreamweaver SVN GITc++

(简历中或者是面试中尽可能不要说起版本号,若是要写则须要把版本号对齐,不然不要写版本号)

 

电商面试常见问题
 

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.简述下这些模块怎么实现的?(描述举例只给出部分功能的过程)
商品类型管理
包含功能:添加商品类型、显示商品类型列表、修改商品类别、删除商品类型
描述举例:
一、添加商品类型:在后台模块新建一个商品类型的控制器(TypeController),并添加add 方法, 同时创建好对应的静态页。新建一个对应的商品类型表,在表里添加数据验证。在商品类型控制器中的 add 方法中完成商品类型的添加。(其中关键点是 create 验证和防止非法字段提交)
二、商品类型列表:在商品类型控制器中添加一个 lst 方法,取出商品类型数据,并在对应的静态页中完成数据遍历,就能在页面中得出相应的商品类型列表

属性管理
包含功能:添加属性、显示属性列表、根据商品类型搜索属性、修改属性、删除属性
描述举例:
前提条件:创建一个属性表将各字段所有预先设置好,才能够进行一下操做
一、添加属性:在后台模块新建一个 AttributeController 的控制器,并添加 add 方法,并创建好对应的静态页面,修改页面里的表单。而后新建一个 attribute 表对应的模型文件,进行数据验证(验证规则能够查手册),在方法中完成属性添加的代码。在属性控制器中写入 lst 方法,而且完成对应静态页,把取出的数据遍历到对应的静态页
二、根据商品类型搜索属性:(给 select 添加 change 事件,完成提交表单, 表单提交到当前页面。)首先在方法中将商品显示出来,并将商品数据完成遍历,给显示商品 类型的 select 添加 change 事件,完成表单提交,其中会引用 JQ 添加  change 事件,当触 发change 事件后,显示出当前显示的商品类型。在商品类型列表,添加“属性列表“的 链接,在添加完成属性后,跳转到属性列表,直接显示所  属当前商品类型的属性,最后实 现分页.

商品栏目管理
包含功能:建立栏目、栏目的增删改查 (注:商品类型和商品栏目的区别,类型是大类,
栏目是小类)
描述举例:
前提条件:要建立一个栏目表,以便进行下面的功能开发
一、添加栏目:在 admin 模块里面新建一个 category 的控制器,添加 add 方法,并完成对应页面设计。在页面上设计好表单,在添加栏目时将已经添加的栏目显示出来(新建一个商品栏目模型,在里面定义好方法,用于取出栏目的数据,而且已经格式化好的),而后在 add 方法里将数据取出来,而且进行遍历,在此方法中完成栏目的添加
二、栏目列表:在 category 的控制器里添加 lst 方法,而且完成对应页面的设计,在页面中遍历栏目数据,将其遍历显示到页面中
三、删除栏目:(注:在删除栏目时,若是有子栏目则不能删除)在栏目列表中添加删除栏目的连接(用 U 函数自动生成路径),在相应的 category 控制器里,写上 del 方法,接受传递过来的 id,实例化自定义模型,利用 sql 拼接进行查询,找出对应的栏目记录,将其删除

商品管理
包含功能:商品的增删改查,在线编辑器,属性选项卡,属性的增删改查,商品相册选项卡,添加相册,文件上传,相册上传等
描述举例:
前提条件:要将商品表建立好,具体字段根据需求开设计
一、添加商品:在后台模块(admin 模块)里新建一个 Goods 控制器,写入 add 方法,同时完成相应的页面设计,在 add 方法对应的页面中对表单行进相应的修改(具体的页面要求感受需求来修改)。在 add 方法中完成商品的添加功能代码,例如生成惟一的商品 id号、添加商品的时间等(利用前缀+时间+惟一码=惟一 id)
二、图片上传:能够利用 TP 已经定义好的钩子函数,来 完成图片文件的上传,返回保存图片的路径。钩子函数在模型里面会自动调用, 好比:入库以前:_before_insert() 和入库以后:_after_insert() 会被模型里面的 add 方法,自动调用。只须要在上传以前,把图片的路径、上传单个文件的最大值、容许上传格式限制好
三、缩略图:在图片上传的基础上利用 new \Think\Image()按照原生图片的比例生成一个缩略像素*缩略像素的缩略图,每一个缩略图都会生成一个惟一的 id 名,而且保存到预设好的路径文件夹中(这里要注意的是生成多张缩略图的时候,必须先生成大图,再生成小图),图片生成后将路径入库。
四、显示属性选项卡:(选项卡的显示重点是给标签设置一个 onclick 事件函数)要在选项卡中显示商品类型,在 goods 控制器里面的 add 方法中取出商品类型数据,而后在相应的页面商品属性选项卡位置遍历商品类型数据,分别显示出来
五、完成商品属性的添加:前提将商品属性表设计好,而后根据实际的静态页面进行表单的修改,修改指定表单的域名(即标签中的 name),修改完成后在 Goods 模型里定义一个钩子_after_insert,在该方法中完成属性数据的入库,由此属性的添加完成.

权限管理
包含功能:管理员登陆,权限管理(权限管理控制),角色管理,管理员管理
权限管理简述:权限管理是根据不一样等级,不一样管理员的状况下,授予不一样的权限,各自操做各自受权。受权方式大致分为两种:一种是直接给管理员受权权限,适合于管理员比较少,权限数量也比较少的状况下;第二种是 RBAC 基于角色的访问控制。
在建表方面,采用五张表,其中有三张主表,权限表、角色表、管理员表,两张从表,角色与权限的中间表、管理员与角色的中间表。
角色表与权限表的关系:一个角色能够有多个权限,一个权限能够属于多个角色,权限表与角色表是多对多的关系,要体现这种关系,要使用角色与权限的中间表;管理员表与角色表的关系:一个管理员能够属于多个角色,一个角色能够包含多个管理员,角色表与管理员表是多对多的关系,要体现这种关系,要使用管理员与角色的中间表。

五张表关系图以下:

描述举例:
一、权限管理:在项目中权限管理就是按钮,经过按钮给对应的管理员或者是角色分配权限。在后台模块新建一个权限的控制器,并写入 add 方法,完成对应的页面设计,修改好页面上的表单,完善页面。新建一个权限模型,而且在模型中添加数据验证,设置好验证规则(具体代码参考项目中的),在模型中完成权限添加。在父级权限完成后,继续添加子级权限:在模型里面定义一个方法,用于取出权限,并格式化好权限数据,而后在添加权限控制器里面,取出权限数据,并进行遍历,将遍历出来的子级权限显示在页面中
二、角色管理:角色管理中包含对角色的增删改查,受权等等。添加角色首先要在在后台模块新建一个 RoleController 的控制器,写入添加 add 方法,完成对应的静态页面,取出权限数据,并修改对应的表单。在后台模块里面,添加一个 RoleModel 模型,写入添加数据验证。接下来就是数据入库,在入库时要注意的是该表单提交的数据,是入库两张的表,一个是角色表,一个是角色与权限的中间表,其中角色与权限的中间表的数据,是使用钩子函数_after_insert()来完成。
三、角色删除:若是角色里面有管理员,则不能删除,在删除角色的同时,要删除角色与权限的中间表里面的对应的数据。首先在角色列表中添加删除的连接(用 U 函数自动生成路径),而后在角色控制器中添加删除 del 方法,用于删除角色,其次在角色模型中添加钩子函数_after_delete()用来删除角色与权限中间表对应的角色数据,删除完成
四、管理员管理:在添加管理员时,要分配管理员所属角色,而且将管理员各个数据根据要求设定好格式。建立管理员控制器,添加 add 方法,取出角色数据,并完成页面设计将数据显示到页面上。在管理员模型中添加数据验证,使用静态方法来完成验证,

 

 

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

 

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

 

 

而后在对应的界面中进行管理员数据遍历而且显示到页面上。
六、删除管理员:要操做的表是:it_admin 和 it_admin_role,在删除 it_admin_role表里面数据时,则可使用钩子函数_after_delete(),钩子函数是 TP 框架里面提供的,
主要有:_before_insert()、_after_insert()、_before_update()、_after_update(),_before_delete(),_after_delete()(该系列函数是在模型里面定义,会被自动调用。)
注意:超级管理员不能被删除(拥有最高权限)

邮件发送验证管理
包含功能:(原理要理解、)注册、登陆、发送、密码找回等
描述举例:
一、原理:

邮件的 SMTP(Simple Mail Transfer Protocol):即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP 协议属于TCP/IP 协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。经过 SMTP协议所指定的服务器,就能够把 E-mail 寄到收信人的服务器上了,整个过程只要几分钟。SMTP 服务器则是遵循 SMTP 协议的发送邮件服务器,用来发送或中转发出的电子邮件。
二、用户注册:建立用户表,将所需字段设置好(在设置字段的时候能够预留一些字段以便后面拓展使用)。在前台模块中新建一个 user 控制器,添加 register 方法,而且完成对应静态页。在 user 模型中添加数据验证,返回数据.

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

邮件发送后,由用户进行激活认证,所以在控制器中新建 active 方法。方法中首先要接受数据(key 值,用户邮件数据),而后判断连接是否合法,根据传递的 email 查找出 vaildate字段内容和 key 值进行匹配。若是匹配成功那么,就让用户进行激活,激活的同时将 active的初始状态更改成 1,则功能完结
三、密码找回功能:实现方式,根据用户名->查找出注册时设置的问题->输入问题的答案->若是答案正确->发送一封邮件,根据该邮件里面的连接去完成密码的修改。首先在页面上将密码找回的连接设置好,在 user 控制器里添加 findpwd1 方法(用于找回密码的第一个方法),该方法显示出找回密码输入用户的一个界面,同时应该完成对应页面的编写。再在 user 控制器中添加 findpwd2 方法,根据用户名查找出注册时设置的问题,让用户输入问题的答案。第三是在user 控制器中写入 findpwd3 方法,用于问题答案的匹配并发送邮件,经过邮件的连接来完成密码的修改。最后在 user 控制器中添加一个 update 方法,用于完成密码的修改

购物车管理
包含功能:提交商品到购物车、显示购物车列表、删除购物车里商品、修改购物车、
清空购物车等等
一、 购物车的实现方式:① 能够把购物车的数据,给存储到 session 里面,一旦关闭浏览器,则商品数据就丢失;②能够把购物车的数据,给存储到 cookie 里面,能够长久的保存购物车里面的数据;③能够把购物车的数据,给存储到数据库里面,能够长久的保存购物车里面的数据;④能够把购物车的数据,给存储到缓存里(memcache,redis),也能够长久的保存购物车的数据。
注:Session 可能会引发并发问题,若是脚本很短,这一般没有问题。但若是脚本运行时间比较长,那就可能会产生问题。在现代 Web 应用程序开发中,有一个很是常见的状况,就是使用 AJAX 技术在同一个页面内发送多个请求获取数据。若是这些请求都须要使用Session,那么第一个请求到达服务器后会取得 Session 锁,其它请求就必须等待,全部请求将串行处理,即便它们彼此之间并无依赖关系。这将大大增长页面的响应时间。 有一个方法能够避免这个问题,就是在使用完 Session 之后当即调用 session_write_close()方法关闭 Session。这样 Session 锁就会释放,即便当前脚本还在等在处理。须要注意的是,调用该方法后,当前脚本就不能进一步操做 Session 了
二、实例:京东购物车的设置,若是用户已经登陆,则把购物车数据保存到数据库里面,若是没有登陆,则把购物车的数据给保存到 cookie 里面,当登陆时,要判断 cookie是否有购物车的数据,若是有,则把 cookie 里面的数据给移动到数据库里面。
三、提交商品到购物车:在前台模块里新建一个 CartController 控制器,添加 addCart方法

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

登陆成功后调用 cookie2db 方法便可

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

①在下订单以前要判断库存是否充足:判断商品属性 id 是否有值,若是有说明该商品有属性,直接从 product 表里进行判断,若是没有属性则直接从goods 表里判断库存
②下完订单后要减掉库存: 在入库  it_order_goods  表时,要完成减掉库存
③ 高并发下订单问题:使用文件锁,对文件锁定后,不是操做文件,是锁定文件后,执行下订单, 查看库存以前,就要加锁,一直到购买完成(另外 redis 消息队列)

 

 

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

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

商城与银行对接方案:
一、直接与银行对接
优势:
由于直接与银行进行财务结算,交易资金结算比较安全。适合资金流量比较大的企业,这种方案适合于,每个月结算金额百万以上的企业。
缺点:
开发工做量比较大,并且银行会不按期升级交易系统,随着银行系统的升级,企业也也须要作相应的改动,因此维护工做量也是比较大的,并且企业每一年还须要向银行交纳必定数量的接口使用费用。
二、经过中间公司间接与银行对接

 

 

优势:
开发工做量较少,银行升级系统,不须要企业作相应的修改,除非中间企业的接入规范发生了改变,相对前一种接入方案,这种方案的维护工做量比较少的。由于只与一家企业对接,因此接入费用相对比较低。这种方案适合于:每个月结算资金在几十万如下的中小企业。
缺点:
由于是与中间企业进行资金结算,目前全部中间企业都是私企,资金安全是个大问题

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() 对被选元素切换向上滑动和向下
$(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 是一种在页面没有刷新的状况下,经过客户端(浏览器)与服务器交互的一种技术。
Ajax 语言的载体是 javascript,最大特色:页面不刷新完成请求。
open 方法:如 xhr.open(‘get’,’demo.php’,true)open 方法,第三个参数表示是异步请求,默认 true 表示异步请求处理

22.什么是 Bootstrap?有什么优点?
简单、直观、强悍的前端开发框架,让 Web 开发更快速、简单
优点:入门简单,支持响应式,优先支持移动设备

23.http 协议请求的状态?404 是什么?500?
200(成功):服务器已成功处理了请求。一般,这表示服务器提供了请求的网页
201(已建立):请求成功而且服务器建立了新的资源
202(已接受):服务器已接受请求,但还没有处理
203(非受权信息):服务器已成功处理了请求,但返回的信息可能来自另外一来源
204(无内容):服务器成功处理了请求,但没有返回任何内容
205(重置内容):服务器成功处理了请求,但没有返回任何内容
206 (部份内容):服务器成功处理了部分 GET 请求
404(未找到):服务器找不到请求的网页
500(服务器内部错误):服务器遇到错误,没法完成请求
 

PHP 中的框架是什么?
框架就是经过提供一个开发 Web 程序的基本架构,PHP 开发框架把 PHPWeb 程序开发摆到了流水线上。换句话说,PHP 开发框架有助于促进快速软件开发(RAD),这节约了开发时间,有助于建立更为稳定的程序,并减小开发者的重复编写代码的劳动。
框架专门用于为这些经常使用元素(数据库交互、表示层、应用程序逻辑)提供结构,以即可以花费更少的时间来编写数据库接口代码或者表示层接口,而花费更多的时间来编写应用程序自己。以这种方式分解应用程序,这种架构被称为模型-视图-控制器(Model-View-Controller,MVC)。模型(Model)指数据,视图(View)指表示层,而控制器(Controller)指应用程序逻辑或业务逻辑。
 

 

相关文章
相关标签/搜索