360大牛解讀PHP面試-php基礎知識考點

整理自慕課網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的構造函數和析構函數;

 

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  區別,

     常見協議含義及端口;

   

一網打盡

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章