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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_16399991/article/details/81949568

整理自慕课网360大牛全面解读PHP面试 ,购买链接:https://coding.imooc.com/class/133.html

1.php 引用变量

  • 真题回顾

         什么是引用变量?在PHP中用什么符号定义引用变量

  • 考点分析

      php引用变量的概念及定义方式;

      php变量的工作原理。理解COW(copy on write 写时复制机制);

<?php

$a = range(0, 3);
xdebug_debug_zval('a');

$b = &$a;
xdebug_debug_zval('a');

$a = range(0, 3);
xdebug_debug_zval('a');

   考点 unset:

<?php
// unset 只会取消引用,不会销毁空间
$a = 1;

$b = &$a;

unset($b);

echo $a. "\n";//$a 还是1

考点 :对象本身就是引用传值

<?php

// 对象本身就是引用传递
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');
  • 一网打尽

写出如下程序的输出结果

<?php

/**
 * 写出如下程序的输出结果
 * 程序运行时,每一次循环结束后变量$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=<<<EoT ...... EoT;   newdoc类似单引号,$str=<<<'EoT' ...... EoT;

  • 考点分析

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

       浮点不能用于相等运算;

      布尔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没有效果;

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

<?php

/**
 * 下列程序中请写出打印输出的结果
*/
$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.自定义函数及内部函数

  • 真题回顾
<?php

/**
 * 写出如下程序的输出结果:
 *
 */

$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 字符串,要求代码完整;

      

<?php

// 打开文件
// 将文件的内容读取出来,在开头加入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函数对目录进行遍历;

<?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的构造函数和析构函数

猜你喜欢

转载自blog.csdn.net/qq_16399991/article/details/81949568