php工程師面試題及答案
PHP全稱(chēng):Hypertext Preprocessor,是一種用來(lái)開(kāi)發(fā)動(dòng)態(tài)網(wǎng)站的服務(wù)器腳本語(yǔ)言。下面是小編整理的php工程師面試題及答案,希望對(duì)大家有幫助!
【1 】Memcached、redis的使用和理解
Memcached和redis 都是一個(gè)key-value的內(nèi)存式存儲(chǔ)系統(tǒng),通過(guò)hash表來(lái)存儲(chǔ)檢索結(jié)果,做到強(qiáng)大的緩存機(jī)制。像新浪的微博、淘寶等大流量站點(diǎn)都必須的使用了這些東東。
Memcache是一個(gè)高性能的分布式的內(nèi)存對(duì)象緩存系統(tǒng),通過(guò)在內(nèi)存里維護(hù)一個(gè)統(tǒng)一的巨大的hash表,它能夠用來(lái)存儲(chǔ)各種格式的數(shù)據(jù),包括圖像、視頻、文件以及數(shù)據(jù)庫(kù)檢索的結(jié)果等。簡(jiǎn)單的說(shuō)就是將數(shù)據(jù)調(diào)用到內(nèi)存中,然后從內(nèi)存中讀取,從而大大提高讀取速度。
redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類(lèi)似,它支持存儲(chǔ)的value類(lèi)型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。
【2】你對(duì)于設(shè)計(jì)模式和MVC的理解
Model-View-Controller,模型、視圖、控制器,一想到MVC就會(huì)想到JAVA,因?yàn)镴AVA是一個(gè)完全面向?qū)ο蟮恼Z(yǔ)言,MVC最早出現(xiàn)在smalltalk中,其核心就是要將試圖和數(shù)據(jù)模型分離,這樣不同的程序就可以有不同的展示。
模型,即程序員寫(xiě)的功能、算法和數(shù)據(jù)模型,也就是我們說(shuō)的系統(tǒng)業(yè)務(wù)邏輯層。
視圖,即前端,圖形界面。展示給用戶(hù)看的。
控制器,主要負(fù)責(zé)對(duì)請(qǐng)求處理、轉(zhuǎn)發(fā)和加載視圖。
設(shè)計(jì)模式,說(shuō)白了就是代碼的設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)和歸類(lèi),設(shè)計(jì)模式最早應(yīng)用于建筑行業(yè),編程的設(shè)計(jì)模式按最早的GoF所述,包括23種設(shè)計(jì)模式,主要用于面向?qū)ο蟮某绦蚓幊獭W裱瓗讉(gè)設(shè)計(jì)原則:開(kāi)閉原則、單一職責(zé)原則、里氏替換原則、依賴(lài)注入、接口分離、迪米特原則、優(yōu)先使用組合而不是繼承等等。包括創(chuàng)建型模式、結(jié)構(gòu)性模式、行為模式三類(lèi)。
【3】HTTP協(xié)議1.0及1.1的區(qū)別,并簡(jiǎn)單說(shuō)下HTTP協(xié)議
HTTP,超文本傳輸協(xié)議。它定義了瀏覽器和服務(wù)器的通信規(guī)則。HTTP協(xié)議是基于TCP/IP的TCP協(xié)議上,現(xiàn)在萬(wàn)維網(wǎng)使用的是HTTP1.1版本,其特點(diǎn)包括,C/S模式,請(qǐng)求簡(jiǎn)單(GET/POST/HEAD),靈活(可以傳輸任何類(lèi)型的數(shù)據(jù)HTML、XML、JSON、自定義等),無(wú)連接(每次連接只處理一個(gè)請(qǐng)求,從發(fā)出請(qǐng)求到收到200狀態(tài)為止斷開(kāi)連接),無(wú)狀態(tài)。
對(duì)HTTP協(xié)議的考察主要包括,響應(yīng)消息格式、請(qǐng)求消息格式、狀態(tài)碼等知識(shí)點(diǎn)。
一般一個(gè)HTTP協(xié)議包括:起始行(start line)、首部(header)、主體(body)三個(gè)部分。
[響應(yīng)消息格式]
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è)響應(yīng)消息分為3部分:1個(gè)起始的狀態(tài)行(status line),首部、1個(gè)包含所請(qǐng)求對(duì)象本身的附屬體。狀態(tài)行有3個(gè)字段:協(xié)議版本字段、狀態(tài)碼字段、原因短語(yǔ)字段。
[請(qǐng)求消息格式]
GET /somedir/page.html HTTP/1.1
Host:www.chinaitlab.com
Connection:close
User-agent:Mozilla/4.0
Accept-language:zh-cn
(額外的回車(chē)符和換行符)
該請(qǐng)求消息的第一行稱(chēng)為請(qǐng)求行 (request line),后續(xù)各行都稱(chēng)為頭部行(header)。請(qǐng)求行有3個(gè)字段:方法字段、URL字段、HTTP版本字段。
[狀態(tài)碼]參見(jiàn)http://www.cnblogs.com/TankXiao/archive/2013/01/08/2818542.html
1xx 消息
2xx 成功
3xx 重定向
4xx 請(qǐng)求錯(cuò)誤
5xx 服務(wù)器錯(cuò)誤
[常見(jiàn)狀態(tài)碼]
200 OK。請(qǐng)求已成功,請(qǐng)求所希望的響應(yīng)頭或數(shù)據(jù)體將隨此響應(yīng)返回。
300 Multiple Choices。請(qǐng)求資源有多個(gè)選擇,如請(qǐng)求文本有法語(yǔ)版、英語(yǔ)版等等。
301 Moved Permanently。表示請(qǐng)求的網(wǎng)頁(yè)已永久轉(zhuǎn)移到新位置
302 Found。表示頁(yè)面在做臨時(shí)跳轉(zhuǎn)時(shí)返回的狀態(tài)。
304 Not Modified?蛻(hù)的緩存資源是最新的, 要客戶(hù)端使用緩存。
400 Bad Request。錯(cuò)誤的請(qǐng)求。
403 Forbidden。請(qǐng)求被服務(wù)器拒絕了。
404 Not Found。表示服務(wù)器找不到請(qǐng)求的網(wǎng)頁(yè),服務(wù)器上不存在的網(wǎng)頁(yè)經(jīng)常會(huì)返回的HTTP狀態(tài)碼。
500 Internal Server Error。
503 Service Unavailable。服務(wù)器目前無(wú)法為請(qǐng)求提供服務(wù),但過(guò)一段時(shí)間就可以恢復(fù)服務(wù)。
504 Gateway Timeout。與狀態(tài)嗎408類(lèi)似, 但是響應(yīng)來(lái)自網(wǎng)關(guān)或代理,此網(wǎng)關(guān)或代理在等待另一臺(tái)服務(wù)器的響應(yīng)時(shí)出現(xiàn)了超時(shí)。
505 HTTP Version not supported。 HTTP協(xié)議版本不支持。
【4】簡(jiǎn)單說(shuō)下Apache中rewrite機(jī)制和PHP框架中URI路由機(jī)制
1)URL重寫(xiě),其實(shí)就是把用戶(hù)通過(guò)瀏覽器請(qǐng)求的URL,到了后臺(tái),apache根據(jù)預(yù)先配置的重寫(xiě)規(guī)則將該請(qǐng)求指向真正的.資源路徑,說(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ě)規(guī)則后,客戶(hù)端不易判斷后臺(tái)程序類(lèi)型等。
3、URL重定向。當(dāng)網(wǎng)站更改域名或增加別名URL后,可以通過(guò)規(guī)則輕松的指向要訪(fǎng)問(wèn)的URL。
http://httpd.apache.org/docs/current/mod/mod_rewrite.html
mod_rewrite 使用基于正則表達(dá)式動(dòng)態(tài)的修改傳入請(qǐng)求的URL。它可以將URL映射到文件系統(tǒng)路徑,也可以將一個(gè)URL映射到另一個(gè)URL。它使用了沒(méi)有限制數(shù)量的規(guī)則來(lái)操縱URL,每條規(guī)則可以包括沒(méi)有限制數(shù)量的附加條件。你可以通過(guò)多種方式來(lái)檢測(cè),如,服務(wù)器變量、環(huán)境變量、HTTP頭、時(shí)間戳等。
mod_rewrite 操作整個(gè)URL路徑,包括path-info的部分。一個(gè)重寫(xiě)規(guī)則可以被設(shè)置在http.conf或者.htaccess中。一個(gè)重寫(xiě)規(guī)則生成的路徑可以包括一個(gè)請(qǐng)求字符串,或者內(nèi)部的子程序處理,外部請(qǐng)求的重定向,或者穿透內(nèi)部代理等。
2)PHP框架中的URI路由機(jī)制,與apache重寫(xiě)類(lèi)似,一般包括通配符和正則兩種規(guī)則。讓用戶(hù)可以重新定向(remap)URI處理程序. 設(shè)定你自己的路由規(guī)則。
【5】MySQL的索引機(jī)制,復(fù)合索引的使用原則
。ㄉ钊霚\出MySQL一書(shū)中對(duì)索引的使用講的比較細(xì)致)
一般都會(huì)用書(shū)本中的目錄來(lái)介紹索引機(jī)制,包括有些書(shū)本會(huì)有專(zhuān)門(mén)的快速檢索附錄,就很類(lèi)似于數(shù)據(jù)庫(kù)的索引。
MySQL的索引包括4類(lèi):主鍵索引(primary key)、唯一索引(unique)、常規(guī)索引(index)、全文索引(fullindex)。
Show index from table_name; –查看表中的索引
Show status like ‘Handler_read%’ –查看索引的使用情況
復(fù)合索引,一般遵循最左前綴原則,如table_a 的 a b c 三列建復(fù)合索引
create index ind_table_a on table_a(a,b,c);
那么,只有在條件中用到a,或者a、b,或者a、b、c這樣的情況下,才會(huì)用到剛建的復(fù)合索引。
【6】如何理解OOP
OOP,面向?qū)ο缶幊蹋ㄈ齻(gè)方面,繼承性、封裝性、多態(tài)性,其中最根本的東西就是抽象。
繼承性,即擴(kuò)展性,通過(guò)子類(lèi)對(duì)已經(jīng)存在的父類(lèi)進(jìn)行功能擴(kuò)展。
封裝性,要求外部不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù),即對(duì)該類(lèi)中的具體實(shí)現(xiàn)做封裝,用戶(hù)不必知道內(nèi)部的具體實(shí)現(xiàn),只有知道它是干什么的,怎么用就好了。
多態(tài)性,就是類(lèi)的抽象和接口,同一個(gè)類(lèi)能夠處理多種類(lèi)型對(duì)象的能力。
我們?cè)诂F(xiàn)實(shí)中,看到的任何東東都可以看做為一個(gè)對(duì)象,然后通過(guò)進(jìn)一步的抽象為類(lèi),類(lèi)又可以演變?yōu)楹芏囝?lèi)似的對(duì)象。舉個(gè)簡(jiǎn)單的例子,將我們看到的一個(gè)房子抽象為一個(gè)ROOM類(lèi),包括基本的門(mén),窗,桌子等物件,人可以進(jìn)出等功能。 現(xiàn)在我們繼承ROOM類(lèi)為Classroom,包括扇門(mén),有大窗,有桌椅,另外只包括一個(gè)黑白和一個(gè)講臺(tái),老師和同學(xué)可以上課,F(xiàn)在我們實(shí)例化這個(gè)Classroom類(lèi)為Classroom_621對(duì)象,包括兩扇門(mén),四扇大窗,30套桌椅,有同學(xué)正在上毛概課。
【php工程師面試題及答案】相關(guān)文章:
經(jīng)典面試題及答案分析08-13
最新財(cái)務(wù)面試題目及答案05-27
情景模擬面試題及參考答案06-07
競(jìng)聘上崗面試題及答案05-14
高職單招面試題目及答案03-09
2021事業(yè)單位面試題目及答案12-16
壓力面試題及解答技巧08-13