2021最新面试题php(持续更新中)

2021最新面试题php

1.php传值与传引用的区别?
答:传值在函数范围内改变变量值的大小不会影响函数外的变量值;
传引用在函数范围内改变变量的大小在函数外也会有所体现,因为传引用传的是内存地址。
2.说几个常用的数组函数?
答:array_merge($arr1,$arr2)合并两个数组;
array_intersect($arr1,$arr2)获取两个数组的交集;
array_diff($arr1,$arr2) 获取两个数组的差集;
array_push($arr,1); 在数组末尾插入元素1;
array_values($arr); 获得数组的值;
array_keys($arr); 获得数组的键名;
3.php的设计模式?
单例模式
工厂模式
注册模式
适配器模式
策略模式
观察者模式
原型模式
装饰器模式
4.事务的特性?
原子性:强调事务不可分割,事务中任何一个元素失败则整个事务失败。
一致性:事务执行前后数据的完整性保持一致。
隔离性:一个事务的执行过程中不应收到其他事务的干扰。
持久性:事务一旦结束数据就持久到数据库。
5.简述cgi,php-cig,fast-cgi,php-fpm?
cgi是为了保证web server传递的数据是标准格式的。
当web server 收到请求后会启动对应的cgi程序,这里就是php解析器。接下来php解析器会解析php.ini,初始化运行环境,处理请求,在一规定的cgi格式返回处理的结果,退出进程,web server再把结果返回给浏览器。
php-cgi是一个cgi程序,是cgi的实现。
fastcgi是用来提高cgi程序性能的。
cgi的性能问题在“php解析器会解析php.ini,初始化执行环境”,标准cgi对每个请求都会执行这些步骤,处理时间会比较长。所以fastcgi会先启动一个master,解析配置文件,初始化执行环境,然后启动多个worker。当请求过来时master会传递给一个worker,然后立即接受下一个请求,这样避免重复劳动,效率提高。当worker不够时,master会根据配置预先启动几个worker。当worker过多时也会停掉一些。
php-fpm是一个实现了fastcgi的程序。
php-cgi只是个cgi程序只能解析请求,返回结果,不会进程管理,所以就出现了一些可以调度进程的程序,php-fpm就是这样的程序。
6.mysql四种隔离级别?
读未提交的内容
所有事物都能看到其他未提交事务的执行结果。
该级别会出现的问题是:脏读,即读取到了未提交的数据。
读取提交内容
一个事务只能看见已经提交事务所做的改变。
该级别会出现的问题是:不可重复读,即在同一事务中执行完全相同的select语句时可能看到不一样的结果。
导致这种情况的原因可能有:
1)、有一个交叉的事务有新的commit,导致了数据的改变;
2)、一个数据库被多个实例操作时,同一事务的其他实例在该实例处理其间可能会有新的commit。
可重复读
同一事务的多个实例在并发读取数据时,会看到同样的数据行。
该级别会出现的问题是:幻读 (Phantom Read)。
幻读指当用户读取某一范围的数据行时,另一个事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影” 行。
InnoDB和Falcon存储引擎通过多版本并发控制机制解决了该问题。
可串行化
这是最高的隔离级别,它通过强制事务排序,使之不可能相互冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。
7.isset和empty的区别?
isset 是否设置 测试变量是否被赋值
empty 空的 测试已经被赋值的变量是否为空。
8.什么情况下不需要创建索引什么情况下需要索引?
不需要索引的情况:
表中数据量较少;
经常增、删、改的表不需要创建索引,因为索引只能提高查询速度;
数据唯一性差的字段不要使用索引;
where条件里用不到的字段不创建索引。
需要索引的情况:
主键自动创建唯一索引;
频繁作为查询条件的字段创建索引;
与其他表关联的字段需要创建索引;
查询中排序的字段需要索引;
查询中统计或者分组的字段。
9.索引的种类?
普通索引:仅加速查询
唯一索引:加速查询 + 列值唯一(可以有null)
主键索引:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
全文索引:对文本的内容进行分词,进行搜索

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值