整理自慕课网360大牛全面解读PHP面试 ,购买链接:https://coding.imooc.com/class/133.html
1.php 引用变量
真题回顾
什么是引用变量?在PHP中用什么符号定义引用变量
考点分析
php引用变量的概念及定义方式;
php变量的工作原理。理解COW(copy on write 写时复制机制);
$a = range(0, 3);
xdebug_debug_zval('a');
$b = &$a;
xdebug_debug_zval('a');
$a = range(0, 3);
xdebug_debug_zval('a');
考点 unset:
// unset 只会取消引用,不会销毁空间
$a = 1;
$b = &$a;
unset($b);
echo $a. "\n";//$a 还是1
考点 :对象本身就是引用传值
// 对象本身就是引用传递
class Person
{
public $name = "zhangsan";
}
$p1 = new Person;
xdebug_debug_zval('p1');
$p2 = $p1;
xdebug_debug_zval('p1');
$p2->name = "lisi";
xdebug_debug_zval('p1');
一网打尽
写出如下程序的输出结果
考点分析 浮点不能用于相等运算; 布尔false的7种情况:0、0.0、‘’、‘0’、false、array()、null; 数组:超全局数组,$GLOBAL 、$_GET、 $_POST、 $REQUEST、$_SESSION、$_COOKIE、$_SERVER、$_FILE、$_ENV; 重点$_SERVER、 $_SERVER['SERVER_ADDR']:服务器端的ip地址 、 $_SERVER['SERVER_NAME']:服务器名称、 $_SERVER['REQUEST_TIME']:请求时间、 $_SERVER['HTTP_REFERER']:请求的上级页面 $_SERVER['REMOTE_ADDR']:客户端ip $_SERVER['PATH_INFO']: 常量:定义 const define , const更快,是语言结构;define是函数; 预定义常量:__FILE__、__DIR__、__LINE__、__FUNCTION__ 、__CLASS__、__TRAIT__、__METHOD__、 __NAMESPACE__ 一网打尽 __FILE__ 代表什么意思; 3.运算符 真题回顾 延伸考点: 运算符的优先级( PHP手册运算符优先级);比较运算符;递增递减运算符;逻辑运算符; 重点记忆:递增/递减 > ! > 算数运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算(^)>位运算符(|)> 逻辑与 >逻辑或 >三目> 赋值 > and > xor > or 递增/递减不影响布尔值、递增NULL 值为1、递减null没有效果; 理解逻辑运算符 短路作用; 4.流程控制 for只能遍历索引数组,foreach可以遍历索引和关联数组。while、list() 和each()不会reset(); foreach会对数组reset操作; 考点分析 switch 会生成跳转表、直接跳转到case; 一网打尽 5.自定义函数及内部函数 函数的参数以及参数的引用传递; 函数的返回值以及引用返回; 外部文件的导入; 系统内置函数;时间日期函数、ip处理函数,打印处理函数,序列化 反序列化函数、字符串处理函数,数组处理函数, 一网打尽 手机号正则表达式的编写 考点分析 正则表达式的作用:分割、查找、匹配、替换字符串 分隔符:正斜线(/),hash符号(#),取反符号(~); 通用原子:\d(十进制0~9), \D(除了0~9), \w(数组字母下划线),\W(除了数字字母下划线) ,\s(空白符), \S(除了空白符); 元字符: 元字符 i:不区分大小写, m:将字符串通过分隔符分割,就是将字符串中的每一行分别进行匹配 e:,s,U,x,A,D,u 延伸: 后向引用 、贪婪模式 一网打尽 7.文件及目录处理 不断在hello.txt头部写入一行hello word 字符串,要求代码完整; 文件的读取/写入; fopen()函数,打开模式:r/r+,w/w+, a/a+,x/x+,b,t 目录操作函数; 一网打尽 简述cookie 和session的区别以及各自的工作机制,存储位置等,简述cookie的优缺点; 考点分析 php会话控制结束; 为什么要使用会话控制技术; 一网打尽 session的存储方式,如何进行遍历; 9.面向对象 请写出php类权限控制修饰符; public protected private 考点分析 面向对象的封装,继承和多态;单一继承,方法重写,抽象类的定义,接口的定义 魔术方法:_ 设计模式:工厂模式 单例模式 单例模式 注册树模式 适配器模式观察者模式 策略模式; 一网打尽 请写出php的构造函数和析构函数; 10.网络协议考点 考点分析 http的工作原理及特点;基于b/s模式 http协议常见请求头/响应头 和请求方法;content-type、accept、origin、... https协议的工作原理;get post head options put delete trace get post 区别, 常见协议含义及端口; 一网打尽
/**
* 写出如下程序的输出结果
* 程序运行时,每一次循环结束后变量$data的值是什么?请解释
* 程序执行完成后,变量$data的值是什么?请解释
*/
$data = ['a', 'b', 'c'];
foreach ($data as $key=>$val)
{
$val = &$data[$key];
var_dump($data);
}
var_dump($data);
2.常量及数据类型
真题回顾
PHP字符串的三种定义方式及各自区别?定义方式:单引号、双引号、heredoc,newdoc。heredoc 类似于双引号,$str=<<
数据类型:三大类数据类型,标量:浮点、整型、字符串、布尔; 复合: 数组、特殊:
用php写出显示客户端ip和服务端ip的代码;
foo() 和@foo()有什么区别
考点分析
错误抑制符号@的使用;
/**
* 下列程序中请写出打印输出的结果
*/
$a = 0;
$b = 0;
if ($a = 3 > 0 || $b = 3 > 0)
{
$a++;
$b++;
echo $a. "\n";
echo $b. "\n";
}
真题回顾
php的遍历数组的三种方式以及各自区别,使用for循环;使用foreach;使用while、list()、each()组合循环;
延伸考点:if.... elseif..... 、 swich....case:switch后面的控制表达式的类型只能是整型、浮点型、或者字符串;
php如何优化多个if elseif 语句的情况?
真题回顾
/**
* 写出如下程序的输出结果:
*
*/
$count = 5;
function get_count()
{
static $count;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();
考点分析
变量的作用域 和 静态变量;
6.正则表达式
真题回顾
. 除了换行以外的任一字符
* 匹配前面的内容出现0次1次或者多次;
? 0次或者一次
^ 必须以他开头
$ 必须以他结尾
+ 出现一次或者多次
{n} 恰巧出现n次
{n,} 大于等于n次
{n,m} 大于等于n小于等于m
[ ] 表示一个集合,配置集合中的一个元素
() 一个整体
[^] 除了
| 或者
[-] :一个范围 例如[0-9]
模式修正符:
真题回顾
// 打开文件
// 将文件的内容读取出来,在开头加入Hello World
// 将拼接好的字符串写回到文件当中
// Hello 7891234567890
//
$file = './hello.txt';
$handle = fopen($file, 'r');
$content = fread($handle, filesize($file));
$content = 'Hello World'. $content;
fclose($handle);
$handle = fopen($file, 'w');
fwrite($handle, $content);
fclose($handle);
考点分析
通过php函数对目录进行遍历;
$dir = './test';
// 打开目录
// 读取目录当中的文件
// 如果文件类型是目录,继续打开目录
// 读取子目录的文件
// 如果文件类型是文件,输出文件名称
// 关闭目录
//
function loopDir($dir)
{
$handle = opendir($dir);
while(false!==($file = readdir($handle)))
{
if ($file != '.' && $file != '..')
{
echo $file. "\n";
if (filetype($dir. '/'. $file) == 'dir')
{
loopDir($dir. '/'. $file);
}
}
}
}
loopDir($dir);
8会话控制
真题回顾
面试真题
真题回顾
http 1.1 中 状态码200, 301 304 403 404 500的含义;
osi七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;