PHP經(jīng)典面試題集錦
職場(chǎng)PHP經(jīng)典面試題集錦
PHP是一種 HTML 內(nèi)嵌式的語(yǔ)言,是一種在服務(wù)器端執(zhí)行的嵌入HTML文檔的腳本語(yǔ)言,語(yǔ)言的風(fēng)格有類(lèi)似于C語(yǔ)言,被廣泛地運(yùn)用。以下是小編為大家搜索整理的PHP經(jīng)典面試題集錦,希望能給大家?guī)?lái)幫助!
PHP經(jīng)典面試題集錦
1. 求$a的值
復(fù)制代碼代碼如下:
$a = "hello";
$b = &$a;
unset($b);
$b = "world";
echo $a;
2. 求$b的值
復(fù)制代碼代碼如下:
$a = 1;
$x = &$a;
$b = $a++;
echo $b;
3. 寫(xiě)出一個(gè)函數(shù)實(shí)現(xiàn) 刪除指定目錄包括其下的所有子目錄以及文件
4. 寫(xiě)一個(gè)函數(shù),算出兩個(gè)文件的相對(duì)路徑,如:
$a = '/a/b/c/d/e.php';
$b = '/a/b/12/34/c.php';
javascript 基礎(chǔ)知識(shí)部分
1. 談?wù)刯s實(shí)現(xiàn)繼承的幾種方式,并寫(xiě)出demo
2. 談?wù)勀闶煜さ膉s框架,并實(shí)現(xiàn)下面DOM元素的獲取
要求找到drag="true" 并且 index="1" 或 無(wú)index屬性的div
提示: 如果不能一次寫(xiě)出,請(qǐng)完成下來(lái)步驟
1. 找到drag="true" 并且 index="1"
2. 找到drag="true" 并且 無(wú)index屬性的
3. 將二者聯(lián)立起來(lái)得到
3. 實(shí)現(xiàn)一個(gè)遮罩層效果,要求要顯示的元素在頁(yè)面上居中顯示
4. 閉包知識(shí)考察
復(fù)制代碼代碼如下:
function step(a){
return function(x){
return x+a++;
}
}
var a = step(10);
var b = step(20);
alert(a(10));
alert(b(20));
var a="123abc";
alert(typeof(a++));
alert(a);
MySQL 知識(shí)部分
1. 某內(nèi)容管理系統(tǒng)中,表message有如下字段
id 文章id
title 文章標(biāo)題
content 文章內(nèi)容
category_id 文章分類(lèi)id
hits 點(diǎn)擊量
創(chuàng)建上表,寫(xiě)出MySQL語(yǔ)句
2. 同樣上述內(nèi)容管理系統(tǒng):表comment記錄用戶回復(fù)內(nèi)容,字段如下
comment_id 回復(fù)id
id 文章id,關(guān)聯(lián)message表中的id
comment_content 回復(fù)內(nèi)容
現(xiàn)通過(guò)查詢數(shù)據(jù)庫(kù)需要得到以下格式的文章標(biāo)題列表,并按照回復(fù)數(shù)量排序,回復(fù)最高的排在最前面
文章id 文章標(biāo)題 點(diǎn)擊量 回復(fù)數(shù)量
用一個(gè)SQL語(yǔ)句完成上述查詢,如果文章沒(méi)有回復(fù)則回復(fù)數(shù)量顯示為0
3. 上述內(nèi)容管理系統(tǒng),表category保存分類(lèi)信息,字段如下
category_id int(4) not null auto_increment;
categroy_name varchar(40) not null;
用戶輸入文章時(shí),通過(guò)選擇下拉菜單選定文章分類(lèi)
寫(xiě)出如何實(shí)現(xiàn)這個(gè)下拉菜單[可使用PHP,JAVASCRIPT,HTML]
Mysql 知識(shí)擴(kuò)展部分
4. 系統(tǒng)需要對(duì)分類(lèi)表進(jìn)行擴(kuò)展,使它能支持無(wú)限級(jí)別分類(lèi),請(qǐng)?jiān)O(shè)計(jì)這個(gè)表結(jié)構(gòu),并根據(jù)你的設(shè)計(jì)完成下述場(chǎng)景
1. 查找隸屬指定分類(lèi)下的所有文章(包含子分類(lèi)下的所有文章)
2. 查找指定文章的分類(lèi)到根分類(lèi)的層級(jí),比如:
文章"Mysql優(yōu)化心得" 它對(duì)應(yīng)在 "程序設(shè)計(jì)/Mysql/運(yùn)維/" 下
3. 刪除分類(lèi)時(shí)要求也能刪除其下所有子分類(lèi)
5. 系統(tǒng)需要對(duì)文章增加標(biāo)簽功能,(標(biāo)簽與文章是多對(duì)多的關(guān)系),用于實(shí)現(xiàn)"相關(guān)文章"功能.請(qǐng)?jiān)O(shè)計(jì)這個(gè)表結(jié)構(gòu),
并根據(jù)你的設(shè)計(jì)完成下述場(chǎng)景.
1. 查找 與指定文章最相近的五篇文章 (相似度的'算法 以相同標(biāo)簽的數(shù)量作為依據(jù),數(shù)量越大說(shuō)明越相似)
綜合知識(shí)部分:
1. 談?wù)勀銓?duì)Cookie 與 Session 的理解,它們的適用場(chǎng)景是什么,如有可能可闡述下在多種應(yīng)用下Session如何共享的思路
2. 談?wù)勀銓?duì)單點(diǎn)登錄的理解,比如原理與實(shí)現(xiàn),以及實(shí)現(xiàn)過(guò)程中有哪些問(wèn)題需要注意
3. 談?wù)勀銓?duì)MVC的理解,MVC的缺點(diǎn)是什么,如果讓你實(shí)現(xiàn)一個(gè)MVC框架,你想怎樣實(shí)現(xiàn)?
4. 談?wù)勀闫匠9ぷ髦惺褂眠^(guò)的權(quán)限管理部分,你是如何理解與實(shí)現(xiàn)的?
PHP應(yīng)聘面試題
1、
echo -10%3;
?>
答案:-1。
考查:優(yōu)先級(jí)。
因?yàn)?的優(yōu)先級(jí)比%求余的優(yōu)先級(jí)低,也就是-(10%3)。
2、print (int)pow(2,32);
答案:0
3、//file1.php
$a = '123';
?>
//file2.php
echo include('file1.php');
?>
答案:1.
考查:返回值。
因include()也是一個(gè)函數(shù),有返回值。在成功時(shí)返回1,失敗時(shí)返回錯(cuò)誤信息。如果被包含的文件有return,則inculde()成功時(shí)返回該文件的返回值。
4、
$count = 5;
function get_count() {
static $count = 0;
return $count++;
}
++$count;
get_count();
echo get_count();
?>
答案:1.
考查:static和++。
因static $count,所以只在第一次調(diào)用get_count的時(shí)候?qū)?count賦值為0,第二次再進(jìn)來(lái)這個(gè)函數(shù),則不會(huì)第二次賦值。其次就是return $count++和return ++$count了,前者先返回,后者先++再返回。
5、
$arr = array(0 =>1,'aa' => 2,3,4);
foreach($arr as $key => $val){
print($key == 'aa' ? 5 : $val);
}
?>
答案:5534.
考查:類(lèi)型轉(zhuǎn)換。
因遍歷數(shù)組第一次的時(shí)候,$key和aa的比較實(shí)際就是0和aa的比較,一個(gè)是int一個(gè)
PHP語(yǔ)言常用的面試題
一.用PHP打印出前一天的時(shí)間格式是:
YYYY-MM-DD HH:II:SS
echo date(“Y-m-d H:i:s”, time()-24__3600);
二.echo(),print(),print_ r()的區(qū)別:
echo是PHP語(yǔ)句, print和print_ r是函數(shù),語(yǔ)句沒(méi)有返回值,函數(shù)可以有返回值(即便沒(méi)有用)
print( )只能打印出簡(jiǎn)單類(lèi)型變量的值(如int, string)
print_ r( )可以打印出復(fù)雜類(lèi)型變量的值(如數(shù)組,對(duì)象)
三.MYSQL取得當(dāng)前時(shí)間的函數(shù)是?格式化日期的函數(shù)是:
now() DATE_FORMAT(date , format)
select now();
select curdate();
select curtime();
四.對(duì)于大流量的網(wǎng)站,您采用什么樣的方法來(lái)解決訪問(wèn)量問(wèn)題?
可以根據(jù)需要以下方法
1、PHP緩存
2、生成html靜態(tài)頁(yè)面
3、使用主從數(shù)據(jù)庫(kù),把數(shù)據(jù)庫(kù)的讀寫(xiě)分開(kāi)
4、使用負(fù)載均衡器和多臺(tái)服務(wù)器
五.用pHp寫(xiě)出顯示客戶端Ip與服務(wù)器Ip的代碼:
客戶端Ip: echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');
服務(wù)器Ip:
客戶端Ip: echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');
服務(wù)器Ip:
程序代碼
$serverIp=gethostbynamel(webpro01);
echo Server Ip Address:
;
for ($i=0; $i
echo
.$netscapeftp[$i];
}
echo
;
六.語(yǔ)句include和require的區(qū)別是什么?為避免多次包含同一文件,可用(?)語(yǔ)句代替它們?
1、pHp程序執(zhí)行到require()時(shí),只會(huì)讀取一次檔案,故常放在程序開(kāi)頭,檔案引入后pHp會(huì)將網(wǎng)頁(yè)檔重新編譯,讓引入檔成為原先網(wǎng)頁(yè)的一部分。
2、pHp程序執(zhí)行到include()時(shí),每次皆會(huì)讀取檔案,故常用于流程控制的區(qū)段,如條件判斷或循環(huán)中。
3、require() :如果文件不存在,會(huì)報(bào)出一個(gè)fatal error.腳本停止執(zhí)行
4、include() : 如果文件不存在,會(huì)給出一個(gè) warning,但腳本會(huì)繼續(xù)執(zhí)行
5、推薦使用require_once()和include_once(),可以檢測(cè)文件是否有重復(fù)包含。
七.如何修改SESSION的生存時(shí)間.
方法一:
將php.ini 中session.gc_maxlifetime 設(shè)置為 9999(默認(rèn)為 1440)重啟 apache 即可
方法二:
$savepath = .'session_save_dir';
$lifeTime = 24 __ 3600;
session_save_path($savepath);
session_set_cookie_params($lifeTime);
session_start();
方法三:
setcookie() 或session_set_cookie_params($lifeTime) 在pHp中,heredoc是一種特殊的字符串,它的結(jié)束標(biāo)志必須?
八.heredoc的.語(yǔ)法是用<<<加上自己定義成對(duì)的標(biāo)簽,在標(biāo)簽范圍鵲奈淖質(zhì)游一個(gè)字符串
$str = <<
I saw a dog yesterday.
EOD;
需要注意的是:
1、<<<后面的EOD是自己定義的標(biāo)簽名稱(chēng),必須要成對(duì),而且后面要加上分號(hào)表示結(jié)束。
2、結(jié)束的標(biāo)簽前面最好不要有空格,以免發(fā)生錯(cuò)誤
九.在pHp中error_reporting這個(gè)函數(shù)有什么作用?
error_reporting( ) 用于設(shè)置php的偵聽(tīng)錯(cuò)誤的級(jí)別.[用來(lái)配置錯(cuò)誤信息回報(bào)的等級(jí)].
十.檢測(cè)一個(gè)變量是否有設(shè)置的函數(shù)是?是否為空的函數(shù)是?
isset($a)empty($a)
簡(jiǎn)答題:
1. 簡(jiǎn)述Linux下安裝PHP的過(guò)程?
2. 簡(jiǎn)述Linux下安裝Mysql的過(guò)程?
3. 簡(jiǎn)述Linux下安裝apache的過(guò)程?
4. 監(jiān)視一個(gè)日志文件a.log 的最新內(nèi)容?
5. 查看當(dāng)前服務(wù)器的HTTP連接有哪些?
6. 說(shuō)說(shuō)Linux下的find命令和grep命令的區(qū)別?
7. 如何實(shí)現(xiàn)每天0點(diǎn)鐘重新啟動(dòng)服務(wù)器?
8. 請(qǐng)寫(xiě)出5個(gè)常用的unix操作命令?
9. rm -rf __ 是什么意思,其中 f 有什么作用?
10. Linux壓縮文件和解壓文件的命令?
11. Linux的目錄進(jìn)行遍歷,編寫(xiě)shell腳本?
12. apache默認(rèn)使用進(jìn)程管理還是線程管理?如何判斷并設(shè)置最大連接數(shù)?
13. 當(dāng)前目錄下有一個(gè)文件為 showme.sh , 如何修改文件,將其指定為使用 /bin/bash 運(yùn)
行,如何修改其權(quán)限為所有用戶可讀寫(xiě),所有用戶可執(zhí)行?
14. 當(dāng)前目錄下有一個(gè)文件為 showme.sh,如何修改其所有人為root?
15. 在linux 請(qǐng)寫(xiě)出一種自動(dòng)定時(shí)備份某一個(gè)文件的方法和具體實(shí)施流程,要求每天凌晨3點(diǎn)的時(shí)候備份一次。