- 最新的PHP面試題及答案 推薦度:
- PHP算法面試題及答案 推薦度:
- 8個(gè)PHP數組面試題 推薦度:
- 相關(guān)推薦
PHP面試試題精選
導語(yǔ):PHP需要的時(shí)候不像其他面試,HR總回問(wèn)到你一些技術(shù)性的問(wèn)題。下面的是百分網(wǎng)小編為大家整理的一些PHP面試試題。

php面試題:
1、PHP的整型溢出問(wèn)題是怎樣的
2、如何理解OOP
3、你對于設計模式和MVC的理解
4、HTTP協(xié)議1.0及1.1的區別,并簡(jiǎn)單說(shuō)下HTTP協(xié)議
5、簡(jiǎn)單說(shuō)下Apache中rewrite機制和PHP框架中URI路由機制
6、MySQL的索引機制,復合索引的使用原則
7、MySQL的表類(lèi)型及MyISAM與InnoDB的區別
8、簡(jiǎn)單說(shuō)下快速排序算法
9、awk、sed、sort的基本使用(用實(shí)例考察的)
10、Memcached、redis的使用和理解
PHP的整型溢出問(wèn)題是怎樣的
PHP的整型數的字長(cháng)和平臺有關(guān),對于32位的操作系統,最大的整型是有二十多億,其實(shí)就是2的31次方,最小為-2的31次方,PHP不支持無(wú)符號的整數。 如果一個(gè)數超出了integer范圍,將會(huì )被自動(dòng)解釋為float。如果執行的運算結果超出了 integer 范圍,也會(huì )返回 float。(那在java、C中的整型整型溢出會(huì )怎樣)
如何理解OOP
OOP,面向對象編程,包括三個(gè)方面,繼承性、封裝性、多態(tài)性,其中最根本的東西就是抽象。
繼承性,即擴展性,通過(guò)子類(lèi)對已經(jīng)存在的父類(lèi)進(jìn)行功能擴展。
封裝性,要求外部不能隨意存取對象的內部數據,即對該類(lèi)中的具體實(shí)現做封裝,用戶(hù)不必知道內部的具體實(shí)現,只有知道它是干什么的,怎么用就好了。
多態(tài)性,就是類(lèi)的抽象和接口,同一個(gè)類(lèi)能夠處理多種類(lèi)型對象的能力。
我們在現實(shí)中,看到的任何東東都可以看做為一個(gè)對象,然后通過(guò)進(jìn)一步的抽象為類(lèi),類(lèi)又可以演變?yōu)楹芏囝?lèi)似的對象。舉個(gè)簡(jiǎn)單的例子,將我們看到的一個(gè)房子抽象為一個(gè)ROOM類(lèi),包括基本的門(mén),窗,桌子等物件,人可以進(jìn)出等功能。 現在我們繼承ROOM類(lèi)為Classroom,包括扇門(mén),有大窗,有桌椅,另外只包括一個(gè)黑白和一個(gè)講臺,老師和同學(xué)可以上課,F在我們實(shí)例化這個(gè)Classroom類(lèi)為Classroom_621對象,包括兩扇門(mén),四扇大窗,30套桌椅,有同學(xué)正在上毛概課。
你對于設計模式和MVC的理解
Model-View-Controller,模型、視圖、控制器,一想到MVC就會(huì )想到JAVA,因為JAVA是一個(gè)完全面向對象的語(yǔ)言,MVC最早出現在smalltalk中,其核心就是要將試圖和數據模型分離,這樣不同的程序就可以有不同的展示。
模型,即程序員寫(xiě)的功能、算法和數據模型,也就是我們說(shuō)的系統業(yè)務(wù)邏輯層。
試圖,即前端,圖形界面。展示給用戶(hù)看的。
控制器,主要負責對請求處理和轉發(fā)。
設計模式,其實(shí)就是代碼的設計經(jīng)驗的總結和歸類(lèi),設計模式最早應用與建筑行業(yè),編程的設計模式按最早的GoF所述,包括23種設計模式,主要用于面向對象的程序編程。遵循幾個(gè)設計原則:開(kāi)閉原則、單一職責原則、里氏替換原則、依賴(lài)注入、接口分離、迪米特原則、優(yōu)先使用組合而不是繼承等等。包括創(chuàng )建型模式、結構性模式、行為模式三類(lèi)。
HTTP協(xié)議1.0及1.1的區別,并簡(jiǎn)單說(shuō)下HTTP協(xié)議
HTTP,超文本傳輸協(xié)議。它定義了瀏覽器和服務(wù)器的通信規則。HTTP協(xié)議是基于TCP/IP的TCP協(xié)議上,現在萬(wàn)維網(wǎng)使用的是HTTP1.1版本,其特點(diǎn)包括,C/S模式,請求簡(jiǎn)單(GET/POST/HEAD),靈活(可以傳輸任何類(lèi)型的數據HTML、XML、JSON、自定義等),無(wú)連接(每次連接只處理一個(gè)請求,從發(fā)出請求到收到200狀態(tài)為止斷開(kāi)連接),無(wú)狀態(tài)。
HTTP協(xié)議主要包括,響應消息格式、請求消息格式、狀態(tài)碼知識點(diǎn)。
[響應消息格式]
HTTP/1.1 200 0K
Connectlon:close
Date: Thu, 13 Oct 2005 03:17:33 GMT
Server: Apache/2.0.54 (Unix)
Last—Nodified:Mon,22 Jun 1998 09;23;24 GMT
Content—Length:682l
Content—Type:text/html
這個(gè)響應消息分為3部分:1個(gè)起始的狀態(tài)行(status line),6個(gè)頭部行、1個(gè)包含所請求對象本身的附屬體。狀態(tài)行有3個(gè)字段:協(xié)議版本字段、狀態(tài)碼字段、原因短語(yǔ)字段。
[請求消息格式]
GET /somedir/page.html HTTP/1.1
Host:
Connection:close
User-agent:Mozilla/4.0
Accept-language:zh-cn
(額外的回車(chē)符和換行符)
該請求消息的第一行稱(chēng)為請求行 (request line),后續各行都稱(chēng)為頭部行(header)。請求行有3個(gè)字段:方法字段、URL字段、HTTP版本字段。
[狀態(tài)碼]參見(jiàn)
1xx 消息
2xx 成功
3xx 重定向
4xx 請求錯誤
5xx 服務(wù)器錯誤
200 OK。請求已成功,請求所希望的響應頭或數據體將隨此響應返回。
301 Moved Permanently。表示請求的網(wǎng)頁(yè)已永久轉移到新位置
302 Found。表示頁(yè)面在做臨時(shí)跳轉時(shí)返回的狀態(tài)。
303 Not Modified?蛻(hù)的緩存資源是最新的, 要客戶(hù)端使用緩存。
403 Forbidden。請求被服務(wù)器拒絕了。
404 Not Found。表示服務(wù)器找不到請求的網(wǎng)頁(yè),服務(wù)器上不存在的網(wǎng)頁(yè)經(jīng)常會(huì )返回的HTTP狀態(tài)碼。
500 Internal Server Error。
503 Service Unavailable。服務(wù)器目前無(wú)法為請求提供服務(wù),但過(guò)一段時(shí)間就可以恢復服務(wù)。
504 Gateway Timeout。與狀態(tài)嗎408類(lèi)似, 但是響應來(lái)自網(wǎng)關(guān)或代理,此網(wǎng)關(guān)或代理在等待另一臺服務(wù)器的響應時(shí)出現了超時(shí)。
簡(jiǎn)單說(shuō)下Apache中rewrite機制和PHP框架中URI路由機制
1)URL重寫(xiě),其實(shí)就是把用戶(hù)通過(guò)瀏覽器請求的URL,到了后臺,apache根據預先配置的重寫(xiě)規則將該請求指向真正的資源路徑,說(shuō)白了就是打馬虎眼,把真正的路徑改頭換面后給用戶(hù)訪(fǎng)問(wèn),可問(wèn)題是這樣做有啥用處。
1、SEO方面。將動(dòng)態(tài)的URL靜態(tài)化,以滿(mǎn)足搜索引擎的胃口。
2、訪(fǎng)問(wèn)控制。比如,通過(guò)重寫(xiě)規則后,客戶(hù)端不易判斷后臺程序類(lèi)型等。
3、URL重定向。當網(wǎng)站更改域名或增加別名URL后,可以通過(guò)規則輕松的指向要訪(fǎng)問(wèn)的URL。
mod_rewrite 使用基于正則表達式動(dòng)態(tài)的修改傳入請求的URL。它可以將URL映射到文件系統路徑,也可以將一個(gè)URL映射到另一個(gè)URL。它使用了沒(méi)有限制數量的規則來(lái)操縱URL,每條規則可以包括沒(méi)有限制數量的附加條件。你可以通過(guò)多種方式來(lái)檢測,如,服務(wù)器變量、環(huán)境變量、HTTP頭、時(shí)間戳等。
mod_rewrite 操作整個(gè)URL路徑,包括path-info的部分。一個(gè)重寫(xiě)規則可以被設置在http.conf或者.htaccess中。一個(gè)重寫(xiě)規則生成的路徑可以包括一個(gè)請求字符串,或者內部的子程序處理,外部請求的重定向,或者穿透內部代理等。
2)PHP框架中的URI路由機制,與apache重寫(xiě)類(lèi)似,一般包括通配符和正則兩種規則。讓用戶(hù)可以重新定向(remap)URI處理程序. 設定你自己的路由規則。
MySQL的索引機制,復合索引的使用原則
(深入淺出MySQL一書(shū)中對索引的使用講的比較細致)
一般都會(huì )用書(shū)本中的目錄來(lái)介紹索引機制,其實(shí)有些書(shū)本會(huì )有專(zhuān)門(mén)的快速檢索附錄,就很類(lèi)似于數據庫的索引。
MySQL的索引包括4類(lèi):主鍵索引(primary key)、唯一索引(unique)、常規索引(index)、全文索引(fullindex)。 Show index from table_name; --查看表中的索引
Show status like 'Handler_read%' --查看索引的使用情況
復合索引,一般遵循最左前綴原則,如table_a 的 a b c 三列建復合索引
create index ind_table_a on table_a(a,b,c);
那么,只有在條件中用到a,或者a、b,或者a、b、c這樣的情況下,才會(huì )用到剛建的復合索引。
MySQL的表類(lèi)型及MyISAM與InnoDB的區別
MySQL常見(jiàn)的表類(lèi)型(即存儲引擎)show engines包 括:MyISAM/Innodb/Memory/Merge/NDB
其中,MyISAM和Innodb是最常用的兩個(gè)表類(lèi)型,各有優(yōu)勢,我們可以根據需求情況選擇適合自己的表類(lèi)型。
[MyISAM]
1)每個(gè)數據庫存儲包括3個(gè)文件:.frm(表定義)、MYD(數據文件)、MYI(索引文件)
2)數據文件或索引文件可以指向多個(gè)磁盤(pán)
3)Linux的默認引擎,win默認InnoDB
4)面向非事務(wù)類(lèi)型,避免事務(wù)型額外的開(kāi)銷(xiāo)
5)適用于select、insert密集的表
6)MyISAM默認鎖的調度機制是寫(xiě)優(yōu)先,可以通過(guò)LOW_PRIORITY_UPDATES設置
7)MyISAM類(lèi)型的數據文件可以在不同操作系統中COPY,這點(diǎn)很重要,布署的時(shí)候方便點(diǎn)。
[Innodb]
1)用于事務(wù)應用程序
2)適用于update、delete密集的操作。執行select count(*) from table時(shí),InnoDB要掃描一遍整個(gè)表來(lái)計算有多少行,但是MyISAM只要簡(jiǎn)單的讀出保存好的行數即可。注意的是,當count(*)語(yǔ)句包含 where條件時(shí),兩種表的操作是一樣的。DELETE FROM table時(shí),InnoDB不會(huì )重新建立表,而是一行一行的刪除。
3)引入行級鎖和外鍵的約束
4)InnoDB不支持FULLTEXT類(lèi)型的索引
簡(jiǎn)單說(shuō)下快速排序算法
基本思想:通過(guò)一趟排序將待排序列分割成兩部分,其中一部分比另一部分記錄小,再分別對這兩部分繼續快速排序,以達到有序。
算法實(shí)現:設有兩個(gè)指針low和high,初值為low=1,high=n,設基準值為key(通常選第一個(gè)),則首先從high位置開(kāi)始向前搜索,找到第一個(gè)比key小的記錄與key交換,然后從low位置向后搜索,找到第一個(gè)比key大的記錄與基準值交換,重復直至low=high為止。
第一趟排序結果,key之前的記錄值比key之后的記錄值小。
11 25 9 3 16 2 //選擇11為key
2 25 9 3 16 11
2 11 9 3 16 25
2 3 9 11 16 25
awk、sed、sort的基本使用(用實(shí)例考察的)
[例]:有如下文件test,請統計每個(gè)網(wǎng)址出現次數,用一句shell實(shí)現。
a 20:00
b 19:30
c 14:00
d 23:00
e 20:30
f 20:30
cat test| awk -F' ' '{print $2}' |sort -n |uniq -c
Memcached、redis的使用和理解
Memcached和redis 都是一個(gè)key-value的內存式存儲系統,通過(guò)hash表來(lái)存儲檢索結果,做到強大的緩存機制。像新浪的微博、淘寶等大流量站點(diǎn)都必須的使用了這些東東。
下面是從百科中摘錄的介紹。具體實(shí)踐和使用后續再詳細介紹。
Memcache是一個(gè)高性能的分布式的內存對象緩存系統,通過(guò)在內存里維護一個(gè)統一的巨大的hash表,它能夠用來(lái)存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡(jiǎn)單的說(shuō)就是將數據調用到內存中,然后從內存中讀取,從而大大提高讀取速度。
redis是一個(gè)key-value存儲系統。和Memcached類(lèi)似,它支持存儲的value類(lèi)型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。
【PHP面試試題】相關(guān)文章:
2017經(jīng)典面試PHP試題05-24
php面試題05-18
PHP經(jīng)典面試題07-28
精選php面試題及答案06-01
最新PHP面試題05-27
PHP的面試題集07-06
PHP經(jīng)典面試題集錦01-12
PHP面試題集04-21
php應聘面試題05-07