題集網上有一套php的面試題:http://www.tijee.com/tags/46-php-face-questions/posts
② 2022年PHP面試題大全(值得收藏)
求職 PHP 相關崗位,面試與筆試中的表現不僅考驗口語能力,更關鍵的是技術實力。掌握最新的 PHP 面試題將大大提高求職效率。以下是一些精選的面試題,旨在幫助你順利進入理想公司,獲得理想薪酬:
更多內容,包括 MySQL 存儲引擎的區別和網站流量管理策略,可以點擊相關鏈接獲取 PDF 版本的面試題大全。
③ PHP 考試系統怎麼生成隨機試題,求代碼寫法.以選擇題為例說明一下就行,假如從10個里抽3個,怎麼在提交之
很簡單,給你一個思路
你在資料庫裡面放10個題,
id questions options right_answer
1 china 是指哪個國家? A:中國;B:日本;C:美國 A
... ................ ............. ...
這樣你從資料庫中讀取全部數據出來;
為了實現隨機性,你可以用一個數組
<?php
$query=$mysql_query("select * from '表名'");
$results=$mysql_fetch_row($query);
$rand=array_rand($results,3);//取出隨機的三個問題,注意這里取得是三個鍵值
$question=array($result[$rand[0]],$result[$rand[1]],$result[$rand[2]]);//將取出的三個問題放進一個數組中
?>
<form action="目標地址(此處用本頁面地址)" method="post">
<?php
foreach($question as $values)
{
$options=explode(";",$values['options']);//用「;」將選項分割存進數組
echo $values['questions'];//顯示題目
for($i=0;$i<count($options);$i++){
echo "<input type='radio' name=".$choice[$valest['id']]." value='A' >".$options[i]." /><br>";//輸出選項
}
echo "----------------------------------------";//題目之間分隔符
}
//下面的代碼是你接受form表單的頁面,如果是本頁面就直接接著上面的代碼寫
if(!empty($_POST[$choice]))
{
foreach($_POST[$choice] as $key=> $data)
{
$question_id=$key;
$user_choice=$data;
if(mysql_query("select * from '表名' where id=".$key."and right_answer='".$data."'"))
{
//答案對如何處理。。。。
}
else
{
//答案不對處理辦法。。。。
}
}
}
?>
</form>
隨手現寫的代碼,可能你裡面有錯誤,但是思路你可以借鑒下~
④ PHP中高級面試題 – 第一天
一、寫一個函數,獲取一篇文章內容中的全部圖片,並下載
二、什麼是 CSRF 攻擊?XSS 攻擊?如何防範?
CSRF:跨站請求偽造,可以通過通過判斷來源和加 Token 的方式來防範。
XSS:跨站腳本攻擊,可以通過對內容轉義和過濾來防範,還有 CSP
三、應用中我們經常會遇到在 user 表隨機調取 10 條數據來展示的情況,簡述你如何實現該功能。
四、MYSQL 中主鍵與唯一索引的區別
主鍵:絕對不能有空值。唯一索引:可以有空值
五、http 與 https 的主要區別
關鍵是 S 上。簡而言之,https 建立連接後要先把 SSL 的證書發下去,有了公鑰和私鑰,就可以解密了。
六、兩台 mysql 伺服器,其中一台掛了,怎麼讓業務端無感切換,並保證正常情況下講台伺服器的數據是一致的
不是核心業務的話,先停寫,把備機拉起來,查看兩台機器的日誌,進行數據補償,開寫。
如果是核心業務的話,現在所有的操作都在正常的狀態機器上。把好的這台機器的備機拉起來,當主機。
以上全是應急操作。實際上資料庫的容災設計要復雜得多。
面試官要是問你,備機的數據不一致怎麼辦,你要勇敢懟回去,你們每秒多少寫入操作。按照百萬級表,每秒 1000 的寫入效率,正常的設計是,分布在 2 台機器上每台 500。這個級別的數據同步,出現差異的概率 可以忽略不計的。有一台出現問題,另一台也可以抗住。
(正常的操作,還是先停寫,等數據一致,切換,開寫。我們公司搞這些切換都是在凌晨 4.00 左右,核心業務的每秒寫操作,只有十幾個。前後耽擱不到 20 秒)。
七、10 瓶水,其中一瓶有毒,小白鼠喝完有毒的水之後,會在 24 小時後死亡,問:最少用幾只小白鼠可以在 24 小時後找到具體是哪一瓶水有毒。
答案:四隻
二進制問題。薛定諤的老鼠。
一隻老鼠有兩個狀態,死活,對應 01。假設老鼠的個數為 A,則有 2^A>=10; A=4;
思路很簡單,十瓶葯編號:0,1,10,11….1001;
0 不喝。第一隻老鼠喝所有個位是 1 的:13579,第二隻喝十位是 1 的,第三隻和百位是 1 的,第四隻喝千位是 1 的。
24 小時後,看下死了的是 1,活著的是 0。按老鼠的順序乖乖站好…… 假如第一隻和第三隻死了,那就是 0101,就是 5 有問題。
⑤ 誰能告訴我一些PHP開發常見的面試題呢
1、表單提交get和post有何區別?
答:get的方式是把數據在地址欄中發送,get傳送的數據量較小,不能大於2KB。post傳送的數據量較大,一般被默認為不受限制。但理論上,IIS4中最大量為80KB,IIS5中為100KB。
2、用PHP列印出前一天的時間格式是2006-5-1022:21:21
復制代碼代碼示例:
echo date("Y-m-dH:i:s",time()-(3600*24));或echodate("Y-m-d H:i:s",strtotime("-1 day"));
3、php中include和require的區別?
這兩種結構除了在如何處理失敗之外完全一樣。include()產生一個警告而 require() 則導致一個致命錯誤。換句話說,如果你想在遇到丟失文件時停止處理頁面就用 require()。include() 就不是這樣,腳本會繼續運行。
4、echo(),print(),print_r()的區別
echo可以接多個參數,print只能接一個參數,它們都是PHP的語言結構,print_r是遞規列印,用來列印數組或對象
5、能夠使HTML和PHP分離開使用的模板
smarty,phplib,SmartTemplate
6、如何理解MVC模式?
首先說一下框架,框架:就是別人把一些底層,常用操作.比如數據操作(增,刪,改,查)寫好.你來直接用.其它的功能要自己來做。
MVC:設計模式,M模型,V顯示,C控制.現在許多框架都是基於MVC來做的把邏輯和顯示分開.比如你要換頁面,只需要改V裡面的東西並不需要再去變動程序!(詳細的東西可以上網上查一下)
7、如何實現PHP、JSP交互?
PHP提供了支持JAVA的類庫文件,或者通過HTTP協議來交互數據
8、使用哪些工具進行版本控制?
VSS,CVS,SVN
http://www.jbxue.com/php/25446.html
⑥ 2022年PHP面試題附答案(實戰經驗)
1、面向對象是一種程序設計方法,它提升了代碼的重用性和清晰度。主要特徵包括封裝、繼承和多態性。
2、SESSION和COOKIE的區別在於,SESSION存儲在伺服器端,而COOKIE保存在客戶端。SESSION相對安全,因為可以通過某些手段修改COOKIE,而SESSION依賴於COOKIE傳遞信息。禁用COOKIE後,SESSION無法正常工作。然而,SESSION需要伺服器資源讀取,且文件路徑由php配置文件指定,文件是公有的。
3、HTTP狀態碼302表示臨時重定向成功,即請求內容已轉移到新位置。403表示禁止訪問,500表示伺服器內部錯誤。
4、數據類型包括:整數(int)、定長字元(char)、變長字元(varchar)、日期時間型(datetime)和文本型(text)。VARCHAR與CHAR的區別在於,CHAR是固定長度的字元類型,而VARCHAR是可變長度的,能更有效地節省空間。然而,處理VARCHAR類型時,伺服器需要進行額外的操作,導致效率較低。
5、MyISAM和InnoDB之間的基本區別在於,MyISAM不支持事務處理,表鎖,且易產生碎片,但讀寫速度較快,適合頻繁查詢應用。而InnoDB支持事務,行鎖,有崩潰恢復能力,適合插入和更新操作較多的應用,盡管空間佔用更大,不支持全文索引。
6、isset()函數用於判斷變數是否存在,可以同時檢查多個變數,而empty()則判斷變數是否為空。
7、在PHP中,傳值和傳引用的區別在於,按值傳遞時,函數范圍內的值更改不會影響外部變數;按引用傳遞時,函數范圍內的值更改會影響到外部變數。
8、error_reporting函數用於設置PHP的報錯級別,並返回當前級別。
9、緩存技術是將動態內容緩存在文件中,在一定時間內訪問動態頁面時直接調用緩存文件,避免重新訪問資料庫。
10、MVC結構分別指業務模型、視圖和控制器,通過控制器調用模型處理數據,並將數據映射到視圖層顯示,以實現代碼重用性和M和V的代碼分離。
11、AJAX是一種非同步傳輸技術,能夠通過JavaScript實現局部刷新,減輕伺服器壓力,提高用戶體驗。
12、提高程序運行效率的方法包括優化SQL語句、創建索引、生成緩存等。
13、對於大流量網站,採用緩存、負載均衡、CDN存儲加速、減少資料庫使用、查看瓶頸及反向代理等方法解決訪問量問題。
14、include和require的區別在於,include在失敗時產生警告,而require則產生錯誤中斷。require_once和include_once可以避免重復包含同一文件。
15、foo()和@foo()的區別在於@代表忽略所有警告。
16、PHP的垃圾收集機制回收不再使用的變數容器,確保內存的有效使用。
17、實現PHP安全的最大化,避免SQL注入和XSS攻擊,需遵循基本原則:不展示伺服器或程序細節,不相信用戶提交的數據。
18、echo用於簡單輸出,print是函數且有返回值,print_r和var_mp用於列印數組和對象,同時提供數據類型信息。
19、Smarty模板速度快,支持編譯型、緩存技術、插件機制和強大的表現邏輯。
20、PHP通過header函數實現頁面跳轉,可以設置跳轉的網址或延遲時間。還可以利用meta元素實現跳轉。
21、將GB2312格式的字元串轉換為UTF-8格式,可以使用iconv函數。
22、在數據入庫前,使用htmlspecialchars或htmlentities函數處理用戶輸入內容,避免SQL注入和XSS攻擊。
23、CSRF攻擊是跨站請求偽造,XSS攻擊是跨站腳本攻擊,防範策略包括合理規范API請求、使用token驗證和過濾輸入。
24、在開發中,注意防遠程提交、防SQL注入、防止注冊機灌水和使用驗證碼等安全機制。
25、JSON是一種輕量級數據交換格式,json數據格式固定,適用於多種語言的數據傳遞。
26、事務是一系列資料庫操作的邏輯單位,具有原子性、一致性、隔離性和持久性。
27、鎖是實現資料庫並發控制的技術,確保資料庫狀態的一致性。
28、索引加速數據檢索,提高查詢效率,但也減慢數據錄入速度並增加資料庫尺寸。
29、三個範式的定義涉及屬性的原子性、記錄的唯一性及欄位的冗餘性。
30、主鍵、外鍵和索引的區別在於定義、作用和個數。
31、private、protected和public修飾符分別代表私有、保護和公共訪問許可權。
32、堆和棧的區別在於堆是動態分配的內存空間,而棧是靜態分配且大小明確。
33、魔術方法包括實例化、析構、屬性設置、屬性獲取、條件檢查、序列化、克隆等。
34、$this、self和parent分別代表當前對象、當前類和當前類的父類。
35、::操作符用於調用類常量和靜態方法。
36、__autoload()函數在類實例化時自動載入類文件。
37、高並發網站解決方案包括前端優化、服務端優化、資料庫優化和Web伺服器優化。
38、PHP遍歷文件夾下所有文件的方法,可以通過遞歸函數實現。
39、在命令行中運行php程序的步驟包括顯示當前PHP版本、載入有效模塊、輸出phpinfo、傳遞參數等。
40、檢查PHP腳本和資料庫SQL效率的方法包括代碼計時、xdebug分析、系統調用跟蹤等。
41、大流量網站訪問量統計問題的解決方案包括確認伺服器負載、優化資料庫訪問、防止盜鏈、控制文件下載等。
42、MySQL資料庫優化策略涉及資料庫結構設計、欄位類型選擇、添加索引、主從讀寫分離、分表等。
43、MyISAM和InnoDB存儲引擎的區別包括事務支持、性能、索引類型等。