第一篇:php程序員面試題(a卷 附答案)
1.在PHP中,當(dāng)前腳本的名稱(不包括路徑和查詢字符串)記錄在預(yù)定義變量(1)中;而鏈接到當(dāng)前頁(yè)面的的前一頁(yè)面URL記錄在預(yù)定義變量(2)中
//本頁(yè)地址,SCRIPT_NAME也可以:php/test.php
echo $_SERVER['PHP_SELF'].“
”;
//鏈接到當(dāng)前頁(yè)面的前一頁(yè)面的 URL 地址:
echo $_SERVER['HTTP_REFERER'].“
”;
//其它的見參考手冊(cè):語(yǔ)言參考》變量》預(yù)定義變量
//前執(zhí)行腳本的絕對(duì)路徑名:D:Inetpubwwwrootphp est.php
echo $_SERVER[“SCRIPT_FILENAME”].“
”;
//正在瀏覽當(dāng)前頁(yè)面用戶的 IP 地址:127.0.0.1
echo $_SERVER[“REMOTE_ADDR”].“
”;
//查詢(query)的字符串(URL 中第一個(gè)問號(hào) ? 之后的內(nèi)容):id=1&bi=2
echo $_SERVER[“QUERY_STRING”].“
”;
//當(dāng)前運(yùn)行腳本所在的文檔根目錄:d:inetpubwwwroot
echo $_SERVER[“DOCUMENT_ROOT”].“
”;
?>
2.執(zhí)行程序段將輸出__。
//參考手冊(cè)》語(yǔ)言參考》運(yùn)算符》算術(shù)運(yùn)算符》%為取模運(yùn)算,輸出0
echo 8%(-2).“
”;
//取模 $a % $b 在 $a 為負(fù)值時(shí)的結(jié)果也是負(fù)值。輸出-2
echo((-8)%3).“
”;
//輸出2
echo(8%(-3)).“
”;
?>
3.在HTTP 1.0中,狀態(tài)碼 401 的含義是____;如果返回“找不到文件”的提示,則可用 header 函數(shù),其語(yǔ)句為____。
答:401表示未授權(quán);header(“HTTP/1.0 404 Not Found”);[見參考手冊(cè)》函數(shù)參考》HTTP函數(shù)》header]
4.數(shù)組函數(shù) arsort 的作用是____;語(yǔ)句 error_reporting(2047)的作用是____。
答:arsort:對(duì)數(shù)組進(jìn)行逆向排序并保持索引關(guān)系 error_reporting(2047)的作用是:report All errors and warnings
5.寫出一個(gè)正則表達(dá)式,過慮網(wǎng)頁(yè)上的所有JS/VBS腳本(即把script標(biāo)記及其內(nèi)容都去掉):
$script=“以下內(nèi)容不顯示:”;echo preg_replace(“//si”, “替換內(nèi)容”, $script);?>
6.以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
見參考手冊(cè)》目錄》II.安裝與配置》6.Windows 系統(tǒng)下的安裝》Microsoft Windows 下的 Apache 2.0.x
7.語(yǔ)句 include 和 require 都能把另外一個(gè)文件包含到當(dāng)前文件中,它們的區(qū)別是____;為了避免多次包含同一文件,可以用語(yǔ)句____來代替它們。
答:在如何處理失敗時(shí),include()產(chǎn)生一個(gè)警告而 require()則導(dǎo)致一個(gè)致命錯(cuò)誤;require_once()/include_once()
8.一個(gè)函數(shù)的參數(shù)不能是對(duì)變量的引用,除非在php.ini中把____設(shè)為on.答:allow_call_time_pass_reference boolean :是否啟用在函數(shù)調(diào)用時(shí)強(qiáng)制參數(shù)被按照引用傳遞, 見參考手冊(cè)》附錄G
9.SQL 中LEFT JOIN的含義是__,如果 tbl_user記錄了學(xué)生的姓名(name)和學(xué)號(hào)(ID),tbl_score記錄了學(xué)生(有的學(xué)生考試以后被開除了,沒有其記錄)的學(xué)號(hào)(ID)和考試成績(jī)(score)以及考試科目(subject),要想打印出各個(gè)學(xué)生姓名及對(duì)應(yīng)的的各科總成績(jī),則可以用SQL語(yǔ)句____.答:自然左外連接
create database phpinterview;
use phpinterview
create table tbl_user
(IDintnot null,namevarchar(50)not null,primary key(ID));
create table tbl_score
(IDintnot null,scoredec(6,2)not null,subjectvarchar(20)not null);
insert into tbl_user(ID, name)values(1, 'beimu');
insert into tbl_user(ID, name)values(2, 'aihui');
insert into tbl_score(ID, score, subject)values(1, 90, '語(yǔ)文');
insert into tbl_score(ID, score, subject)values(1, 80, '數(shù)學(xué)');
insert into tbl_score(ID, score, subject)values(2, 86, '數(shù)學(xué)');insert into tbl_score(ID, score, subject)values(2, 96, '語(yǔ)文');select A.id,sum(B.score)as sumscore
from tbl_user A left join tbl_score B
on A.ID=B.ID
group by A.id
10.在PHP中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須____ 答:結(jié)束標(biāo)識(shí)符所在的行不能包含任何其它字符除“;”
11.寫一個(gè)函數(shù),能夠遍歷一個(gè)文件夾下的所有文件和子文件夾。
function my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!=“.” && $file!=“..”)
{
if(is_dir($dir.“/”.$file))
{
$files[$file]=my_scandir($dir.“/”.$file);}
else
{
$files[]=$dir.“/”.$file;
}
}
}
closedir($handle);
return $files;
}
}
}
print_r(my_scandir(“D:Program FilesInternet ExplorerMUI”));?>
第二篇:php程序員面試題(b卷_附答案)
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í)用來把陣列排序。
assort()PHP 沒有 assort()函式,所以可能是 asort()的筆誤。asort()與 sort()一樣把陣列的元素按英文字母順序來排列,不同的是所有索引鍵都獲得保留,特別適合替聯(lián)想陣列排序。
ksort()根據(jù)陣列中索引鍵的值,以英文字母順序排序,特別適合用于希望把索引鍵排序的聯(lián)想陣列。3.以下的代碼會(huì)產(chǎn)生什么?為什么? $num =10;function multiply(){ $num =$num *10;}
multiply();echo $num;由于函式 multiply()沒有指定 $num 為全域變量(例如 global $num 或者 $_GLOBALS['num']),所以 $num 的值是 10。
4.reference 跟一個(gè)正規(guī)的變量有什么分別?如何 pass by reference?在什么情況下我們需要這樣做?
Reference 傳送的是變量的地址而非它的值,所以在函式中改變一個(gè)變量的值時(shí),整個(gè)應(yīng)用都見到這個(gè)變量的新值。
一個(gè)正規(guī)變量傳送給函式的是它的值,當(dāng)函式改變這個(gè)變量的值時(shí),只有這個(gè)函式才見到新值,應(yīng)用的其他部分仍然見到舊值。
$myVariable = “its' value”;Myfunction(&$myVariable);// 以 reference 傳送參數(shù)以 reference 傳送參數(shù)給函式,可以使函式改變了的變量,即使在函式結(jié)束后仍然保留新值。5.些函式可以用來在現(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è)面上顯示出來。@foo()在執(zhí)行這個(gè)函式時(shí),會(huì)隱藏所有上述的錯(cuò)誤訊息。
很多應(yīng)用程式都使用 @mysql_connect()和 @mysql_query 來隱藏 mysql 的錯(cuò)誤訊息,我認(rèn)為這是很嚴(yán)重的失誤,因?yàn)殄e(cuò)誤不該被隱藏,你必須妥善處理它們,可能的話解決它們。7.你如何替 PHP 的應(yīng)用程式偵錯(cuò)?
我并不常這樣做,我曾經(jīng)試過很多不同的偵錯(cuò)工具,在 Linux 系統(tǒng)中設(shè)定這些工具一點(diǎn)也不容易。不過以下我會(huì)介紹一個(gè)近來頗受注目的偵錯(cuò)工具。
PHPAPD,第一步是執(zhí)行以下的指令安裝: pear install apd安裝后在你的腳本的開頭位置加入以下的語(yǔ)句開始進(jìn)行偵錯(cuò): apd_set_pprof_trace();執(zhí)行完畢,打開以下檔案來查閱執(zhí)行日志: apd.dumpdir 你也可以使用 pprofp 來格式化日志。
詳細(xì)的資料可以參閱 http://us.php.net/manual/en/ref.apd.php。8.“===”是什么?試舉一個(gè)“==”是真但“===”是假的例子?!?==”是給既可以送回布爾值“假”,也可以送回一個(gè)不是布爾值但卻可以賦與“假”值的函式,strpos()和 strrpos()便是其中兩個(gè)例子。
問題的第二部份有點(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è)沒有成員函式或特性的類別 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 又如何?
三者都是用來在腳本中插入其他檔案,視乎 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()差不多,它也是用來在腳本中插入其他檔案,但若果檔案不存在,它會(huì)發(fā)出系統(tǒng)警告,這個(gè)警告會(huì)引致致命錯(cuò)誤令腳本中止執(zhí)行 13.以下哪一個(gè)函式可以把瀏覽器轉(zhuǎn)向到另一個(gè)頁(yè)面? redir()
這不是一個(gè) PHP 函式,會(huì)引致執(zhí)行錯(cuò)誤。header()這個(gè)是正確答案,header()用來插入卷頭資料,可以用來使瀏覽器轉(zhuǎn)向到另一個(gè)頁(yè)面,例如: header(“Location: http:// 標(biāo)簽除去? 首先,PHP 有內(nèi)建函式 strip_tags()除去 HTML 標(biāo)簽,為何要自行編寫正規(guī)表達(dá)式?好了,便當(dāng)作是面試的一道考題吧,我會(huì)這樣回答:
$stringOfText = ”
This is a test
“;$expression = ”/<(.*?)>(.*?)(.*?)>/“;echo preg_replace($expression, ”[url=file://2/]2[/url]“, $stringOfText);// 有人說也可以使用 /(<[^>]*>)/ $expression = ”/(<[^>]*>)/“;echo preg_replace($expression, ”“, $stringOfText);18.PHP 和 Perl 分辨陣列和散列表的方法有什么差異? 這正是為何我老是告訴別人選擇適當(dāng)?shù)木幊陶Z(yǔ)言,若果你只用一種語(yǔ)言的話你怎么能回答這道問題?這道問題很簡(jiǎn)單,Perl 所有陣列變量都是以 @ 開頭,例如 @myArray,PHP 則沿用 $ 作為所有變量的開頭,例如 $myArray。至于 Perl 表示散列表則用 %,例如 %myHash,PHP 則沒有分別,仍是使用 $,例如 $myHash。
19.你如何利用 PHP 解決 HTTP 的無(wú)狀態(tài)本質(zhì)?
最主要的倆各選擇是 session 和 cookie。使用 session 的方法是在每一頁(yè)的開始加上 session_start(),然后利用 $_SESSION 散列表來儲(chǔ)存 session 變量。至于 cookie 你只需記著一個(gè)原則:在輸出任何文字之前調(diào)用 set_cookie()函式,此外只需使用 $_COOKIE 散列表便可以存取所有 cookie 變量。
還有一個(gè)不那么可靠的方法,就是利用訪客的 IP 地址,這個(gè)方法有特定的危險(xiǎn)性。20.GD 函式庫(kù)用來做什么?
這個(gè)可能是我最喜歡的函式庫(kù),自從 PHP 4.3.0 版本后 GD 便內(nèi)建在 PHP 系統(tǒng)中。這個(gè)函式庫(kù)讓你處理和顯示各式格式的圖檔,它的另一個(gè)常見用途是制作所圖檔。GD 以外的另一個(gè)選擇是 ImageMagick,但這個(gè)函式庫(kù)并不內(nèi)建于 PHP 之中,必須由系統(tǒng)管理員安裝在伺服器上。
21.試寫出幾個(gè)輸出一段 HTML 代碼的方法。
嗯,你可以使用 PHP 中任何一種輸出語(yǔ)句,包括 echo、print、printf,大部分人都使用如下例的 echo:
echo ”My string $variable";你也可以使用這種方法:
echo <<
我們不要為一個(gè)簡(jiǎn)單的問題引發(fā)一場(chǎng)舌戰(zhàn),正如我經(jīng)常說的:“為工作選擇適合的語(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 有大量專門為網(wǎng)頁(yè)應(yīng)用而設(shè)計(jì)的函式,Perl 則似乎以命令行為設(shè)計(jì)之本。
個(gè)人來說兩種語(yǔ)言我都喜歡,在大學(xué)期間我經(jīng)常使用 Perl、PHP 和 Java,可惜工作上我使用 C#,但在家里我花不少時(shí)間操練 PHP、Perl、Ruby(現(xiàn)正學(xué)習(xí))和 Java,保持我的技能知識(shí)在最新狀態(tài)。很多人問我 C 和 C++ 怎么樣,它們是否仍有機(jī)會(huì)在我的應(yīng)用中占一席位,我的答案基本上是“否”,我近來的工作主要集中在網(wǎng)頁(yè)開發(fā),雖然 C 和 C++ 也可以用來寫網(wǎng)頁(yè),但它們到底不是為這種工作而設(shè)計(jì)的,“為工作選擇適合的語(yǔ)言”,若果我需要編寫一個(gè)控制臺(tái)應(yīng)用,用來展示 bubble sort、quick sort 和 merge sort 的效能比較,我一定會(huì)使用 C / C++。若果我需要編寫一個(gè)相片簿系統(tǒng),我會(huì)使用 PHP 或者 C#(我認(rèn)為制作用戶介面方面.NET 語(yǔ)言比網(wǎng)頁(yè)更加)。
第三篇:php程序員面試題(附答案)
PHP經(jīng)典面試題(連載4).1 請(qǐng)說明 PHP 中傳值與傳引用的區(qū)別。什么時(shí)候傳值什么時(shí)候傳引用?
答: 傳值只是把某一個(gè)變量的值傳給了另一個(gè)變量,而引用則說明兩者指向了同一個(gè)地方。在PHP中error_reporting這個(gè)函數(shù)有什么作用?
答: The error_reporting()function sets the error_reporting directive at runtime.PHP has many levels of errors, using this function sets that level for the duration(runtime)of your script.3 請(qǐng)用正則表達(dá)式(Regular Expression)寫一個(gè)函數(shù)驗(yàn)證電子郵件的格式是否正確。答:
第四篇:PHP程序員面試題
北京融入網(wǎng)絡(luò)科技有限公司
PHP工程師面試題
1、請(qǐng)寫一個(gè)實(shí)現(xiàn)中文字串截取無(wú)亂碼的方法。(超出部分用’…..’替換)。
2、ThinkPHP框架中,下列定義有什么不同?
$userModel = M(“User”);
$userMode l= D(“User”);
3、如果讓你模擬登陸微信公眾平臺(tái)并設(shè)置微信的開發(fā)模式中的URL和Token,你會(huì)如何去做?(思路或代碼皆可)。
4、談?wù)剬?duì)你對(duì)PHP的認(rèn)識(shí)或你擅長(zhǎng)的技術(shù)。
5、假設(shè)有一個(gè)博客系統(tǒng),數(shù)據(jù)庫(kù)存儲(chǔ)采用mysql,用戶數(shù)量為1000萬(wàn),預(yù)計(jì)文章總數(shù)為10億,每天有至少10萬(wàn)的更新量,每天訪問量為5000萬(wàn),對(duì)數(shù)據(jù)庫(kù)的讀寫操作的比例超過10:1,你如何設(shè)計(jì)該系統(tǒng),以確保其系統(tǒng)高效,穩(wěn)定的運(yùn)行?
提示:可以從數(shù)據(jù)庫(kù)設(shè)計(jì),系統(tǒng)框架,及網(wǎng)絡(luò)架構(gòu)方面進(jìn)行描述,可以自由發(fā)揮。
6、你經(jīng)常去那些網(wǎng)站?有沒有自己的博客或git 開源項(xiàng)目。
/ 1
第五篇:PHP程序員面試題
PHP程序員面試題
一、選擇題
1、下列不屬于PHP的開始結(jié)束標(biāo)記的是:()
A、
B、?>
C、<%%>
D、<>
2、下列程序的輸出結(jié)果為()
function test($a){
$a=’456’;
}
$a=’123’;
test($a);
echo $a++;
?>
A、456
B、123
C、124
D、會(huì)報(bào)錯(cuò)
4、下列代碼的輸出結(jié)果為()
function test($i)
{
return++$i+5;
}
echo test(1);
?>
A、6
B、7
C、8
D、空
5、下列代碼的輸出結(jié)果為()
$a=’123’;
$b=&$a;
$a=’789’;
$b=’456’;
echo $a;
?>
A、123
B、456
C、789
D、空
二、簡(jiǎn)答題:
1、試寫一個(gè)PHP腳本對(duì)數(shù)組進(jìn)行排序,要求將數(shù)字?jǐn)?shù)組中所有奇數(shù)放在左邊,0放在中間,偶數(shù)放在右
邊。如數(shù)組:array(23, 94, 0, 2, 56, 10, 77, 231, 75, 48)
2、表uesr,有如下幾個(gè)字段:id,username,userpwd,regtime。
(1)、試寫出查詢?cè)摫硭杏涗浀膕ql語(yǔ)句
(2)、要將id為5的記錄中,username字段的值更新為“小王”,請(qǐng)寫出sql語(yǔ)句
(3)、要?jiǎng)h除id為10的記錄,請(qǐng)寫出sql語(yǔ)句
(4)、現(xiàn)在要新增一條記錄。username的值為:小李;userpwd的值為:123456;regtime的值為:2012-09-01。請(qǐng)寫出sql語(yǔ)句
3、試寫一個(gè)PHP函數(shù)遍歷一個(gè)文件夾【注:只需輸出該目錄的文件和子目錄,無(wú)須對(duì)子目錄再進(jìn)行遍歷】
4、請(qǐng)根據(jù)你的理解設(shè)計(jì)一個(gè)站內(nèi)信系統(tǒng)的數(shù)據(jù)庫(kù),并簡(jiǎn)要說明字段意義和腳本實(shí)現(xiàn)細(xì)節(jié)
5、請(qǐng)使用PHP寫一個(gè)文件上傳腳本,要求只能上傳gif/jpeg圖像,并且圖像大小不能超過1024KB。
三、附加題
試述你對(duì)程序員職業(yè)的理解以及你的工作習(xí)慣和為人處事的態(tài)度?!咎崾荆夯卮鸨绢}時(shí)應(yīng)該實(shí)事求是,盡量向面試官表現(xiàn)真實(shí)的自我】