當前位置:首頁 » 編程語言 » php基礎試題

php基礎試題

發布時間: 2025-07-08 09:55:35

Ⅰ 騰訊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調試工具。

;

Ⅱ php常識選擇題

1.PHP選擇題
選擇B。

PHP是一種簡單的,面向對象的,解釋型的,健壯的,安全的,性能非常之高的,獨立於架構的,可移植的,動態的腳本語言。PHP具有和JAVA類似的Class關鍵字。因為不需要虛擬機,以致速度比JAVA快5倍。PHP

正迅速變成一種標準的,多用途的,面向對象的腳本語言。PHP不僅可用來開發Web應用程序,也可以開發普通應用程序。

PHP是一種功能強大的腳本語言。PHP將擊敗PERL/Python並取而代之。PHP是下一代的PERL/Python腳本。PHP可以勝任任何PERL/Python做的工作,並且做的更多,更好,更簡潔!

2.關於基礎知識問題
PHP不能僅僅理解為「製作網站腳本的語言」,太狹義了,PHP是置於伺服器端運行的腳本程序,是解釋型語言,通過(LINUX)或者.exe(WIN)解釋執行。PHP本身實際上就是這個小小的解釋程序。而我們時寫的PHP代碼,都是供這個解釋程序來解析的腳本。

PHP的功能也在不斷的發展和進步,所以才會有那麼多的版本, 基本上每個版本都比前一個版本有不少的功能、安全、效率上的改進,解析程序、內置的方法也會有所變動。

而VBScript和JS是運行在瀏覽器端的腳本。主要的功能集中在UI方面,由瀏覽器本身解釋執行。你可能感覺不到他們在升級,但實際上每當你升級瀏覽器時(比如IE6升級為IE7),對於JS的解析都會有一些變化,你會發現以前在IE6下能運行的JS,到了IE7下卻報錯了,這就要求你使用更為規范的代碼來適應這些變化。

其實不光是PHP在不斷升級,ASP、java何嘗不是更新不斷。
3.3道PHP選擇題求答案,希望專業人士問答一下
1.下面哪個選項沒有將 john 添加到 users 數組中? ( )(選擇 2項)

推薦答案:B D

解釋:

B) array_add 是數組相加,而不是給數組添加元素。

D) ||= 無法給數組添加元素。

2. 標識符是變數的名稱。PHP中的標識符用「$+變數名」來表示。標識符在PHP中遵循下列選項中的那些規則?()(選擇3項)

推薦答案:B C D

解釋:

A)根據PHP手冊正確提法:一個有效的變數名由字母或者下劃線開頭,後面跟上任意數量的字母,數字,或者下劃線。

3. 下面對PHP 說法正確的是?()(選擇1項)

推薦答案:D)

解釋:

(1)PHP以解釋方式來執行,所以A、B先去掉。

(2)PHP,即「PHP: Hypertext Preprocessor」
4.關於的一些試題求答案
6. BD

7. E

9. D 參考:

20. E 參考://_ref_error

21. echo date('F-d-Y'); 參考:2/manual/zh/function.date

22. 當前腳本名稱:$_SERVER['PHP_SELF']; 鏈接到當前頁面的URL:$_SERVER['HTTP_REFERER']; 參考:/manual/zh/reserved.variables.server
5.PHP選擇題
<?

$A="Hello ";

function print_A()

{

$A = " mysql !!";這個$A只是函數體內部定義的,叫做局部變數,不影響外面

global $A;此處是關鍵,global關鍵詞為全局的意思,就是把全局變數(函數體外的$A)引入了函數體內,此時$A的是就是$A="Hello ";

echo $A;所以輸出Hello

}

echo $A;這個$A的值是上面定義的$A="Hello ";的值,輸出Hello,你應該懂吧。

print_A();調用print_A(),進入函數體內部執行

?>

提示:這到題主要考察你對global的理解,實在不懂就去網路一下 global,會出來很多對global的詳細介紹。這些都是基礎,必須要弄懂的,加油吧。朋友

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

Ⅳ 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. 高並發網站的解決方案涉及哪些方面?

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

Ⅳ 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方式則不會

Ⅵ 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>

隨手現寫的代碼,可能你裡面有錯誤,但是思路你可以借鑒下~

熱點內容
資料庫邏輯存儲結構 發布:2025-07-10 09:26:56 瀏覽:920
密碼編譯找規律 發布:2025-07-10 09:18:10 瀏覽:512
電影視頻緩存後 發布:2025-07-10 09:16:48 瀏覽:894
伺服器搭建需要哪些東西 發布:2025-07-10 09:15:23 瀏覽:802
無限密碼怎麼改 發布:2025-07-10 09:14:32 瀏覽:106
coc按鍵精靈腳本 發布:2025-07-10 09:12:40 瀏覽:313
excel表格ftp函數 發布:2025-07-10 09:05:50 瀏覽:278
u2game的解壓密碼 發布:2025-07-10 09:05:14 瀏覽:598
c語言編譯器ide蘋果下載 發布:2025-07-10 09:05:13 瀏覽:295
andftp埠 發布:2025-07-10 08:57:04 瀏覽:609