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(服务器内部错误):服务器遇到错误,无法完成请求
|