php面试时,你是否常常被问到这些问题?

一、<?php echo count(strlen(“http://php.net”)); ?>的执行结果是?php

答案:1laravel

讲解:count(var)是用来统计数组或对象的元素个数的。当var是null或者空数组时,结果为0。若是var是普通变量,则返回1。正常状况下返回var中的元素或属性个数。web

二、使用list()函数须要注意什么?正则表达式

答案:list()是一个语法结构。List($array)是用来快速把数组中的元素赋给一些变量。使用时要注意,$array必须为一个索引数组,而且索引值从0开始。算法

三、请说明php.ini中的safe_mode开启以后影响了哪些函数?sql

答案:Safe_mode是php的安全模式。开启以后,主要会对系统操做、文件、权限设置等方法产生影响,主要用来应对webshell。如下是受到影响的一些函数:ckdir,move_uploaded_file,chgrp,parse_ini_file,shell

chown,rmdir,copy,rename,fopen,require,highlight_file,show_source,include,symlink,link,touch,mkdir,unlink,exec,数组

shell_exec,pasathru,system,popen安全

须要注意的是:在php5.3以上版本,safe_mode被弃用,在php5.4以上版本,则将此特性彻底去除了。服务器

四、请对POSIX风格和兼容Prel风格两种正则表达式的主要函数进行类比说明。

答案:POSIX 风格 : 匹配正则表达式ereg 和替换 ereg_replace

Prel风格:匹配正则表达式 preg_match 和替换 preg_replace

Preg_match 比ereg的执行效率更快,preg_replace 比ereg_replace的执行效率更快。

五、如何在命令下运行php脚本(写出两种方式),如何向php脚本传递参数?

答案:第一种方式:先进入php安装目录,执行 php 路径/文件名.php。

例:php my_script.php php -f "my_script.php"

第二种方式:php -r “php脚本”;(不须要加php的开始符和结束符)。

例:php -r "print_r(get_defined_constants());"

向php脚本传递参数:

第一种方式:php -r "var_dump($argv);" -- -h (注意:若是要传递的参数开头为-,那么得使用参数列表分隔符 -- 才能正确传参。)

第二种方式:test.php文件代码:#!/usr/bin/php

./test.php -h -- foo(在php文件开头加入#!/usr/bin/php,便可直接传递以-为开头得参数)

六、php5中魔术方法有哪几个?请举例说明各自的用法。

答案

一、__construct() :实例化对象时自动调用。

二、__destruct() :销毁对象或脚本执行结束时自动调用。

三、__call() :调用对象不存在得方法时执行此函数。

四、__get() :获取对象不存在的属性时执行此函数。

五、__set() :设置对象不存在的属性时执行此函数。

六、__isset() : 检测对象的某个属性是否存在时执行此函数。

七、__unset() :销毁对象的某个属性时执行此函数。

八、__toString() :将对象看成字符串输出时执行此函数。

九、__clone() :克隆对象时执行此函数。

十、__autoload() :实例化对象时,当类不存在时,执行此函数自动加载类。

十一、__sleep() :serialize以前被调用,能够指定要序列化的对象属性。

十二、__wakeup :unserialize以前被调用,能够执行对象的初始化工做。

1三、__set_state() :调用var_export时,被调用。用__set_state的返回值作为var_export的返回值。

1四、__invoke() :将对象看成函数来使用时执行此方法,一般不推荐这样作。

七、简述php的垃圾收集机制。

答案:php中的变量存储在变量容器zval中,zval中除了存储变量类型和值外,还有is_ref和refcount字段。refcount表示指向变量的元素个数,is_ref表示变量是否有别名。若是refcount为0时,就回收该变量容器。若是一个zval的refcount减1以后大于0,它就会进入垃圾缓冲区。当缓冲区达到最大值后,回收算法会循环遍历zval,判断其是否为垃圾,并进行释放处理。

八、用php实现一个双向队列。

队列是一种线性表,按照先进先出的原则进行

单向队列:只能从头进,从尾出

双向队列:头尾均可以进出

class DuiLie {
private $array = array();//声明空数组
public function setFirst($item){
return array_unshift($this->array,$item);//头入列
}
public function delFirst(){
return array_shift($this->array);//头出列
}
public function setLast($item){
return array_push($this->array,$item);//尾入列
}
public function delLast(){
return array_pop($this->array,$item);//尾出列
}
public function show(){
var_dump($this->array);//打印数组
}
public function Del(){
unset($this->array);//清空数组
}
}

点关注,不迷路

好了各位,以上就是这篇文章的所有内容了,能看到这里的人呀,都是人才。以前说过,PHP方面的技术点不少,也是由于太多了,实在是写不过来,写过来了你们也不会看的太多,因此我这里把它整理成了PDF和文档,若是有须要的能够

点击进入暗号: PHP+「平台」

在这里插入图片描述

在这里插入图片描述


更多学习内容能够访问【对标大厂】精品PHP架构师教程目录大全,只要你能看完保证薪资上升一个台阶(持续更新)

以上内容但愿帮助到你们,不少PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提高,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货须要的能够免费分享给你们,须要的能够加入个人 PHP技术交流群

相关文章
相关标签/搜索