整理自慕課網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 區別,
常見協議含義及端口;
一網打盡