當前位置:首頁 » 編程語言 » php中級面試題

php中級面試題

發布時間: 2025-04-29 04:21:26

1. 騰訊php面試題

騰訊php面試題

php程序員一般會遇到的面試題:

1. 基本知識點

HTTP協議中幾個狀態碼的含義:503 500 401 200 301 302

Include require include_once require_once 的區別.

PHP/Mysql中幾個版本的進化史,比如mysql4.0到4.1,PHP 4.x到5.1的重大改進等。

HEREDOC介紹

寫出一些php魔幻方法;

一些編譯php時的configure 參數

向php傳入參數的兩種方法。

(mysql)請寫出數據類型(int char varchar datetime text)的意思; 請問varchar和char有什麼區別;

error_reporting 等調試函數使用

您是否用過版本控制軟體? 如果有您用的版本控制軟體的名字是?

posix和perl標準的正則表達式區別;

Safe_mode 打開後哪些地方受限.

寫代碼來解決多進程/線程同時讀寫一個文件的問題。

寫一段上傳文件的代碼。

Mysql 的存儲引擎,myisam和innodb的區別。

2. web 架構,安全,項目經驗

介紹xdebug,apc,eAccelerator,Xcache,Zend opt的使用經驗。

使用mod_rewrite,在伺服器上沒有/archivers/567.html這個物理文件時,重定向到index.php?id=567 ,請先打開mod_rewrite.

MySQL資料庫作發布系統的存儲,一天五萬條以上的增量,預計運維三年,怎麼優化?

寫出一種排序演算法(原理),並說出優化它的方法。

請簡單闡述您最得意的開發之作

對於大流量的網站,您採用什麼樣的方法來解決各頁面訪問量統計問題

您是否用過模板引擎? 如果有您用的模板引擎的名字是?

請介紹Session的原理,大型網站中Session方面應注意什麼?

測試php性能和mysql資料庫性能的工具,和找出瓶頸的方法。

正則提出一個網頁中的'所有鏈接.

介紹一下常見的SSO(單點登陸)方案(比如dedecms整合discuz的passport)的原理。

您寫過的PHP框架的特點,主要解決什麼問題,與其他框架的不同點。

大型的論壇/新聞文章系統/SNS網站在性能優化上有什麼區別?

相冊類應用:要求在瀏覽器中能同時選中並上傳多個文件,圖片要求能剪裁,壓縮包在伺服器端解壓。能上傳單個達50M的文件。上傳過程中有進度條顯示。每個圖片能生成四種大小縮略圖,視頻文件要轉成flv供flash播放。敘述要涉及的各類開源軟體和簡單用途。

一群猴子排成一圈,按1,2,…,n依次編號。然後從第1隻開始數,數到第m只,把它踢出圈,從它後面再開始數,再數到第m只,在把它踢出去…,如此不停的進行下去,直到最後只剩下一隻猴子為止,那隻猴子就叫做大王。要求編程模擬此過程,輸入m、n, 輸出最後那個大王的編號。用程序模擬該過程。

3. unix/linux 基本使用

linux下查看當前系統負載信息的一些方法。

vim的基本快捷鍵。

ssh 安全增強方法;密碼方式和rsa key 方式的配置。

rpm/apt/yum/ports 裝包,查詢,刪除的基本命令。

Makefile的基本格式,gcc 編譯,連接的命令,-O0 和-O3區別。

gdb,strace,valgrind的基本使用.

4. 前端,HTML,JS

css盒模型。

javascript中的prototype。

javascript中this對象的作用域。

IE和firefox事件冒泡的不同。

什麼是怪異模式,標准模式,近標准模式。

DTD的定義

IE/firefox常用hack.

firefox,IE下的前端js/css調試工具。

;

2. 誰能告訴我一些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

3. 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 有問題。

4. PHP面試題(附答案)

以下是一些常見的PHP面試題及其答案:

  1. FILE的含義及使用

    • 答案:__FILE__是一個魔術常量,返迴文件的完整路徑和名稱,包含絕對路徑。在PHP 4.0.2及以後的版本中總是如此,而在早期版本中可能為相對路徑。
  2. 獲取客戶端IP地址

    • 答案:使用$_SERVER['REMOTE_ADDR']變數可以獲取客戶端的IP地址。
  3. 跳轉頁面的header函數示例

    • 答案:header;用於頁面重定向。
  4. 去除HTML文本中的JS腳本

    • 答案:使用正則表達式如preg_replace</script>/is', '', $str);來去除HTML文本中的JS腳本。
  5. 刪除數組中的空值

    • 答案:使用array_filter;函數可以過濾掉數組中的空值。
  6. 獲取當前時間戳和前一天的時間格式化

    • 答案:$timestamp = time; echo date);。
  7. PHP編碼轉換函數

    • 答案:iconv用於字元編碼轉換,將字元串從UTF8編碼轉換為GBK編碼。
  8. 字元串轉數組

    • 答案:$arr = array_map);將逗號分隔的字元串轉化為數組。
  9. serialize和unserialize功能

    • 答案:serialize用於序列化數據,將PHP的值或對象轉換為一個可存儲或傳輸的字元串表示;unserialize用於反序列化已存儲的數據,將字元串恢復為PHP的值或對象。
  10. 指定月的天數查詢函數

    • 答案:function daysInMonth { return date); }。該函數返回指定年份和月份的天數。
  11. 獲取文件擴展名

    • 答案:$ext = pathinfo;。使用pathinfo函數獲取文件路徑信息,並通過PATHINFO_EXTENSION參數獲取文件擴展名。
  12. PHP模板引擎使用經驗

    • 答案:常用的PHP模板引擎有Smarty、Twig以及ThinkPHP自帶的模板引擎等。模板引擎可以提高代碼的可讀性和可維護性,將前端頁面與後端邏輯分離。
  13. 類的實例化及操作

    • 答案:創建一個類class MyClass { public $attr; function __construct { $this>attr = 'example' } public function myMethod { echo $this>attr; } },然後實例化並調用方法:$obj = new MyClass; $obj>myMethod;。
  14. MySQL資料庫操作示例

    • 答案:可以使用mysqli或PDO連接MySQL資料庫。具體連接和操作的代碼略,但通常包括連接資料庫、執行SQL語句和處理結果集等步驟。
  15. SQL操作實例

    • 答案:SQL操作包括插入、查詢、刪除和清空等操作。具體編寫依賴於資料庫連接和所使用的SQL語句。例如,插入操作可以使用INSERT INTO語句,查詢操作可以使用SELECT語句等。

5. 37道PHP面試題(附答案)

以下是37道PHP面試題及簡潔答案概述:

  1. 面向對象是什麼?

    • 答案:面向對象是通過封裝、繼承和多態提高程序復用性和清晰性的設計方法。
  2. SESSION與COOKIE的區別?

    • 答案:SESSION依賴cookie傳遞,存儲在伺服器,安全但消耗資源;COOKIE保存在客戶端,易被篡改。
  3. HTTP狀態代碼302、403、500、401分別代表什麼?

    • 答案:302代表臨時重定向;403表示禁止訪問;500表示伺服器內部錯誤;401代表未授權。
  4. 常見的數據類型有哪些?varchar與char的區別是什麼?

    • 答案:數據類型包括int、char、varchar、datetime和text等。varchar與char的區別在於存儲空間:varchar動態分配,char固定長度。
  5. MyISAM與InnoDB的區別?

    • 答案:MyISAM適合頻繁查詢,不支持事務;InnoDB支持事務,適合大量插入和更新,但佔用空間大,不支持全文索引。
  6. isset與empty的區別?

    • 答案:isset檢查變數是否存在,可傳遞多個變數;empty判斷變數是否為空,只接受一個變數。
  7. PHP中按值傳遞和按引用傳遞的區別?

    • 答案:按值傳遞在函數外部忽略修改;按引用傳遞則反映外部修改,根據操作需求選擇傳遞方式。
  8. error_reporting函數的作用?

    • 答案:設置PHP錯誤報告級別,並顯示當前級別的錯誤。
  9. 什麼是緩存技術?

    • 答案:緩存技術是存儲動態內容以減少資料庫訪問,提高頁面響應速度。
  10. MVC結構包括哪些部分?其優點是什麼?

    • 答案:MVC結構包括業務模型、視圖和控制器。優點是代碼重用、分離視圖和業務邏輯。
  11. AJAX的優勢是什麼?

    • 答案:非同步更新、減輕伺服器壓力、提升用戶體驗。
  12. 如何優化程序效率?

    • 答案:包括優化SQL、創建索引、緩存數據和合理架構。
  13. 解決大流量問題的策略有哪些?

    • 答案:使用緩存、負載均衡、CDN加速和減少資料庫使用。
  14. include與require的區別?

    • 答案:require在失敗時會中斷執行,include則不會。可用require_once和include_once避免多次包含。
  15. @foo與foo的區別?

    • 答案:@foo忽略警告,foo則不會忽略。
  16. PHP的垃圾收集機制是怎樣的?

    • 答案:通過refcount跟蹤變數引用,當引用計數為0時釋放內存。
  17. 如何確保程序安全?

    • 答案:避免SQL注入和XSS攻擊,過濾用戶輸入,保護伺服器細節。
  18. echo、print_r、var_mp、print的區別?

    • 答案:echo用於輸出;print_r和var_mp用於列印變數結構;print有返回值,var_mp更詳細。
  19. Smarty模板的特點是什麼?

    • 答案:速度快、編譯型、緩存、插件支持和強大邏輯。
  20. PHP頁面跳轉的方法有哪些?

    • 答案:包括header函數直接跳轉、meta標簽刷新和模板跳轉。
  21. 如何使用iconv函數轉換字元編碼?

    • 答案:使用iconv函數將GB2312格式字元串轉換為UTF8。
  22. 如何處理用戶輸入以防止XSS攻擊?

    • 答案:入庫前使用htmlspecialchars或htmlentities處理用戶輸入。
  23. CSRF攻擊和XSS攻擊分別是什麼?如何防範?

    • 答案:CSRF攻擊模擬用戶請求,XSS攻擊注入惡意腳本。防範方法包括驗證token和過濾輸入。
  24. 開發PHP應用時需關注哪些安全機制?

    • 答案:防止遠程提交、SQL注入、驗證碼等。
  25. JSON是什麼?

    • 答案:JSON是輕量級數據交換格式,易於跨語言傳輸。
  26. 事務具有哪些特性?

    • 答案:事務具有原子性、一致性、隔離性和持久性。
  27. 鎖在資料庫中的作用是什麼?

    • 答案:鎖用於並發控制,保證資料庫一致性,包括行級鎖和表級鎖。
  28. 索引的作用及其缺點?

    • 答案:索引加速數據檢索,但增加存儲和寫入開銷。
  29. 範式理論是什麼?

    • 答案:範式理論解釋了數據結構的規范化,減少數據冗餘。
  30. 主鍵、外鍵和索引的作用分別是什麼?

    • 答案:主鍵用於唯一標識記錄;外鍵用於關聯關系;索引用於加快查詢速度。
  31. private、protected和public修飾符的作用?

    • 答案:分別定義不同許可權范圍的類成員。
  32. 堆和棧的區別是什麼?

    • 答案:堆動態分配內存,棧在編譯時分配內存。
  33. 魔術方法是什麼?

    • 答案:魔術方法如construct、destruct等在特定場景下自動執行。
  34. $this、self、parent的區別和使用場景?

    • 答案:$this代表當前對象;self代表當前類;parent代表父類,根據需要選擇使用。
  35. 作用域操作符::的作用?

    • 答案:用於訪問類常量和靜態方法。
  36. __autoload函數的作用?

    • 答案:自動載入類,當實例化未引入的類時執行。
  37. 高並發網站的解決方案涉及哪些方面?

    • 答案:涉及前端、服務端、資料庫和伺服器層面的優化。

6. php面試題get和post的區別

1、Get 方法通過 URL 請求來傳遞用戶的數據,將表單內各欄位名稱與其內容,以成對的字元串連接,置於 action 屬性所指程序的 url 後,如http://www.domain.com/test.asp?name=51js&password=51js,數據都會直接顯示在 url 上,就像用戶點擊一個鏈接一樣;Post 方法通過 HTTP post 機制,將表單內各欄位名稱與其內容放置在 HTML 表頭(header)內一起傳送給伺服器端交由 action 屬性能所指的程序處理,該程序會通過標准輸入(stdin)方式,將表單的數據讀出並加以處理

2、 Get 方式需要使用 Request.QueryString 來取得變數的值;而 Post 方式通過 Request.Form 來訪問提交的內容

3、Get 方式傳輸的數據量非常小,一般限制在 2 KB 左右,但是執行效率卻比 Post 方法好;而 Post 方式傳遞的數據量相對較大,它是等待伺服器來讀取數據,不過也有位元組限制,這是為了避免對伺服器用大量數據進行惡意攻擊,根據微軟方面的說法,微軟對用 Request.Form() 可接收的最大數據有限制,IIS 4 中為 80 KB 位元組,IIS 5 中為 100 KB 位元組

建議:除非你肯定你提交的數據可以一次性提交,否則請盡量用 Post 方法

4、Get 方式提交數據,會帶來安全問題,比如一個登陸頁面,通過 Get 方式提交數據時,用戶名和密碼將出現在 URL 上,如果頁面可以被緩存或者其他人可以訪問客戶這台機器,就可以從歷史記錄獲得該用戶的帳號和密碼,所以表單提交建議使用 Post 方法;Post 方法提交的表單頁面常見的問題是,該頁面如果刷新的時候,會彈出一個對話框

建議:出於安全性考慮,建議最好使用 Post 提交數據
***********************************
在B/S應用程序中,前台與後台的數據交互,都是通過HTML中Form表單完成的。Form提供了兩種數據傳輸的方式——get和post。雖然它們都是數據的提交方式,但是在實際傳輸時確有很大的不同,並且可能會對數據產生嚴重的影響。雖然為了方便的得到變數值,Web容器已經屏蔽了二者的一些差異,但是了解二者的差異在以後的編程也會很有幫助的。
Form中的get和post方法,在數據傳輸過程中分別對應了HTTP協議中的GET和POST方法。二者主要區別如下:
1、Get是用來從伺服器上獲得數據,而Post是用來向伺服器上傳遞數據。
2、Get將表單中數據的按照variable=value的形式,添加到action所指向的URL後面,並且兩者使用「?」連接,而各個變數之間使用「&」連接;Post是將表單中的數據放在form的數據體中,按照變數和值相對應的方式,傳遞到action所指向URL。
3、Get是不安全的,因為在傳輸過程,數據被放在請求的URL中,而如今現有的很多伺服器、代理伺服器或者用戶代理都會將請求URL記錄到日誌文件中,然後放在某個地方,這樣就可能會有一些隱私的信息被第三方看到。另外,用戶也可以在瀏覽器上直接看到提交的數據,一些系統內部消息將會一同顯示在用戶面前。Post的所有操作對用戶來說都是不可見的。
4、Get傳輸的數據量小,這主要是因為受URL長度限制;而Post可以傳輸大量的數據,所以在上傳文件只能使用Post(當然還有一個原因,將在後面的提到)。
5、Get限制Form表單的數據集的值必須為ASCII字元;而Post支持整個ISO10646字元集。
6、Get是Form的默認方法。
*.Post傳輸數據時,不需要在URL中顯示出來,而Get方法要在URL中顯示。
*.Post傳輸的數據量大,可以達到2M,而Get方法由於受到URL長度的限制,只能傳遞大約1024位元組.
*.Post顧名思義,就是為了將數據傳送到伺服器段,Get就是為了從伺服器段取得數據.而Get之所以也能傳送數據,只是用來設計告訴伺服器,你到底需要什麼樣的數據.Post的信息作為http請求的內容,而Get是在Http頭部傳輸的。
網頁表單當中的get方式和post方式的區別
1、get方式可傳遞的數據量有限,大約是2K左右,而post在iis5當中則達到100k,一般人們可以默認post是無限制的;
2、get方式在提交帳號密碼等表單時不如post方式安全。在get提交表單以後瀏覽器的url會將你提交的表單參數全部顯示在地址欄當中,而且可以通過機器的緩存來直接查看到各項參數;而post方式則不會;
3、get方式在後台處理頁面用Request.QueryString接收各個參數;而post則用Request.Form獲取;
4、get方式會忽略<form action="a.asp?a=a"里邊的"a=a"這個參數;而post方式則不會

熱點內容
linuxiperf 發布:2025-04-29 08:09:43 瀏覽:258
路由器密碼在哪裡能看見 發布:2025-04-29 07:34:25 瀏覽:856
安卓手機軟體不想升級怎麼辦 發布:2025-04-29 07:23:16 瀏覽:622
theforest伺服器如何開 發布:2025-04-29 07:23:15 瀏覽:620
圖書直播腳本規劃表 發布:2025-04-29 07:18:38 瀏覽:360
唱吧不上傳可以分享嗎 發布:2025-04-29 06:56:49 瀏覽:649
存儲設備電視機 發布:2025-04-29 06:49:13 瀏覽:883
專破加密的wifi手機版 發布:2025-04-29 06:40:21 瀏覽:116
ftp傳輸模式命令 發布:2025-04-29 06:40:20 瀏覽:804
請求分頁式存儲管理 發布:2025-04-29 06:38:44 瀏覽:181