1、设计模式
单例、工厂、适配器、策略、观察者、注册 、原型、装饰器
2、高并发
流量:防止盗链、限制恶意请求
前端:页面缓存、限制大文件下载、图片压缩、cdn加速
后端:队列、静态缓存、并发处理
数据库:缓存、优化、负载均衡、分库、读写分离
服务器:nginx 反向代理、lvs 负载均衡,分流主机。加带宽
3、post与get区别
get url链接明文访问、不安全、传输数据受限、搜索数据
post 相对安全、数据不限、提交数据
4、apache和nginx区别
apache 稳定、动态处理优于nginx、占内存大、重写机制好
nginx 并发能力强、占内存小、静态资源处理好、10万并发、配置简单
Nginx相对于Apache的优势:
1.轻量级,采用C进行编写,同样的web服务,会占用更少的内存及资源
2.抗并发,nginx以epoll and kqueue作为开发模型,处理请求是异步非阻塞的,多个连接对应一个进程,
负载能力比apache高很多,
而apache则是同步多进程模型,只能一个连接对应一个进程,当压力过大时,它是会被阻塞型的。
在高并发下nginx能保持低资源低消耗高性能 ,而apache在PHP处理慢或者前端压力很大的情况下,
很容易出现进程数飙升,从而拒绝服务的现象。
3.设计高度模块化,编写模块相对简单
4.配置简洁,正则配置让很多事情变得简单,而且改完配置能使用 -t 测试配置有没有问题,
apache 配置复杂 ,重启的时候发现配置出错了,会很崩溃
5.一般用于处理静态文件,静态处理性能比apache高三倍以上
6.作为负载均衡服务器,支持7层负载均衡
7.本身就是一个反向代理服务器,而且可以作为非常优秀的邮件代理服务器
8.nginx启动特别容易, 并且几乎可以做到 7*24 不间断运行,即使运行数个月也不需要重新启动,
支持热部署,比如:实现不间断服务的情况下进行软件版本的升级与版本的回退
9.社区活跃,各种高性能模块出品迅速
Apache相对于Nginx的优势:
1.apache的rewrite比nginx强大,在rewrite频繁的情况下,用apache
2.apache发展到现在,模块超多,基本想到的都可以找到
3.apache更为成熟,少bug ,nginx的bug相对较多
4.apache超稳定,nginx稳定性差
5.apache对PHP支持比较简单,nginx需要配合其他后端用
6.apache在处理动态请求有优势,nginx在这方面是鸡肋,一般动态请求要apache去做,nginx适合静态和反向。
7.apache仍然是目前的主流,拥有丰富的特性,成熟的技术和开发社区
总结:
两者最核心的区别在于:
Apache是同步多进程模型,一个连接对应一个进程,而Nginx是异步的,多个连接(万级别)可以对应一个进程。
适用场景:
一般来说,需要性能的web服务,用Nginx;如果不需要性能只求稳定,更考虑Apache;
Nginx处理放静态内容比Apache要好,特别是在可承受压力、带宽及资源消耗上都要优于Apache。
所以更为通用的方案是,前端Nginx抗并发,后端Apache集群,配合起来会更好。
5、php描述
C语言开发的用于web网站建设的动态语言
从下到上4层处理:zend 引擎 + ext 扩展 + Sapi 接口 + php 程序
6、redis 、memcache、mongodb 描述 端口 6379
key-value nosql 非关系数据库、内从、磁盘、持久性、不丢失 、数据大1g
缓存、数据类型丰富、支持事务、原子性
功能:缓存、队列、排行榜/计数器、发布订阅、抢购,秒杀
memcache :缓存、功能单一 11211 、数据小1M
mongodb :最接近关系型数据库类型、文档存储 bsjon json 数据 27017
7、session 和 cookie
session 服务端 安全 通过cookie 存储 sessionid 要先开启session 关闭浏览器结束会话,太多影响服务器性能
cookie 客户端 不安全 不占用服务器资源
重要信息session 、次要信息cookie、 cookie支持跨域名访问、session不支持跨域名访问
共享方案:
1:使用数据库保存session, 使用数据库来保存session,就算服务器宕机了也没事,session照样在。
问题:程序需要定制;每次请求都进行数据库读写开销不小,另外数据库是一个单点,可以做数据库的hash来解 决这个问题。
2:使用 memcached来保存session, 这种方式跟数据库类似,内存存取性能比数据库好很多。
问题:程序需要定制,增加 了工作量;存入memcached中的数据都需要序列化,效率较低,断电或者重启电脑容易丢失数据;
3:使用 redis来保存session, 这种方式跟数据库类似,内存存取性能比数据库好很多。
问题:程序需要定制,增加 了工作量
4:通过加密的cookie,在A服务器上登录,在用户的浏览器上添加加密的cookie,当用户访问B服务器时,检查有无Session,如果没有,就检验 Cookie是否有效,Cookie有效的话就在B服务器上重建session。简单,高效, 服务器的压力减小了,因为session数据不存在服务器磁盘上。根本就不会出现session读取不到的问题。
问题:网络请求占用很多。每次请求时,客户端都要通过cookie发送session数据给服务器,session中数据不能太多,浏览器对cookie 的大
小存在限制。不适合高访问量的情况,因为高访问量的情况下。
8、include 和 require 区别
include 包含不存在不会报错,继续执行、有返回值
require 包含不存在会断开程序,建议用 require_once只引用一次、加载快
9、echo、print、print_r 、var_dump区别
echo 不是函数、没返回值、打印多个、可带可不带
print 函数、返回、打印一个、可带可不带
print_r 函数 返回、格式化值、打印一个、带括号
var_dump 函数 返回、类型、值、打印多个、带括号
10、冒泡排序
function msort($arr){
$len=count($arr);
for($i=0;$i<$len-1;$i++){
for($j=0;$j<$len-$i-1;$j++){
if($arr[$j]>$arr[$j+1]){
$tmp=$arr[$j];
$arr[$j]=$arr[$j+1];
$arr[$j+1]=$tmp;
}
}
}
return $arr;
}
$arr = [5,2,4,7,9,4,2,6,8,3];
11、自定义函数排序
function my_sort($a,$b)
{
if ($a==$b) {
return 0;
}
$s=$a>$b ? -1:1;
return $s;
}
$a