« 上一篇 下一篇 »

PHP面试宝典​

PHP7有哪些新特性与PHP5有哪些区别?

新增 标量类型声明 (参数类型声明),标量类型声明分为:强制 (默认) 和 严格模式;

要使用严格模式,一个 declare 声明指令必须放在文件的顶部。这意味着严格声明标量是基于文件可配的。 这个指令不仅影响参数的类型声明,也影响到函数的返回值声明

PHP 7 增加了对返回类型声明的支持。(支持的数据类型:int,float,string,boolean,array,callback/callable)

新增null合并运算符??

$username $_GET['user'] ?? 'nobody';

存在则返回变量值不存在则返回第二个值

太空船操作符(组合比较符)

太空船操作符用于比较两个表达式。当$a小于、等于或大于$b时它分别返回-1、0或1。

define()定义数组常量,匿名类(new class)

 

php7相较php5性能提升3到4倍,实际性能提升有30%,主要是受IO,数据库,网络瓶颈的影响

mysql的innodb引擎和myisam引擎的区别?

对事务的支持

myisam非事务安全不支持事务,innodb事务安全支持事务

数据锁:myisam表级锁,innodb行级锁

索引方式不同:myisam索引和数据分开存放,innodb索引节点下面就是数据

效率:myisam相对简单,效率上优于innodb,小型应用可采用myisam

便捷性:myisam数据保存成文件的形式更利于跨平台

安全性:.InnoDB表比MyISAM表更安全,可以在保证数据不会丢失的情况下,切换非事务表到事务表(更换数据表为innodb引擎)

外键支持:

mysiam表不支持外键,而InnoDB支持

 

 

1、 mysql索引优化的原则?

2、 thinkphp、yii、zf的区别?

框架只是为了提升开发者的效率避免做过多重复的工作而已,没必要去做对比,一个经验丰富的程序员积累一定数量的类库完全可以形成自己的框架。如果非要说不同think的文档可能更丰富易读一些,这也是为什么在国内这么受欢迎,yii框架则可以一键生成CRUD操作,至于效率方面,没有最好只有最合适的,根据不通的场景选择不通的框架,thinkphp相对yii要小很多所以加载更快

3、 redis,memcache的区别?

两个都是kv存储,不通在于memcache只能存储string字符串且只能做缓存,redis则支持字符串,链表,哈希等且具有持久化的功能数据可以存储在内存也可以存储在硬盘进行持久化

4、 冒泡排序,二分查找算法速写?

php的几个经典排序算法及时间复杂度和耗时

二分查找算法:

        function search1(&$arr,$start,$end,$obj){
		//$arr是一个排好顺序的有序数组
		while ($start<=$end) {
			$middle = floor(($start+$end)/2);//找到中间位
			$str = "start:".$start.",end:".$end."\r\n";
			w_log($str);
			if($obj == $arr[$middle]){//找到则返回
				return $middle;
			}else if($arr[$middle] > $obj){//中间位大于目标值,说明目标值在前半部分,则把中间位前一位置为结束位
				$end = $middle-1;
			}else{//中间位小于目标值,说明目标值在后半部分,则把中间位后一位置为开始位
				$start = $middle+1;
			}
		}
		//没找到返回-1
		return -1;
	}

5、 关系型和非关系型数据库

6、 解释型和编译型语言