php面試題及答案
PHP面試者在面試前的準備很重要,以下是陽光網(wǎng)小編幫你們整理的php面試題及答案,一起來學習啦。
php面試題及答案(一)
1. echo count(“abcd”);輸出多少?
int count(mixed var)
返回單元數(shù)目,通常是一個array,任何其他類型都只有一個單元,有一個例外, 如果var是null結果是0
2.
$a=$b=$c=0;
$a=$b && $c;
運行以上代碼后$a $b $c 分別是?
$a=false
$c=0
$b=0
3. PHP打印出前一天的時間,格式是2011-12-29 22:21:21
echo date('Y-m-d H:i:s',strtotime('-1 day'));
strtotime 將任何英文文本的日期時間解析成時間戳
4. 請用php的heredoc語法格式輸出:hello world!
echo <<
hello world!
EOT;
5. $string = "abcdefg",那么$string{4}的值是?
$string{4}=e
因為PHP是弱類型語言,可以將字符串“視為數(shù)組”,當做字符集合看待,字符串中的字符可以在字符串之后用花括號指定所要字符從零開始的偏移量來訪問和修改。
6. 簡述echo(),print(),print_r()的區(qū)別。
echo,print是PHP語言結構, print_r是函數(shù),語言結構沒有返回值,函數(shù)可以有返回值(即便沒有用)
print只能打印出簡單類型變量的值(如int,string)
print_r可以打印出復雜類型變量的值(如數(shù)組,對象)
php面試題及答案(二)
1.用PHP寫出顯示客戶端IP與服務器IP的代碼。
客戶端: $_SERVER[REMOTE_ADDR]
服務器: $_SERVER[SERVER_ADDR]
2、用正則表達式判斷$a是否是一個以半角逗號分隔的多個手機號碼組成的字符串,是輸出yes
$phone = '13725439919,18588421409,18817006902';
$pattern = '/^(1[34568]\d{9},)+(1[34568]\d{9})?$/';
if(preg_match_all($pattern,$phone,$out)){
echo 'yes';
}else{
echo 'no';
}
echo '
';
print_r($out);
3、解釋MVC,介紹幾種目前比較流行的MVC框架
由模型(model),視圖(view),控制器(controller)完成的應用程序
MVC模式的目的就是實現(xiàn)Web系統(tǒng)的功能分工,它強制性地把應用程序的輸入、處理和輸出分開,可以各自處理自己的任務,是一種分層的概念。Model層實現(xiàn)系統(tǒng)中的業(yè)務邏輯,View層用于與用戶的交互,Controller層是Model和View之間溝通的橋梁。
Symfony:是為開發(fā)大型web準備的,學習曲線比較長。
Laravel:簡潔、優(yōu)雅。
php面試題及答案(三)
一、描述一下大流量高并發(fā)網(wǎng)站的解決方案
1) LVS或nginx負載均衡器,通過負載均衡把壓力分擔到多臺服務器.
2) squid緩存或nginx web cache緩存
3) web 服務器選型(nginx代替apache)
4) 頁面靜態(tài)化(smarty或框架),數(shù)據(jù)緩存(memcache Redis)
5) memcache
6) sql語句一定要注意索引使用
7) 主從數(shù)據(jù)庫
8) 分庫分表或分區(qū)
主要從以下幾個方面回答:
1、硬件
1) 垂直拓展:買更好的服務器。一般不建議這么做,因為單個服務器都有上限
2) 水平拓展:多買幾臺服務器,利用負載均衡器(LVS、F5),將壓力分擔到不同服務器上。
2、 數(shù)據(jù)庫
a) 數(shù)據(jù)庫優(yōu)化 : 1、分表和分區(qū) 2、主從數(shù)據(jù)庫
b) 數(shù)據(jù)庫的選型 :可以考慮將apache換成nginx
c) SQl語句優(yōu)化
3、 緩存
a) 數(shù)據(jù)緩存 :使用memcache
B) 頁面靜態(tài)化 :框架的頁面靜態(tài)化、smarty
C) 使用CDN
參考答案:
1、硬件
購買更好的服務器,這種是縱向擴展,但是不太推薦。購買更多的服務器,利用LVS或者F5搭建服務器集群。從而提高整個網(wǎng)站的計算速度。
2、web服務器
由于Apache的并發(fā)處理能力有限,所以可以考慮使用Nginx。
3、數(shù)據(jù)庫
Mysql要結合NoSQL使用,由于單個數(shù)據(jù)庫能力有限,所以要搭建主從數(shù)據(jù)庫。
4、緩存
a) 為了減小數(shù)據(jù)庫的壓力,考慮使用Memcache或Redis做緩存。 b) 把網(wǎng)站的絕大多數(shù)頁面進行頁面靜態(tài)化。(phpcms)
c) 把靜態(tài)資源放到CDN上。
5、禁止外部的盜鏈
6、控制大文件的下載
二、如何防SQL注入
//表單盡量用post提交,核心用戶驗證都走post,避開get
1、 表單盡量用post,表單判斷控制走get,因為get比post速度快
2、 $_SERVER[HTTP_REFERER]判斷提交者的源頭,只能本站提交。
3、 使用addslashes轉(zhuǎn)義用戶提交的數(shù)據(jù)
4、 服務器本身的安全
5、 數(shù)據(jù)庫使用PDO,因為PDO有預處理
三、如何實現(xiàn)多臺web服務器共享session數(shù)據(jù)
1、改變session的域 ,比如域名是www.baidu.com
域就應該是.baidu.com
2、使用數(shù)據(jù)庫或者memcache存儲session數(shù)據(jù)
【php面試題及答案】相關文章:
php面試題及答案201704-05
php高級面試題及答案04-02
2017php面試題及答案04-05
計算機php面試題目及答案12-09
php基礎面試題11-26
2017常見的php面試題04-05
php面試題目201704-05
2017php面試題目04-05
2017php面試題大全04-05