2023php面試題
這是一份比較全面的PHP面試題,對(duì)準(zhǔn)備去新公司應(yīng)聘PHP職位的開(kāi)發(fā)者應(yīng)該有幫助。 或者說(shuō),對(duì)招聘PHP開(kāi)發(fā)人員的企業(yè)也有些幫助!下面是小編為大家整理的2023php面試題,如果大家喜歡可以分享給身邊的朋友。
2023php面試題(篇1)
1.以下哪一句不會(huì)把 John 新增到 users 陣列?
$users[] = 'john';
成功把 John 新增到陣列 users。
array_add($users,’john’);
函式 array_add() 無(wú)定義。
array_push($users,‘john’);
成功把 John 新增到陣列 users。
$users ||= 'john';
語(yǔ)法錯(cuò)誤。
2.sort()、assort()、和 ksort() 有什么分別?它們分別在什么情況下使用?
sort()
根據(jù)陣列中元素的值,以英文字母順序排序,索引鍵會(huì)由 0 到 n-1 重新編號(hào)。主要是當(dāng)陣列索引鍵的值無(wú)關(guān)疼癢時(shí)用來(lái)把陣列排序。
assort()
PHP 沒(méi)有 assort() 函式,所以可能是 asort() 的筆誤。
asort()
與 sort() 一樣把陣列的元素按英文字母順序來(lái)排列,不同的是所有索引鍵都獲得保留,特別適合替聯(lián)想陣列排序。
ksort()
根據(jù)陣列中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的聯(lián)想陣列。
3.以下的代碼會(huì)產(chǎn)生什么?為什么?
$num =10;
function multiply(){
$num =$num __10;
}
multiply();
echo $num;
由于函式 multiply() 沒(méi)有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
4. reference 跟一個(gè)正規(guī)的變量有什么分別?如何 pass by reference?在什么情況下我們需要這樣做?
Reference 傳送的是變量的地址而非它的值,所以在函式中改變一個(gè)變量的值時(shí),整個(gè)應(yīng)用都見(jiàn)到這個(gè)變量的新值。
一個(gè)正規(guī)變量傳送給函式的是它的值,當(dāng)函式改變這個(gè)變量的值時(shí),只有這個(gè)函式才見(jiàn)到新值,應(yīng)用的其他部分仍然見(jiàn)到舊值。
$myVariable = ”its' value“;Myfunction(&$myVariable); // 以 reference 傳送參數(shù)以 reference 傳送參數(shù)給函式,可以使函式改變了的變量,即使在函式結(jié)束后仍然保留新值。
5.些函式可以用來(lái)在現(xiàn)正執(zhí)行的腳本中插入函式庫(kù)?
對(duì)這道題目不同的理解會(huì)有不同的答案,我的第一個(gè)想法是插入 PHP 函式庫(kù)不外乎 include()、include_once()、require()、require_once(),但細(xì)心再想,“函式庫(kù)”也應(yīng)該包括 com 物件和 .net 函式庫(kù),所以我們的答案也要分別包括 com_load 和 dotnet_load,下次有人提起“函式庫(kù)”的時(shí)候,別忘記這兩個(gè)函式。
6.foo() 與 @foo() 有什么分別?
foo() 會(huì)執(zhí)行這個(gè)函式,任何解譯錯(cuò)誤、語(yǔ)法錯(cuò)誤、執(zhí)行錯(cuò)誤都會(huì)在頁(yè)面上顯示出來(lái)。
@foo() 在執(zhí)行這個(gè)函式時(shí),會(huì)隱藏所有上述的錯(cuò)誤訊息。
很多應(yīng)用程式都使用 @mysql_connect() 和 @mysql_query 來(lái)隱藏 mysql 的錯(cuò)誤訊息,我認(rèn)為這是很嚴(yán)重的失誤,因?yàn)殄e(cuò)誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。
7.你如何替 PHP 的`應(yīng)用程式偵錯(cuò)?
我并不常這樣做,我曾經(jīng)試過(guò)很多不同的偵錯(cuò)工具,在 Linux 系統(tǒng)中設(shè)定這些工具一點(diǎn)也不容易。不過(guò)以下我會(huì)介紹一個(gè)近來(lái)頗受注目的偵錯(cuò)工具。
PHP - Advanced PHP Debugger 或稱 PHP - APD,第一步是執(zhí)行以下的指令安裝:
pear install apd安裝后在你的腳本的開(kāi)頭位置加入以下的語(yǔ)句開(kāi)始進(jìn)行偵錯(cuò):
apd_set_pprof_trace();執(zhí)行完畢,打開(kāi)以下檔案來(lái)查閱執(zhí)行日志:
apd.dumpdir
你也可以使用 pprofp 來(lái)格式化日志。
詳細(xì)的資料可以參閱 us.php.net/manual/en/ref.apd.php。
8.“===”是什么?試舉一個(gè)“==”是真但“===”是假的例子。
“===”是給既可以送回布爾值“假”,也可以送回一個(gè)不是布爾值但卻可以賦與“假”值的函式,strpos() 和 strrpos() 便是其中兩個(gè)例子。
問(wèn)題的第二部份有點(diǎn)困難,想一個(gè)“==”是假,但是“===”是真的例子卻很容易,相反的例子卻很少。但我終于找到以下的例子:
if (strpos(”abc“, ”a“) == true){ // 這部分永不會(huì)被執(zhí)行,因?yàn)?”a“ 的位置是 0,換算成布爾值“假”}if (strpos(”abc“, ”a“) === true){ // 這部份會(huì)被執(zhí)行,因?yàn)椤?==”保證函式 strpos() 的送回值不會(huì)換算成布爾值.}
9.你會(huì)如何定義一個(gè)沒(méi)有成員函式或特性的類別 myclass?
class myclass{}
10.你如何產(chǎn)生一個(gè) myclass 的物件?
$obj = new myclass();
11.在一個(gè)類別內(nèi)如何存取這個(gè)類別的特性及變改它的值?
使用語(yǔ)句:$this->propertyName,例如:
class myclass{ private $propertyName; public function __construct() { $this->propertyName = ”value“; }}
12.include 和 include_once 有什么分別?require 又如何?
三者都是用來(lái)在腳本中插入其他檔案,視乎 url_allow_fopen 是否核準(zhǔn),這個(gè)檔案可以從系統(tǒng)內(nèi)部或外部取得。但他們之間也有微細(xì)的分別:
include():這個(gè)函式容許你在腳本中把同一個(gè)檔案插入多次,若果檔案不存在,它會(huì)發(fā)出系統(tǒng)警告并繼續(xù)執(zhí)行腳本。
include_once():它跟 include() 的功能相似,正如它的名字所示,在腳本的執(zhí)行期間,有關(guān)檔案只會(huì) 入一次。
require():跟 include() 差不多,它也是用來(lái)在腳本中插入其他檔案,但若果檔案不存在,它會(huì)發(fā)出系統(tǒng)警告,這個(gè)警告會(huì)引致致命錯(cuò)誤令腳本中止執(zhí)行
13.以下哪一個(gè)函式可以把瀏覽器轉(zhuǎn)向到另一個(gè)頁(yè)面?
redir()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
header()
這個(gè)是正確答案,header() 用來(lái)插入卷頭資料,可以用來(lái)使瀏覽器轉(zhuǎn)向到另一個(gè)頁(yè)面,例如:
header(”Location: www.search-this.com/“);
location()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
redirect()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
14.以下哪一個(gè)函式可以用來(lái)開(kāi)啟檔案以便讀/寫(xiě)?
fget()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤,
file_open()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
fopen()
這是正確答案,fopen() 可以用來(lái)開(kāi)啟檔案以便讀/寫(xiě),事實(shí)上這個(gè)函式還有很多選項(xiàng),詳細(xì)資料請(qǐng)參閱 php.net。
open_file()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。
15.mysql_fetch_row() 和 mysql_fetch_array() 有什么分別?
mysql_fetch_row() 把數(shù)據(jù)庫(kù)的一列儲(chǔ)存在一個(gè)以零為基數(shù)的陣列中,第一欄在陣列的索引 0,第二欄在索引 1,如此類推。mysql_fetch_assoc() 把數(shù)據(jù)庫(kù)的一列儲(chǔ)存在一個(gè)關(guān)聯(lián)陣列中,陣列的索引就是欄位名稱,例如我的數(shù)據(jù)庫(kù)查詢送回“first_name”、“l(fā)ast_name”、“email”三個(gè)欄位,陣列的索引便是“first_name”、“l(fā)ast_name”和“email”。mysql_fetch_array() 可以同時(shí)送回 mysql_fetch_row() 和 mysql_fetch_assoc() 的值。
16.下面的代碼用來(lái)做什么?請(qǐng)解釋。
$date='08/26/';print ereg_replace(”([0-9]+)/([0-9]+)/([0-9]+)“,”2/1/3“,$date);
這是把一個(gè)日期從 MM/DD/YYYY 的格式轉(zhuǎn)為 DD/MM/YYYY 格式。我的一個(gè)好朋友告訴我可以把這個(gè)正規(guī)表達(dá)式拆解為以下的語(yǔ)句,對(duì)于如此簡(jiǎn)單的表示是來(lái)說(shuō)其實(shí)無(wú)須拆解,純粹為了解說(shuō)的方便:
// 對(duì)應(yīng)一個(gè)或更多 0-9,后面緊隨一個(gè)斜號(hào)$regExpression = ”([0-9]+)/“;// 應(yīng)一個(gè)或更多 0-9,后面緊隨另一個(gè)斜號(hào)$regExpression .= ”([0-9]+)/“;// 再次對(duì)應(yīng)一個(gè)或更多 0-9$regExpression .= ”([0-9]+)“;至于 2/1/3 則是用來(lái)對(duì)應(yīng)括號(hào),第一個(gè)括號(hào)對(duì)的是月份,第二個(gè)括號(hào)對(duì)應(yīng)的是日期,第三個(gè)括號(hào)對(duì)應(yīng)的是年份。
17.給你一行文字 $string,你會(huì)如何編寫(xiě)一個(gè)正規(guī)表達(dá)式,把 $string 內(nèi)的 HTML 標(biāo)簽除去?
首先,PHP 有內(nèi)建函式 strip_tags() 除去 HTML 標(biāo)簽,為何要自行編寫(xiě)正規(guī)表達(dá)式?好了,便當(dāng)作是面試的一道考題吧,我會(huì)這樣回答:
$stringOfText = ”
This is a test
“;$expression = ”/<(.__?)>(.__?)/“;echo preg_replace($expression, ”2“, $stringOfText);// 有人說(shuō)也可以使用 /(<[^>]__>)/ $expression = ”/(<[^>]__>)/“;echo preg_replace($expression, ”“, $stringOfText);
18.PHP 和 Perl 分辨陣列和散列表的方法有什么差異?
這正是為何我老是告訴別人選擇適當(dāng)?shù)木幊陶Z(yǔ)言,若果你只用一種語(yǔ)言的話你怎么能回答這道問(wèn)題?這道問(wèn)題很簡(jiǎn)單,Perl 所有陣列變量都是以 @ 開(kāi)頭,例如 @myArray,PHP 則沿用 $ 作為所有變量的開(kāi)頭,例如 $myArray。
至于 Perl 表示散列表則用 %,例如 %myHash,PHP 則沒(méi)有分別,仍是使用 $,例如 $myHash。
19.你如何利用 PHP 解決 HTTP 的無(wú)狀態(tài)本質(zhì)?
最主要的倆各選擇是 session 和 cookie。使用 session 的方法是在每一頁(yè)的開(kāi)始加上 session_start(),然后利用 $_SESSION 散列表來(lái)儲(chǔ)存 session 變量。至于 cookie 你只需記著一個(gè)原則:在輸出任何文字之前調(diào)用 set_cookie() 函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 變量。
還有一個(gè)不那么可靠的方法,就是利用訪客的 IP 地址,這個(gè)方法有特定的危險(xiǎn)性。
20.GD 函式庫(kù)用來(lái)做什么?
這個(gè)可能是我最喜歡的函式庫(kù),自從 PHP 4.3.0 版本后 GD 便內(nèi)建在 PHP 系統(tǒng)中。這個(gè)函式庫(kù)讓你處理和顯示各式格式的圖檔,它的另一個(gè)常見(jiàn)用途是制作所圖檔。GD 以外的另一個(gè)選擇是 ImageMagick,但這個(gè)函式庫(kù)并不內(nèi)建于 PHP 之中,必須由系統(tǒng)管理員安裝在伺服器上。
21.試寫(xiě)出幾個(gè)輸出一段 HTML 代碼的方法。
嗯,你可以使用 PHP 中任何一種輸出語(yǔ)句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo ”My string $variable“;你也可以使用這種方法:
echo <<<endthis text="" is="" written="" to="" the="" screen="" as="" output="" and="" this="" $variable="" parsed="" too.="" if="" you="" wanted="" can="" have="" html="" tags="" in="" here="" well.="" end;="" remarks="" must="" be="" a="" line="" of="" its="" own,="" can't="" contain="" any="" extra="" white="" space.end;
22.PHP 比 Perl 好嗎?請(qǐng)討論。
我們不要為一個(gè)簡(jiǎn)單的問(wèn)題引發(fā)一場(chǎng)舌戰(zhàn),正如我經(jīng)常說(shuō)的:“為工作選擇適合的語(yǔ)言,不要把工作遷就語(yǔ)言。”我個(gè)人認(rèn)為 Perl 十分適合用作命令行工具,雖然它在網(wǎng)頁(yè)應(yīng)用上也有不錯(cuò)的表現(xiàn),但是它的真正實(shí)力在命令行上才能充分發(fā)揮。同樣地,PHP 雖然可以在控制臺(tái)的環(huán)境中使用,但是個(gè)人認(rèn)為它在網(wǎng)頁(yè)應(yīng)用上有更好的表現(xiàn),PHP 有大量專門(mén)為網(wǎng)頁(yè)應(yīng)用而設(shè)計(jì)的函式,Perl 則似乎以命令行為設(shè)計(jì)之本。
個(gè)人來(lái)說(shuō)兩種語(yǔ)言我都喜歡,在大學(xué)期間我經(jīng)常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,但在家里我花不少時(shí)間操練 PHP、Perl、Ruby(現(xiàn)正學(xué)習(xí))和 Java,保持我的技能知識(shí)在最新?tīng)顟B(tài)。很多人問(wèn)我 C 和 C++ 怎么樣,它們是否仍有機(jī)會(huì)在我的應(yīng)用中占一席位,我的答案基本上是“否”,我近來(lái)的工作主要集中在網(wǎng)頁(yè)開(kāi)發(fā),雖然 C 和 C++ 也可以用來(lái)寫(xiě)網(wǎng)頁(yè),但它們到底不是為這種工作而設(shè)計(jì)的,“為工作選擇適合的語(yǔ)言”,若果我需要編寫(xiě)一個(gè)控制臺(tái)應(yīng)用,用來(lái)展示 bubble sort、quick sort 和 merge sort 的效能比較,我一定會(huì)使用 C / C++。若果我需要編寫(xiě)一個(gè)相片簿系統(tǒng),我會(huì)使用 PHP 或者 C#(我認(rèn)為制作用戶介面方面 .NET 語(yǔ)言比網(wǎng)頁(yè)更加)。
更多相關(guān)的面試問(wèn)題文章推薦,大家敬請(qǐng)繼續(xù)閱讀:微軟常見(jiàn)面試問(wèn)題 國(guó)企面試常見(jiàn)問(wèn)題及答案 外資銀行面試問(wèn)題集錦
2023php面試題(篇2)
PHP面試題附答案
1. Which of the following will not add john to the users array?
1. $users[] = ‘john’;
2. array_add($users,’john’);
3. array_push($users,’john’);
4. $users ||= ‘john’;
Answer: 2,4
2. What’s the difference between sort, asort() and ksort(),rsort()? Under what circumstances would you use each of these?
sort(): 本函數(shù)對(duì)數(shù)組的值進(jìn)行排序,當(dāng)本函數(shù)結(jié)束時(shí)數(shù)組單元將被從最低到最高重新安排,array 中的單元賦予新的鍵名。這將刪除原有的鍵名而不僅是重新排序。
asort(): 這個(gè)函數(shù)將數(shù)組的值重新排序,由小至大排列。數(shù)組的索引亦跟著值的 順序而變動(dòng)。當(dāng)您在程序中需要重新整理數(shù)組值的 順序時(shí),就可以使用這個(gè)函數(shù)。
ksort(): 對(duì)數(shù)組按照鍵名排序,保留鍵名到數(shù)據(jù)的關(guān)聯(lián)。本函數(shù)主要用于關(guān)聯(lián)數(shù)組。
rsort(): 本函數(shù)對(duì)數(shù)組進(jìn)行逆向排序(最高到最低)。與sort()執(zhí)行相反的操作。
3. What would the following code print to the browser? Why?
$num = 10;
function multiply(){
$num = $num __ 10;
}
multiply();
echo $num;
10
4. What is the difference between a reference and a regular variable? How do you pass by reference & why would you want to?
pass by reference like this functions(&$vars);
it likes more fast;
5. What functions can you use to add library code to the currently running script?
inlcude() or require();
6. What is the difference between foo() & @foo()?
if foo() throw a error, will be alert, but @foo() no;
7. How do you debug a PHP application?
xdebug or use die() do it;
8. What does === do? What’s an example of something that will give true for ‘==’, but not ‘===’?
=== 用于精確比較 ex: (” == null) => true but ( ”===null) =>false;
9. How would you declare a class named “myclass” with no methods or properties?
class myclass{
}
10. How would you create an object, which is an instance of “myclass”?
$myoject = new myclass();
11. How do you access and set properties of a class from within the class?
getVar() or setVar() ;
12. What is the difference between include & include_once? include & require?
require:PHP 程式在執(zhí)行前,就會(huì)先讀入 require 所指定引入的檔案,使它變成 PHP 程式網(wǎng)頁(yè)的.一部份,
常用的函式,亦可以這個(gè)方法將它引入網(wǎng)頁(yè)中。錯(cuò)誤產(chǎn)生致命錯(cuò)誤。
include:這個(gè)函式一般是放在流程控制的處理區(qū)段中。PHP 程式網(wǎng)頁(yè)在讀到 include 的檔案時(shí),才將它讀進(jìn)來(lái)。這種方式,可以把程式執(zhí)行時(shí)的流程簡(jiǎn)單化。錯(cuò)誤產(chǎn)生警報(bào)。
include_once:此行為和include()語(yǔ)句類似,唯一區(qū)別是如果該文件中的代碼已經(jīng)被包含了,則不會(huì)再次包含。如同此語(yǔ)句名字暗示的那樣,只會(huì)包含一次。
13. What function would you use to redirect the browser to a new page?
1. redir()
2023php面試題(篇3)
1. 禁用COOKIE 后 SEESION 還能用嗎?
2. 抓取遠(yuǎn)程圖片到本地,你會(huì)用什么函數(shù)?
4. 你覺(jué)得在pV10W的時(shí)候, 同等配置下,LUNIX 比WIN快多少?
5. 簡(jiǎn)述pOST 和GET傳輸?shù)淖畲笕萘糠謩e是多少?
6. 用最少的代碼寫(xiě)一個(gè)求3值最大值的函數(shù).
以下是部分答案(不保證是正確的解)
1. 不能
2 fsockopen
4 (不做優(yōu)化的情況下一樣)
5 2MB,1024B
6 function($a,$b,$c){
return $a>$b? ($a>$c? $a : $c) : ($b>$c? $b : $c );
}
―――――――――――――――――――――――――――C
大公司的pHp面試題
2. 求兩個(gè)日期的差數(shù),例如-2-5 ~ 2007-3-6 的日期差數(shù)
$begin=strtotime(‘2007-2-5′);
$end=strtotime(‘2007-3-6′);
echo ($end-$begin)/(24__3600);
3. 請(qǐng)寫(xiě)一個(gè)函數(shù),實(shí)現(xiàn)以下功能:
字符串“open_door” 轉(zhuǎn)換成 “OpenDoor”、”make_by_id” 轉(zhuǎn)換成 ”MakeById”。
function str_change($str) {
$str = str_replace ( “_”, ” “, $str );
$str = ucwords ( $str );
$str = str_replace ( ” “, “”, $str );
return $str; }
4. 要求寫(xiě)一段程序,實(shí)現(xiàn)以下數(shù)組$arr1轉(zhuǎn)換成數(shù)組$arr2:
$arr1 = array (
‘0′ => array (‘fid’ => 1, ‘tid’ => 1, ‘name’ =>’Name1′ ),
‘1′ => array (‘fid’ => 1, ‘tid’ => 2 , ‘name’ =>’Name2′ ),
‘2′ => array (‘fid’ => 1, ‘tid’ => 5 , ‘name’ =>’Name3′ ),
‘3′ => array (‘fid’ => 1, ‘tid’ => 7 , ‘name’ =>’Name4′ ),
‘4′ => array (‘fid’ => 3, ‘tid’ => 9, ‘name’ =>’Name5′ )
);
$arr2 = array (
‘0′ => array (
‘0′ => array ( ‘tid’ => 1, ‘name’ => ‘Name1′),
‘1′ => array ( ‘tid’ => 2, ‘name’ => ‘Name2′),
‘2′ => array ( ‘tid’ => 5, ‘name’ => ‘Name3′),
‘
2023php面試題(篇4)
php工程師面試題及答案
【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類似,它支持存儲(chǔ)的value類型相對(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ù)邏輯層。
視圖,即前端,圖形界面。展示給用戶看的。
控制器,主要負(fù)責(zé)對(duì)請(qǐng)求處理、轉(zhuǎn)發(fā)和加載視圖。
設(shè)計(jì)模式,說(shuō)白了就是代碼的設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)和歸類,設(shè)計(jì)模式最早應(yīng)用于建筑行業(yè),編程的設(shè)計(jì)模式按最早的GoF所述,包括23種設(shè)計(jì)模式,主要用于面向?qū)ο蟮某绦蚓幊?。遵循幾個(gè)設(shè)計(jì)原則:開(kāi)閉原則、單一職責(zé)原則、里氏替換原則、依賴注入、接口分離、迪米特原則、優(yōu)先使用組合而不是繼承等等。包括創(chuàng)建型模式、結(jié)構(gòu)性模式、行為模式三類。
【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),靈活(可以傳輸任何類型的數(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 03:17:33 GMT
Server: Apache/2.0.54 (Unix)
Last—Nodified:Mon,22 Jun 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
(額外的回車符和換行符)
該請(qǐng)求消息的第一行稱為請(qǐng)求行 (request line),后續(xù)各行都稱為頭部行(header)。請(qǐng)求行有3個(gè)字段:方法字段、URL字段、HTTP版本字段。
[狀態(tài)碼]參見(jiàn)www.cnblogs.com/TankXiao/archive//01/08/2818542.html
1__ 消息
2__ 成功
3__ 重定向
4__ 請(qǐng)求錯(cuò)誤
5__ 服務(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??蛻舻木彺尜Y源是最新的, 要客戶端使用緩存。
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類似, 但是響應(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í)就是把用戶通過(guò)瀏覽器請(qǐng)求的URL,到了后臺(tái),apache根據(jù)預(yù)先配置的重寫(xiě)規(guī)則將該請(qǐng)求指向真正的資源路徑,說(shuō)白了就是打馬虎眼,把真正的路徑改頭換面后給用戶訪問(wèn),可問(wèn)題是這樣做有啥用處呢。
1、SEO方面。將動(dòng)態(tài)的URL靜態(tài)化,以滿足搜索引擎的胃口。
2、訪問(wèn)控制。比如,通過(guò)重寫(xiě)規(guī)則后,客戶端不易判斷后臺(tái)程序類型等。
3、URL重定向。當(dāng)網(wǎng)站更改域名或增加別名URL后,可以通過(guò)規(guī)則輕松的指向要訪問(wèn)的'URL。
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ě)類似,一般包括通配符和正則兩種規(guī)則。讓用戶可以重新定向(remap)URI處理程序. 設(shè)定你自己的路由規(guī)則。
【5】MySQL的索引機(jī)制,復(fù)合索引的使用原則
(深入淺出MySQL一書(shū)中對(duì)索引的使用講的比較細(xì)致)
一般都會(huì)用書(shū)本中的目錄來(lái)介紹索引機(jī)制,包括有些書(shū)本會(huì)有專門(mén)的快速檢索附錄,就很類似于數(shù)據(jù)庫(kù)的索引。
MySQL的索引包括4類:主鍵索引(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ò)子類對(duì)已經(jīng)存在的父類進(jìn)行功能擴(kuò)展。
封裝性,要求外部不能隨意存取對(duì)象的內(nèi)部數(shù)據(jù),即對(duì)該類中的具體實(shí)現(xiàn)做封裝,用戶不必知道內(nèi)部的具體實(shí)現(xiàn),只有知道它是干什么的,怎么用就好了。
多態(tài)性,就是類的抽象和接口,同一個(gè)類能夠處理多種類型對(duì)象的能力。
我們?cè)诂F(xiàn)實(shí)中,看到的任何東東都可以看做為一個(gè)對(duì)象,然后通過(guò)進(jìn)一步的抽象為類,類又可以演變?yōu)楹芏囝愃频膶?duì)象。舉個(gè)簡(jiǎn)單的例子,將我們看到的一個(gè)房子抽象為一個(gè)ROOM類,包括基本的門(mén),窗,桌子等物件,人可以進(jìn)出等功能。 現(xiàn)在我們繼承ROOM類為Classroom,包括扇門(mén),有大窗,有桌椅,另外只包括一個(gè)黑白和一個(gè)講臺(tái),老師和同學(xué)可以上課。現(xiàn)在我們實(shí)例化這個(gè)Classroom類為Classroom_621對(duì)象,包括兩扇門(mén),四扇大窗,30套桌椅,有同學(xué)正在上毛概課。
2023php面試題(篇5)
1、談對(duì)mvc的認(rèn)識(shí)?
答:由模型(Model),視圖(View),控制器(Controller)完成的應(yīng)用程序
由模型發(fā)出要實(shí)現(xiàn)的功能到控制器,控制器接收組織功能傳遞給視圖;
2、寫(xiě)出發(fā)貼數(shù)最多的十個(gè)人名字的SQL,利用下表:members(id,username,posts,pass,email)
答:SELECT __ FROM `members` ORDER BY posts DESC limit 0,10;
3、GD庫(kù)是做什么用的?
答:gd庫(kù)提供了一系列用來(lái)處理圖片的功能,使用GD庫(kù)可以處理圖片,或者生成圖片。
在網(wǎng)站上GD庫(kù)通常用來(lái)生成縮略圖或者用來(lái)對(duì)圖片加水印或者對(duì)網(wǎng)站數(shù)據(jù)生成報(bào)表。
4、請(qǐng)寫(xiě)出數(shù)據(jù)類型(int char varchar datetime text)的意思; 請(qǐng)問(wèn)varchar和char有什么別?
答:int是數(shù)字類型,char固定長(zhǎng)度字符串,varchar實(shí)際長(zhǎng)度字符串,datetime日期時(shí)間型,text文本字符串
char的場(chǎng)地固定為創(chuàng)建表設(shè)置的長(zhǎng)度,varchar為可變長(zhǎng)度的字符
5、以下程序的輸出結(jié)果?
$b=201;
$c=40;
$a=$b>$c?4:5;
echo $a;
?>
答:4
6、檢測(cè)一個(gè)變量是否有設(shè)置的函數(shù)是?是否為空的函數(shù)是?
答:isset($str),empty($str);
7、得查詢結(jié)果集總數(shù)的函數(shù)是?
答:mysql_num_rows($result);
8、$arr = array(‘james’, ‘tom’, ‘symfony’); 請(qǐng)打印出第一個(gè)元素的值?
答:echo $arr[0];
9、===”是什么?試舉一個(gè)“==”是真但“===”是假的例子。
“===”是既可以返回布爾值“假”,也可以返回一個(gè)不是布爾值但卻可以賦與“假”值的函式,strpos 和 strrpos() 便是其中兩個(gè)例子。
if (strpos(“abc”, “a”) == true){ // 這部分永不會(huì)被執(zhí)行,因?yàn)?“a” 的位置是 0,換算成布爾值“假”}if (strpos(“abc”, “a”) === true){ // 這部份會(huì)被執(zhí)行,因?yàn)椤?==”保證函式 strpos() 的送回值不會(huì)換算成布爾值.}
10、以下程序的輸出結(jié)果
$str=“cd”;
$$str=“hotdog”;
$$str.=“ok”;
echo $cd;
?>
答案:hotdogok
11、給你三個(gè)數(shù),寫(xiě)程序求出其最大值。
$var1=1;
$var2=7;
$var3=8;
$max=$var1>$var2?$var1:$var2;
$max=$max>$var3?$max:$var3;
echo $max;
12、將一個(gè)選擇2號(hào)選項(xiàng)的ip為127.0.0.1的用戶在當(dāng)前時(shí)間的投票記錄到數(shù)據(jù)庫(kù)的SQL
答:insert into poll (ip,time,iid) values('127.0.0.1',now(),2);
13、個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確 ?
答:function checkEmail($email)
{
$pregEmail = “/([a-z0-9]__[-_.]?[a-z0-9]+)__@([a-z0-9]__[-_]?[a-z0-9]+)+[.][a-z]{2,3}([.][a-z]{2})?/i”;
return preg_match($pregEmail,$email);
}
14、表 menu(mainmenu,submenu,url),請(qǐng)用遞歸法寫(xiě)出一樹(shù)形菜單,將所有的menu列出來(lái)
function GenerateMenu($id=0,$str=“”)
{
$result=mysql_query(“select mainmenu,url,submenu from menu where mainmenu=$id”);
while($row=mysql_fetch_array($result))
{
echo $str.$row[“url”].“
”;
GenerateMenu($row[“submenu”],$str.“--”);
}
mysql_free_result($result);
}
$link=mysql_connect(“l(fā)ocalhost”,“root”,“”);
mysql_select_db(“phpinterview”);
GenerateMenu();
mysql_close($link)
?>
15、PHP可以和sql server/oracle等數(shù)據(jù)庫(kù)連接嗎?
答:可以
16、寫(xiě)出PHP5權(quán)限控制修飾符?
答:public(公共),private(私用),protected(繼承)
17、請(qǐng)寫(xiě)出php5的構(gòu)造函數(shù)和析構(gòu)函數(shù)?
答: 構(gòu)造函數(shù):官方稱自定義函數(shù)
析構(gòu)函數(shù):垃圾回收函數(shù)(__destruct)
18、表單中 get與post提交方法的區(qū)別?
答:get是發(fā)送請(qǐng)求HTTP協(xié)議通過(guò)url參數(shù)傳遞進(jìn)行接收,而post是實(shí)體數(shù)據(jù),可以通過(guò)表單提交大量信息.
19、session與cookie的區(qū)別?
答:session:儲(chǔ)存用戶訪問(wèn)的全局唯一變量,存儲(chǔ)在服務(wù)器上的php指定的目錄中的(session_dir)的位置進(jìn)行的存放
cookie:用來(lái)存儲(chǔ)連續(xù)L一個(gè)面時(shí)所使用,是存儲(chǔ)在客戶端,對(duì)于Cookie來(lái)說(shuō)是存儲(chǔ)在用戶WIN的Temp目錄中的。
兩者都可通過(guò)時(shí)間來(lái)設(shè)置時(shí)間長(zhǎng)短
20、用PHP打印出前一天的時(shí)間格式是-7-3 12:28:21?
答:echo date(‘Y-m-d H:i:s’, strtotime(‘-1 days’));
21、e2ho(),print(),print_r()的區(qū)別?
答:echo是PHP語(yǔ)句, print和print_r是函數(shù),語(yǔ)句沒(méi)有返回值,函數(shù)可以有返回值(即便沒(méi)有用)
print() 只能打印出簡(jiǎn)單類型變量的值(如int,string)
print_r() 可以打印出復(fù)雜類型變量的值(如數(shù)組,對(duì)象)
echo 輸出一個(gè)或者多個(gè)字符串
22、能夠使HTML和PHP分離開(kāi)使用的模板?
答:Smarty, TinyButStrong,XTemplate, Savant,Template Lite, Dwoo, phemplate
23、哪些工具進(jìn)行版本控制?
答:cvs,svn,vss;
24、如何實(shí)現(xiàn)字符串翻轉(zhuǎn)?
答:echo strrev($a); //strrev ― 顛倒字符串
25、優(yōu)化查詢語(yǔ)句?
a.最好在相同字段進(jìn)行比較操作,在建立好的索引字段上盡量減少函數(shù)操作
例子1:
SELECT __ FROM order WHERE YEAR(orderDate)<;(慢)
SELECT __ FROM order WHERE orderDate<“2008-01-01”;(快)
例子2:
SELECT __ FROM order WHERE addtime/7<24;(慢)
SELECT __ FROM order WHERE addtime<24__7;(快)
例子3:
SELECT __ FROM order WHERE title like “%good%”;
SELECT __ FROM order WHERE title>=”good” and name<“good”;
26、對(duì)于大流量的網(wǎng)站,您采用什么樣的方法來(lái)解決訪問(wèn)量問(wèn)題?
答:確認(rèn)服務(wù)器硬件是否足夠支持當(dāng)前的流量,數(shù)據(jù)庫(kù)讀寫(xiě)分離,優(yōu)化數(shù)據(jù)表,
程序功能規(guī)則,禁止外部的盜鏈,控制大文件的下載,使用不同主機(jī)分流主要流量
27、如何修改SESSION的生存時(shí)間?.
答:方法1:將php.ini中的session.gc_maxlifetime設(shè)置為9999重啟apache
方法2:$savePath = “./session_save_dir/”;
$lifeTime = 小時(shí) __ 秒;
session_save_path($savePath);
session_set_cookie_params($lifeTime);
session_start();
方法3:setcookie() and session_set_cookie_params($lifeTime);
28、有一個(gè)網(wǎng)頁(yè)地址, 比如PHP開(kāi)發(fā)資源網(wǎng)主頁(yè): www.php100.com/,如何得到它的內(nèi)容?
答:方法1(對(duì)于PHP5及更高版本):
$readcontents = fopen(“www.php100.com/”, “rb”);
$contents = stream_get_contents($readcontents);// stream_get_contents 取得字符串賦值給$contents
fclose($readcontents);
echo $contents;
方法2:
echo file_get_contents(“www.php100.com/”);
// file_get_contents() 函數(shù)把整個(gè)文件讀入一個(gè)字符串中。
29、在HTTP 1.0中,狀態(tài)碼401的含義是(?);如果返回“找不到文件”的提示,則可用 header 函數(shù),其語(yǔ)句為?
答:狀態(tài)401代表未被授權(quán),header(“Location:www.__.php”);
30、在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須?
答:heredoc的語(yǔ)法是用”<<<“加上自己定義成對(duì)的標(biāo)簽,在標(biāo)簽范圍鵲奈淖質(zhì)游一個(gè)字串
例子:
$str = <<
my name is Jiang Qihui!
SHOW;
31、foo()和@foo()之間有什么區(qū)別?
答:@foo()控制錯(cuò)誤輸出
32、如何聲明一個(gè)名為”myclass”的沒(méi)有方法和屬性的類?
答:class myclass{ }
33、如何實(shí)例化一個(gè)名為”myclass”的對(duì)象?
答:new myclass()
34、你如何訪問(wèn)和設(shè)置一個(gè)類的屬性?
答:$object = new myclass();
$newstr = $object->test;
$object->test = “info”;
35、mysql_fetch_row() 和mysql_fetch_array之間有什么區(qū)別?
答:mysql_fetch_row是從結(jié)果集取出1行數(shù)組,作為枚舉
mysql_fetch_array是從結(jié)果集取出一行數(shù)組作為關(guān)聯(lián)數(shù)組,或數(shù)字?jǐn)?shù)組,兩者兼得
36、下面哪個(gè)函數(shù)可以打開(kāi)一個(gè)文件,以對(duì)文件進(jìn)行讀和寫(xiě)操作?
(a) fget() (b) file_open() (c) fopen() (d) open_file()
答:c
37、下面的程序會(huì)輸入是否?
$num = 10;
function multiply(){
$num = $num __ 10;
}
multiply();
echo $num;
?>
否,局部變量
38、JS表單彈出對(duì)話框函數(shù)是?獲得輸入焦點(diǎn)函數(shù)是?
答:彈出對(duì)話框: alert(),prompt(),confirm()
獲得輸入焦點(diǎn) focus()
39、JS的轉(zhuǎn)向函數(shù)是?怎么引入一個(gè)外部JS文件?
答:window.location.href;
40、$a = ‘a(chǎn)bcdef’; 請(qǐng)取出$a的值并打印出第一個(gè)字母?
答:echo $a{0} 或 echo substr($a,0,1)
41、如何使用下面的類,并解釋下面什么意思?
class test{
function Get_test($num){
$num=md5(md5($num).”En”);
return $num;
} }
雙重md5加密
$testObject = new test();
$encryption = $testObject->Get_test(“xiaotian_ls”);
42、請(qǐng)舉例說(shuō)明在你的開(kāi)發(fā)過(guò)程中用什么方法來(lái)加快頁(yè)面的加載速
答:要用到服務(wù)器資源時(shí)才打開(kāi),及時(shí)關(guān)閉服務(wù)器資源,數(shù)據(jù)庫(kù)添加索引,頁(yè)面可生成靜態(tài),圖片等大文件單獨(dú)服務(wù)器。使用代碼優(yōu)化工具啦
43、寫(xiě)出一個(gè)正則表達(dá)式,過(guò)慮網(wǎng)頁(yè)上的所有JS/VBS腳本(即把script標(biāo)記及其內(nèi)容都去掉):
$script=”以下內(nèi)容不顯示:alert(‘cc’);“;
echo preg_replace(”/].__?>.__?/si“, ”替換內(nèi)容“, $script);
?>
44、以Apache模塊的方式安裝PHP,在文件http.conf中首先要用語(yǔ)句____動(dòng)態(tài)裝載PHP模塊,然后再用語(yǔ)句____使得Apache把所有擴(kuò)展名為php的文件都作為PHP腳本處理。
答:LoadModule
php5_module
”c:/php/php5apache2.dll“;AddType application/x-httpd-php .php
45、sort()、asort()、和 ksort() 有什么分別?它們分別在什么情況下使用?
sort()
根據(jù)陣列中元素的值,以英文字母順序排序,索引鍵會(huì)由 0 到 n-1 重新編號(hào)。主要是當(dāng)陣列索引鍵的值無(wú)關(guān)疼癢時(shí)用來(lái)把陣列排序。
asort()
與 sort() 一樣把陣列的元素按英文字母順序來(lái)排列,不同的是所有索引鍵都獲得保留,特別適合替聯(lián)想陣列排序。
ksort()
根據(jù)陣列中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的聯(lián)想陣列。
46、用PHP寫(xiě)出顯示客戶端IP與服務(wù)器IP的代碼?
答:打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');//getenv取得開(kāi)發(fā)環(huán)境變量
打印服務(wù)器IP:echo gethostbyname(”www.bolaiwu.com“) // gethostbyname取得IP地址函數(shù)
47、語(yǔ)句include和require的區(qū)別是什么?為避免多次包含同一文件,可用(?)語(yǔ)句代替它們?
答:require->require是無(wú)條件包含也就是如果一個(gè)流程里加入require,無(wú)論條件成立與否都會(huì)先執(zhí)行require
include->include有返回值,而require沒(méi)有(可能因?yàn)槿绱藃equire的速度比include快)
注意:包含文件不存在或者語(yǔ)法錯(cuò)誤的時(shí)候require是致命的,include不是
48、PHP的意思?
答:PHP是一個(gè)基于服務(wù)端來(lái)創(chuàng)建動(dòng)態(tài)網(wǎng)站的腳本語(yǔ)言,您可以用PHP和HTML生成網(wǎng)站主頁(yè)
49、談?wù)刟sp,php,jsp的優(yōu)缺點(diǎn)?
答:ASP全名Active Server Pages,是一個(gè)WEB服務(wù)器端的開(kāi)發(fā)環(huán)境, 利用它可以產(chǎn)生和運(yùn)行動(dòng)態(tài)的、交互的、高性能的WEB服務(wù)應(yīng)用程序。ASP采用腳本語(yǔ)言VB Script(Java script)作為自己的開(kāi)發(fā)語(yǔ)言。
PHP是一種跨平臺(tái)的服務(wù)器端的嵌入式腳本語(yǔ)言. 它大量地借用C,Java和Perl語(yǔ)言的語(yǔ)法, 并耦合PHP自己的特性,使WEB開(kāi)發(fā)者能夠快速地寫(xiě)出動(dòng)態(tài)生成頁(yè)面.它支持目前絕大多數(shù)數(shù)據(jù)庫(kù)。還有一點(diǎn),PHP是完全免費(fèi)的,不用花錢(qián),你可以從PHP官方站點(diǎn)(www.php.net)自由下載。而且你可以不受限制地獲得源碼,甚至可以從中加進(jìn)你自己需要的特色。
JSP 是Sun公司推出的新一代站點(diǎn)開(kāi)發(fā)語(yǔ)言,他完全解決了目前ASP,PHP的一個(gè)通病--腳本級(jí)執(zhí)行(據(jù)說(shuō)PHP4 也已經(jīng)在Zend 的支持下,實(shí)現(xiàn)編譯運(yùn)行).Sun 公司借助自己在Java 上的不凡造詣,將Java 從Java 應(yīng)用程序 和 Java Applet 之外,又有新的碩果,就是Jsp--Java Server Page。Jsp 可以在Serverlet和JavaBean的支持下,完成功能強(qiáng)大的站點(diǎn)程序。
三者都提供在 HTML 代碼中混合某種程序代碼、由語(yǔ)言引擎解釋執(zhí)行程序代碼的能力。但JSP代碼被編譯成 Servlet 并由 Java 虛擬機(jī)解釋執(zhí)行,這種編譯操作僅在對(duì) JSP 頁(yè)面的第一次請(qǐng)求時(shí)發(fā)生。在 ASP 、PHP、JSP 環(huán)境下,HTML 代碼主要負(fù)責(zé)描述信息的顯示樣式,而程序代碼則用來(lái)描述處理邏輯。普通的 HTML 頁(yè)面只依賴于 Web 服務(wù)器,而 ASP 、PHP、JSP 頁(yè)面需要附加的語(yǔ)言引擎分析和執(zhí)行程序代碼。程序代碼的執(zhí)行結(jié)果被重新嵌入到 HTML 代碼中,然后一起發(fā)送給瀏覽器。 ASP 、PHP、 JSP三者都是面向 Web 服務(wù)器的技術(shù),客戶端瀏覽器不需要任何附加的軟件支持。
50、 優(yōu)化MYSQL數(shù)據(jù)庫(kù)的方法
(1).選取最適用的字段屬性,應(yīng)該盡量把字段設(shè)置為NOT NULL,這樣在將來(lái)執(zhí)行查詢的時(shí)候,數(shù)據(jù)庫(kù)不用去比較NULL值。
(2).使用連接(JOIN)來(lái)代替子查詢(Sub-Queries)
(3).盡量少使用 LIKE 關(guān)鍵字和通配符
2023php面試題(篇6)
精選php面試題及答案
一、基礎(chǔ)題
1. 寫(xiě)出如下程序的輸出結(jié)果
$str2 = false;
echo $str1==$str2 ? 相等 : 不相等;
$str3 = ;
$str4 = 0;
echo $str3==$str4 ? 相等 : 不相等;
$str5 = 0;
$str6 = 0;
echo $str5===$str6 ? 相等 : 不相等;?>
2. 寫(xiě)出如下程序的輸出結(jié)果
$a2 = false;
$a3 = 0;
$a4 = ;
$a5 = 0;
$a6 = null;
$a7 = array();
$a8 = array(array());
echo empty($a1) ? true : false;
echo empty($a2) ? true : false;
echo empty($a3) ? true : false;
echo empty($a4) ? true : false;
echo empty($a5) ? true : false;
echo empty($a6) ? true : false;
echo empty($a7) ? true : false;
echo empty($a8) ? true : false;?>
3. 寫(xiě)出如下程序的輸出結(jié)果
$abc = & $test;
unset($test);
echo $abc;?>
4. 寫(xiě)出如下程序的輸出結(jié)果
function get_count(){
static $count = 0;
return $count++;
}
echo $count;
++$count;
echo get_count();
echo get_count();?>
5. 寫(xiě)出如下程序的輸出結(jié)果
$var2 = 1;
function get_value(){
global $var2;
$var1 = 0;
return $var2++;
}
get_value();
echo $var1;
echo $var2;?>
6. 寫(xiě)出如下程序的輸出結(jié)果
unset($arr[0]);
}
$arr1 = array(1, 2);
$arr2 = array(1, 2);
get_arr(&$arr1);
get_arr($arr2);
echo count($arr1);
echo count($arr2);?>
7. 使用五種以上方式獲取一個(gè)文件的擴(kuò)展名
要求:dir/upload.image.jpg,找出 .jpg 或者 jpg ,
必須使用PHP自帶的處理函數(shù)進(jìn)行處理,方法不能明顯重復(fù),可以封裝成函數(shù),比如 get_ext1($file_name), get_ext2($file_name)
二、算法題
1. 使用PHP描述冒泡排序和快速排序算法,對(duì)象可以是一個(gè)數(shù)組
2. 使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對(duì)象可以是一個(gè)有序數(shù)組
3. 寫(xiě)一個(gè)二維數(shù)組排序算法函數(shù),能夠具有通用性,可以調(diào)用php內(nèi)置函數(shù)【答案】
(以下答案不一定是最好的,只是一個(gè)簡(jiǎn)單的參考)
1.常用php面試題及答案
2.php常用面試題及答案
3.PHP面試題匯總
4.優(yōu)秀php高級(jí)工程師面試題及答案
5.百度PHP面試題
6.百度php面試題目
7.騰訊php面試題
8.提問(wèn)得最多的PHP面試題
9.基礎(chǔ)php面試題
10.百度php面試題
2023php面試題(篇7)
1.簡(jiǎn)述兩種屏蔽php程序的notice警告的方法
初始化變量,文件開(kāi)始設(shè)置錯(cuò)誤級(jí)別或者修改php.ini 設(shè)置error_reporting
set_error_handler 和 @抑制錯(cuò)誤
1.在程序中添加:error_reporting (E_ALL & ~E_NOTICE);
2.或者修改php.ini中的:error_reporting = E_ALL
改為:error_reporting = E_ALL & ~E_NOTICE
3.error_reporting(0);或者修改php.inidisplay_errors=Off
2.instanceof的作用, 經(jīng)常在什么設(shè)計(jì)模式中使用
單例模式,但是其他的模式也會(huì)用到
3.1023用二進(jìn)制表示, 并簡(jiǎn)述計(jì)算過(guò)程
10-2
1023%2=1
511%2 =1
255%2 =1
127%2 =1
63%2 =1
31%2 =1
15%2 =1
7%2 =1
3%2 =1
1%2 =1
0 =0
-------------------------------------------
1023
2^9=
511
k=9
10 9 8 7 6 5 4 3 2 1
1 1 1 1 1 1 1 1 1 1
----------------------
1023 1
1023-1/2=511 1
511-1/2=255 1
255-1/2=127 1
127-1/2=63 1
63-1/2=31 1
31-1/2=15 1
15-1/2=7 1
7-1/2=3 1
3-1/2=1 1
-----------------------------------------------
2-10
只需用將二進(jìn)制數(shù)的各個(gè)位上的數(shù)從最右邊開(kāi)始,最右邊的第一個(gè)數(shù)乘以二的零次方,第二個(gè)數(shù)乘以二的一次方,第三個(gè)數(shù)乘以二的二次方,依次類推可得第n個(gè)數(shù)乘以二的(n-1)次方,然后把得到的結(jié)果相加即可
例如:110011=1__2^0+1__2^1+0__2^2+0__2^3+1__2^4+1__2^5=51
這也可以算是一個(gè)公式就是An__2^(n-1) An表示二進(jìn)制數(shù)最右邊開(kāi)始的第n個(gè)數(shù),
將第一項(xiàng)第二項(xiàng)第三項(xiàng)一直到第n項(xiàng)用式子An__2^(n-1) 計(jì)算出來(lái)并加在一起即可
4.有如下數(shù)據(jù)庫(kù), 用原生態(tài)mysql擴(kuò)展去連接并查詢user表的前十行
host: 192.168.0.254
port: 3306
user: one
pass: piece
database: db_user
table: user
$link = mysql_connect(”192.168.0.254:3306“,”one“,”piece“) or die('Could not connect: '.mysql_error);
mysql_select_db('db_user',$link);
$query = mysql_query(”select __ from user limit 10“);
while($rs = mysql_fetch_array($query,MYSQL_ASSOC))
5.符串”r”,”n”,”t”,”x20”分別代表什么?
答案: “r”代表的含義是:
在Linux、unix 中表示返回到當(dāng)行的最開(kāi)始位置,在Mac OS 中表示換行且返回到下一行的最開(kāi)始位置,相當(dāng)于Windows 里的 n 的效果。
“n”代表的含義是:
在Windows 中表示換行且回到下一行的最開(kāi)始位置。相當(dāng)于Mac OS 里的 r 的效果,在linux、unix 中只表示換行,但不會(huì)回到下一行的開(kāi)始位置。
“t”所代表的含義是:
鍵盤(pán)上的“TAB”鍵,跳格(移至下一列)。
“x20”所代表的含義是:是32在ASCII表中16進(jìn)制的表示。
6.語(yǔ)句輸出的結(jié)果是什么?
$a = 3;
echo ”$a“,'$a',”$a“,”${a}“,”$a“.”$a“,”$a“+”$a“;
1
2
1
2
得到的