日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php常见面试题

發布時間:2025/3/19 php 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php常见面试题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.哈希沖突解決辦法 鏈地址法(拉鏈法)?:value設置成鏈表 開放尋址法:當要插入一個元素時,可以連續地檢查散列表的個各項,直到找到一個空槽來放置這個元素為止。檢查順序可以是線性的,可以是二次的,也可以是再次散列的。
2.靜態變量 靜態變量本身就是靜態存儲方式,?全局變量也是,局部變量不是 靜態存儲方式是指在程序運行期間分配固定的存儲空間,靜態存儲變量通常是在變量定義時就分定存儲單元并一直保持不變,直至整個程序結束。 動態存儲變量是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放。 當一個源程序由多個源文件組成時,非靜態的全局變量在各個源文件中都是有效的。?而靜態全局變量則限制了其作用域,?即只在定義該變量的源文件內有效全局變量作用于整個源程序
3.共享鎖,排它鎖的區別 共享鎖【S鎖】【讀鎖】 又稱讀鎖,若事務T對數據對象A加上S鎖,則事務T可以讀A但不能修改A,其他事務只能再對A加S鎖,而不能加X鎖,直到T釋放A上的S鎖。這保證了其他事務可以讀A,但在T釋放A上的S鎖之前不能對A做任何修改。 排他鎖【X鎖】【寫鎖。】 又稱寫鎖。若事務T對數據對象A加上X鎖,事務T可以讀A也可以修改A,其他事務不能再對A加任何鎖,直到T釋放A上的鎖。這保證了其他事務在T釋放A上的鎖之前不能再讀取和修改A。
4.加密方法 對稱加密和非對稱加密 非對稱加密算法需要兩個密鑰:公開密鑰(publickey)和私有密鑰(privatekey) 非對稱加密算法強度復雜、安全性依賴于算法與密鑰但是由于其算法復雜,而使得加密解密速度沒有對稱加密解密的速度快 對稱加密雙方使用相同鑰匙,安全性得不到保證 對稱加密算法公開、計算量小、加密速度快、加密效率高、可逆
MD5加密,根據輸出值,不能得到原始的明文,即其過程不可逆,任意長度的數據,算出的MD5值長度都是固定的。 php?md5($str)??輸出值為32位,?MD5?也可以加鹽之后再加密
Base64加密方式(可逆)?php?base64_encode($str)?base64_decode($str) AES加密(對稱加密) RSA加密(非對稱加密)
5.操作數組,字符串的方法 數組:? array()?count?sort?asort?ksort??is_array?in_array?foreach? array_push():將一個或多個元素插入數組的末尾(入棧)。 array_pop():刪除數組的最后一個元素(出棧)。 array_shift():刪除數組中首個元素,并返回被刪除元素的值。 array_unshift():在數組開頭插入一個或多個元素。 range():創建包含指定范圍單元的數組。 shuffle():將數組打亂。 array_reverse()?:?返回一個單元順序相反的數組 list():?將數組中元素的值賦值給變量,批量聲明變量 array_merge():?合并一個或多個數組 array_key():返回數組中所有的鍵名 array_values():返回數組中所有的值
字符串: strlen?explode?strpos?substr?md5? strrev:?反轉字符串 chunk_split:把字符串分割為一連串更小的部分 trim():去除字符串首尾處的空白字符(或者其他字符) str_replace:以其他字符替換字符串中的一些字符 ucfirst:?將字符串第一個字符改大寫 substr_count:計算子串在字符串中出現的次數 str_replace:?替換字符串函數 strstr():查找字符串的首次出現位置,返回?第一次出現的位置開始到結尾的字符串 addslashes():?轉義字符串 htmlspecialchars():?HTML?實體轉義
6.魔術方法 __get():讀取不可訪問屬性的值 __set():在給不可訪問屬性賦值 __isset()?:當對不可訪問屬性調用?isset()?或?empty() __unset():當對不可訪問屬性調用?unset()? __construct():具有構造函數的類會在每次創建新對象時先調用此方法 __destruct():?析構函數會在到某個對象的所有引用都被刪除或者當對象被顯式銷毀時執行。 __call():在對象中調用一個不可訪問方法 __callStatic():?在靜態上下文中調用一個不可訪問方法時 _toString():?用于一個類被當成字符串時應怎樣回應
7.@是為了抑制錯誤顯示 讓用戶看不到,提升用戶體驗。注意:只是抑制錯誤,但是錯誤還是存在的,還會拋出異常。
8.debug_backtrace()? 函數生成?backtrace(回溯跟 蹤),函數棧信息 返回一個數組: Array?(?????[0]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?6?????????[function]?=>?c?????????[args]?=>?Array?(?????????????[0]?=>?Cleveland?????????)?????)?????[1]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?3?????????[function]?=>?b?????????[args]?=>?Array?(?????????????[0]?=>?Glenn?????????)?????)?????[2]?=>?Array?(?????????[file]?=>?C:\webfolder\test.php?????????[line]?=>?11?????????[function]?=>?a?????????[args]?=>?Array?(?????????????[0]?=>?Peter?????????)?????)?)
9.魔術常量
__LINE__ 文件中的當前行號。
__FILE__ 文件的完整路徑和文件名。如果用在被包含文件中,則返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 總是包含一個絕對路徑(如果是符號連接,則是解析后的絕對路徑),而在此之前的版本有時會包含一個相對路徑。
__DIR__ 文件所在的目錄。如果用在被包括文件中,則返回被包括的文件所在的目錄。它等價于dirname(__FILE__)。除非是根目錄,否則目錄中名不包括末尾的斜杠。(PHP 5.3.0中新增) =
__FUNCTION__ 函數名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該函數被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。
__CLASS__ 類的名稱(PHP 4.3.0 新加)。自 PHP 5 起本常量返回該類被定義時的名字(區分大小寫)。在 PHP 4 中該值總是小寫字母的。類名包括其被聲明的作用區域(例如 Foo\Bar)。注意自 PHP 5.4 起 __CLASS__ 對 trait 也起作用。當用在 trait 方法中時,__CLASS__ 是調用 trait 方法的類的名字。
__TRAIT__ Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定義時的名字(區分大小寫)。Trait 名包括其被聲明的作用區域(例如 Foo\Bar)。
__METHOD__ 類的方法名(PHP 5.0.0 新加)。返回該方法被定義時的名字(區分大小寫)。
__NAMESPACE__ 當前命名空間的名稱(區分大小寫)。此常量是在編譯時定義的(PHP 5.3.0 新增)。

10.PHP三種訪問修飾符 在PHP5中如果類沒有指定成員的訪問修飾符,默認就是public的訪問權限。 ?public(公共的、默認)?能在程序的任意地方引用,類內類外都可以引用, ?protected(受保護的)?聲明的類內能用,繼承類能引用 ?private(私有的)只能在聲明的類里引用
11.參數傳遞
12.global?$GLOBALS global?關鍵詞用于在函數內訪問全局變量。 $GLOBALS[index]?的數組中存儲了所有的全局變量。下標存有變量名。這個數組在函數內也可以訪問,并能夠用于直接更新全局變量。 在?PHP?中,作用域是不重疊的,函數之外的是全局變量,函數內部定義的則是局部變量
13.數組排序
14.解析url (1.)parse_url?:?解析?URL?字符串。 返回一個數組{ ??"scheme"????協議名 ??"host"????域名 ??"port"??端口號 ??"path"?路徑??????????例:?"/path/login.php" ?"query"??請求參數??例?:?"arg=value&a=b" } (2.)利用$_SERVER內置數組變量 QUERY_STRING:?查詢字符串??例?:?"arg=value&a=b" HTTP_HOST:?當前請求頭中?Host:?項的內容 REQUEST_URI:?URI?用來指定要訪問的頁面。例如?“/index.html”。 (3.)利用pathinfo內置函數 $test?=?pathinfo("http://localhost:8080/path/index.php?a=b&c=d"); Array ( ????[dirname]?=>?http://localhost:8080/path ????[basename]?=>?index.php?a=b&c=d ????[extension]?=>?php?a=b&c=d ????[filename]?=>?index ) (4.)利用basename內置函數 $test?=?basename("http://localhost/path/index.php?name=tank&sex=1#top"); 結果如下 index.php?name=tank&sex=1#top
15.超全局變量 超全局變量是在全部作用域中始終可用的內置變量,這意味著它們在一個腳本的全部作用域中都可用。在函數或方法中無需執行?global?$variable;?就可以訪問它們。
$GLOBALS?—?引用全局作用域中可用的全部變量 $_SERVER?—?服務器和執行環境信息 $_GET?—?HTTP?GET?變量 $_POST?—?HTTP?POST?變量 $_FILES?—?HTTP?文件上傳變量 $_REQUEST?—?HTTP?Request?變量,?默認情況下包含了?$_GET,$_POST?和?$_COOKIE?的數組 $_SESSION?—?Session?變量 $_ENV?—?環境變量 $_COOKIE?—?HTTP?Cookies
16.函數 函數名是大小寫無關的
(1)目錄: is_dir():?判斷路徑是否是目錄 mkdir():創建目錄 opendir()?:打開目錄句柄 readdir():返回目錄中下一個文件的文件名 closedir():關閉目錄句柄
(2)文件 file_exists()?判斷文件是否存在 file_put_contents()?函數把一個字符串寫入文件中。與依次調用?fopen(),fwrite()?以及?fclose()?功能一樣。 file_get_contents()?把文件內容?或者?url返回的內容?全部讀入字符串? 注:請求url可能存在超時的現象,如果php-fpg設置的是無超時時間,進而可能導致php-fpm進程一直占用,?阻塞請求處理,返回大量502 fopen():打開文件或者?URL fwrite():函數寫入文件(可安全用于二進制文件) fclose():關閉一個打開文件 flock():?鎖定或釋放文件
(3)排序 sort(),根據數組中元素的值,以英文字母順序排序,索引鍵會由?0?到?n-1?重新編號。主要是當數組索引鍵的值無關緊要時用來把數組排序。 asort(),對數組value進行排序,數組的索引保持和單元的關聯。主要用于對那些單元順序很重要的結合數組進行排序。 ksort(),根據數組中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的關聯數組。
17.模板引擎 smarty是一個模板引擎,使用smarty主要是為了實現邏輯和外在內容的分離,如果不使用模板的話,通常的做法就是php代碼和html代碼混編。使用了模板之后,則可以將業務邏輯都放到php文件中,而負責顯示內容的模板則放到html文件中。
18.PHP的垃圾回收機制 PHP可以自動進行內存管理,清除不再需要的對象。 PHP使用了引用計數(reference?counting)這種單純的垃圾回收(garbage?collection)機制。每個對象都內含一個引用計數器,每個reference連接到對象,計數器加1。當reference離開生存空間或被設為NULL,計數器減1。當某個對象的引用計數器為零時,PHP知道你將不再需要使用這個對象,釋放其所占的內存空間。
19.引用計數
20.php?中傳值與傳引用 變量默認總是傳值賦值。 那也就是說,當將一個表達式的值賦予一個變量時,整個原始表達式的值被賦值到目標變量。這意味著,例如,當一個變量的值賦予另外一個變量時,改變其中一個變量的值,將不會影響到另外一個變量。 PHP?也提供了另外一種方式給變量賦值:引用賦值。 這意味著新的變量簡單的引用(換言之,“成為其別名”?或者?“指向”)了原始變量。改動新的變量將影響到原始變量,反之亦然。使用引用賦值,簡單地將一個&符號加到將要賦值的變量前(源變量)。 對象默認是傳引用。 對于較大的數據,傳引用比較好,這樣可以節省內存的開銷。
21.常量 常量類似變量,但是常量一旦被定義就無法更改或撤銷定義。 注釋:與變量不同,常量貫穿整個腳本是自動全局的。 設置常量:define()?函數?const關鍵字? Const可在類中使用,define不能
22.發送http請求函數 (1)curl $ch?=?curl_init();??//初始化?cURL?會話 curl_setopt();?//設置?cURL?傳輸選項 curl_exec($ch);?//執行?cURL?會話 curl_close($ch);?//關閉?cURL?會話
(2)socket gethostbyname() ?//返回IP 網址 fsockopen() //打開一個網絡連接或者一個Unix套接字連接 fputs() //寫入文件 feof() ?//?檢測是否已到達文件末尾 fgets()?//從文件指針中讀取一行。 fclose() //關閉一個打開文件
(3)stream stream_context_create() //創建資源流上下文 file_get_contents() //把整個文件一次性讀入一個字符串中
23.php中require,include,use區分
24.合并數組+與array_merge的區別 1)鍵名為數字時,array_merge()不會覆蓋掉原來的值,但+合并數組則會把最先出現的值作為最終結果返回,而把后面的數組擁有相同鍵名的那些值“拋棄”掉(不是覆蓋)?

總結

以上是生活随笔為你收集整理的php常见面试题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。