360大牛解读PHP面试-php基础知识考点

整理自慕课网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');
一网打尽
写出如下程序的输出结果

 
/**
 * 写出如下程序的输出结果
 * 程序运行时,每一次循环结束后变量$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=<<

考点分析
       数据类型:三大类数据类型,标量:浮点、整型、字符串、布尔; 复合: 数组、特殊:

       浮点不能用于相等运算;

      布尔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__

一网打尽
     用php写出显示客户端ip和服务端ip的代码;

    __FILE__ 代表什么意思;

3.运算符
         foo() 和@foo()有什么区别     

真题回顾​​​​
考点分析
       错误抑制符号@的使用;

      延伸考点:

        运算符的优先级( PHP手册运算符优先级);比较运算符;递增递减运算符;逻辑运算符;

       重点记忆:递增/递减 > ! > 算数运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算(^)>位运算符(|)> 逻辑与 >逻辑或 >三目> 赋值 > and > xor > or

      递增/递减不影响布尔值、递增NULL 值为1、递减null没有效果;

     理解逻辑运算符 短路作用;

 
/**
 * 下列程序中请写出打印输出的结果
*/
$a = 0;
$b = 0;
 
if ($a = 3 > 0 || $b = 3 > 0) 
{
    $a++;
    $b++;
    echo $a. "\n";
    echo $b. "\n";
}
 

     

4.流程控制
 真题回顾
       php的遍历数组的三种方式以及各自区别,使用for循环;使用foreach;使用while、list()、each()组合循环;

       for只能遍历索引数组,foreach可以遍历索引和关联数组。while、list() 和each()不会reset(); foreach会对数组reset操作;

考点分析
       延伸考点:if.... elseif..... 、 swich....case:switch后面的控制表达式的类型只能是整型、浮点型、或者字符串;

       switch 会生成跳转表、直接跳转到case;

一网打尽
      php如何优化多个if elseif 语句的情况?

5.自定义函数及内部函数
真题回顾
 
/**
 * 写出如下程序的输出结果:
 *
 */
 
$count = 5;
function get_count()
{
    static $count;  
    return $count++;
}
 
echo $count;
++$count;
 
echo get_count();
echo get_count();
考点分析
    变量的作用域 和 静态变量;

    函数的参数以及参数的引用传递;

   函数的返回值以及引用返回;

   外部文件的导入;

   系统内置函数;时间日期函数、ip处理函数,打印处理函数,序列化 反序列化函数、字符串处理函数,数组处理函数,

一网打尽
6.正则表达式
真题回顾

      手机号正则表达式的编写

考点分析

    正则表达式的作用:分割、查找、匹配、替换字符串

   分隔符:正斜线(/),hash符号(#),取反符号(~);

  通用原子:\d(十进制0~9), \D(除了0~9), \w(数组字母下划线),\W(除了数字字母下划线) ,\s(空白符), \S(除了空白符);

 元字符:

元字符
.    除了换行以外的任一字符     
*    匹配前面的内容出现0次1次或者多次;     
?    0次或者一次     
^    必须以他开头      
  $    必须以他结尾     
 +    出现一次或者多次     
{n}    恰巧出现n次     
{n,}    大于等于n次     
 {n,m}    大于等于n小于等于m     
[ ]    表示一个集合,配置集合中的一个元素     
  ()     一个整体     
[^]    除了      
|    或者     
[-]    :一个范围      例如[0-9] 
 模式修正符:

i:不区分大小写,

m:将字符串通过分隔符分割,就是将字符串中的每一行分别进行匹配

e:,s,U,x,A,D,u

延伸: 后向引用 、贪婪模式

一网打尽

7.文件及目录处理
真题回顾

     不断在hello.txt头部写入一行hello word 字符串,要求代码完整;

      

 
// 打开文件
// 将文件的内容读取出来,在开头加入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);
考点分析

    文件的读取/写入;

        fopen()函数,打开模式:r/r+,w/w+, a/a+,x/x+,b,t

   目录操作函数;

一网打尽
     通过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会话控制
真题回顾

     简述cookie 和session的区别以及各自的工作机制,存储位置等,简述cookie的优缺点;

考点分析

       php会话控制结束;

      为什么要使用会话控制技术;

一网打尽

   session的存储方式,如何进行遍历;

9.面向对象
面试真题

    请写出php类权限控制修饰符; public protected private

考点分析

       面向对象的封装,继承和多态;单一继承,方法重写,抽象类的定义,接口的定义

       魔术方法:_

       设计模式:工厂模式 单例模式 单例模式 注册树模式 适配器模式观察者模式 策略模式;

一网打尽

     请写出php的构造函数和析构函数;

 

10.网络协议考点
 真题回顾
      http 1.1 中 状态码200, 301 304 403 404 500的含义;

      

考点分析
      osi七层模型:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层;

      http的工作原理及特点;基于b/s模式

      http协议常见请求头/响应头 和请求方法;content-type、accept、origin、...

      https协议的工作原理;get post head options put delete trace

    get post  区别,

     常见协议含义及端口;

   

一网打尽

你可能感兴趣的:(面试)