# PHP面試習題
1. PHP是什么意思?
2. 什么是面向對象?主要特征是什么?
3. SESSION 與 COOKIE的區別是什么,請從協議,產生的原因與作用說明?
4. 不使用COOKIE向客戶端發送一個COOKIE
5. 簡述COOKIE的設置及獲取過程
6. HTTP狀態中302,403,500,200,404,502代碼含義
7. 請寫出數據類型int char varchar datetime text的意思,比較char和varchar的區別
8. MyISAM和InnoDB的基本區別,索引結構如何實現?
9. isset()和empty()的區別?
10. include和require的區別?
11. PHP中單引號與雙引號的區別。
12. 請說明PHP中傳值與傳引用的區別,分別用在什么時候?
13. IN, NOT IN, EXIST, NOT EXIST的作用和區別
14. 面向對象中接口和抽象類的區別與使用場景
15. echo(), print(), print_r()的區別
16. `mysql_fetch_row()`和`mysql_fetch_array()`之間有什么區別
17. 請描述兩點以上XHTML和HTML之間的顯著區別
18. HTTP協議中GET和POST的區別
19. 表單中GET和POST提交方法的區別
20. foo()與@foo()的區別
21. 線性表和順序表的區別
22. 什么是數據庫索引,主鍵索引、唯一索引的區別,索引的缺點是什么?
23. IE瀏覽器與非IE瀏覽器的劃分,區別是什么?
24. 數據庫中的事務是什么?
25. 解釋:左連接、右連接、內連接、索引
26. 簡述無限極分類的實現原理
27. 舉例:能夠使PHP和HTML分離的模板引擎
28. 舉例:版本控制管理工具
29. 寫出三種以上MySQL數據庫存儲引擎的名稱
30. 什么是模板技術?
31. 實現中文字符串截取無亂碼的方法
32. 用PHP寫出顯示客戶端IP和服務器端IP的代碼
33. 數據庫索引有幾類,分別是什么,什么時候該用索引
34. 寫幾個魔術方法并說明作用
35. `$_REQUEST`, `$_POST`, `$_GET`, `$_COOKIE`, `$_SESSION`, `$_FILE`的意思是什么?
36. 數組中下標最好是什么類型
37. ++i, i++哪個效率更高,為什么?
38. `magic_quotes_gpc()`, `magic_quotes_runtime()`的意思是什么?
39. 框架中什么是單入口,多入口,單一入口有什么缺點?
40. 你對Memcache的理解,優點有什么?
41. 對關系數據庫而言,索引是相當重要的概念,請回答有關索引的幾個問題?
- 索引的目標是什么?
- 索引對數據庫系統的負面影響是什么?
- 為數據表建立索引的原則有哪些?
- 什么情況下不宜建立索引?
42. web應用中,數據庫的讀取頻率遠高于寫入頻率,如何優化MySQL而應對此種場景?
43. 如果是一個WEB頻繁訪問的查詢,查詢應該如何優化?
44. 數據庫設計時,常遇到哪些性能瓶頸,常用解決方案。
45. 請詳述在開發過程中用什么方法來加快頁面的加載速度
46. 描述大流量高并發網站的解決方案
47. 對于大流量的網站您采用什么方法來解決訪問量問題?
48. 如何設計或配置MySQL,才能達到高效的目的。
49. 設定網站的用戶量在千萬級,但是活躍的用戶只有1%,如何通過優化數據庫提高活躍用戶的訪問速度?
50. 什么是XSS攻擊,如何防止?
51. SQL注入漏洞產生的原因,如何防止?
52. 如何防止SQL注入。
53. 用PHP寫一個用戶登錄系統需要注意哪些?
54. 如何實現多個線程安全的寫入一個文件數據
55. 什么是滿二叉樹,什么是完全二叉樹?
56. 字符串數組,數組轉字符串,字符串截取,字符串替換,字符串查找的函數?
57. 描述GD庫
58. 寫出Zend框架的目錄結構,簡單說明目錄的作用
59. 談談對MVC的理解
60. PHP如何拋出和接收錯誤?
61. PHP的網站主要攻擊問題有哪些?
62. 幾個重要的PHP.INI配置選項
63. 使用過哪些PHP框架?試試描述各自的優缺點?
64. 如何在頁面之間傳遞變量數據?
65. 寫出多個PHP數組函數,并說明作用
66. 你所知道的一些PHP技術、PHP論壇系統、PHP商城系統、開發框架等;
67. 你所知道的設計模式
68. 說說你對代碼管理的看法,常使用什么版本控制器
69. 說說對于SVN的了解,簡述其優缺點?
70. 如何找到PHP.INI配置文件
71. PHP加速模式/擴展?PHP調試模式/工具?
72. 你常用的mysql命令
73. 寫出10個LINUX命令
74. 寫出LINUX配置文件/服務的位置(5個)
75. 寫出5個MYSQL的操作關鍵字
76. 列出5個PHP操作MYSQL的函數
77. 數據庫的配置文件路徑
78. 什么是時間戳,獲取當前時間戳的函數
79. 給定一個網址URL,如何獲取網頁中的內容?
80. 簡述如何獲取當前執行腳本路徑,包括其參數
81. 如何使用PHP環境變量,獲取網頁的地址,IP地址等
82. 求2個日期之間的天數
83. PHP中如何定義一個常量?如何定義值傳遞的變量?
84. PHP可以對string類型的10和數值11進行比較嗎?
85. 什么情況下需要用endif來結束條件語句?
86. 優化MySQL數據庫的方法?
87. 實現中文字符串截取無亂碼的方法。
88. 分別指出php.ini中 `magic_quotes_gpc`, `magic_quotes_runtime`兩項參數的作用.
89. 用面向對象來實現A對象繼承B和C對象
90. 寫出Smarty模板引擎中你最常用的關鍵詞
91. 如何快速下載一個遠程http服務器上的圖片文件到本地?
92. 一個字節占多少bit ? 一個IPv4地址占幾個字節? 一個IPv6地址呢?
93. MADSL寬帶連接, 理想情況下, 最大下載速度是多少KB/s ?
94. 用PHP打印出前一天的時間,打印格式是2007年5月10日22:21:21
95. 抓取遠程圖片到本地,你會用什么函數?
96. 正在瀏覽當前頁面用戶的 IP 地址:127.0.0.1
97. 查詢(query)的字符串(URL 中第一個問號 ? 之后的內容):id=1&bi=2
98. 在PHP中,heredoc是一種特殊的字符串,它的結束標志必須
99. 如何聲明一個名為"myclass"的沒有方法和屬性的類?
- 如何實例化一個名為"myclass"的對象?
- 你如何訪問和設置一個類的屬性?
100. 指出一些在PHP輸入一段HTML代碼的辦法。
101. 哪個函數可以打開一個文件,以對文件進行讀和寫操作?
102. 簡述Linux下安裝PHP的過程?
103. 簡述Linux下安裝Mysql的過程?
104. 簡述Linux下安裝apache的過程?
105. linux下建立壓縮包,解壓縮包的命令
106. 寫出匹配URL的正則表達式
107. 請用正則表達式(Regular Expression)寫一個函數驗證電子郵件的格式是否正確
108. 請寫一個函數驗證電子郵件的格式是否正確
109. 請寫出一個正則表達式,用于匹配一個HTML文件中`<img />`標記中的圖片地址
110. 寫出一個正則表達式,過慮網頁上的所有JS/VBS腳本(即把scrīpt標記及其內容都去掉)
111. 在PHP中`error_reporting()`這個函數有什么作用?
112. Windows平臺, Apache Http Server啟動失敗, 排錯思路是什么?
113. php讀取文件內容的幾種方法和函數?
114. 以下程序,變量str什么值的情況下輸出111? `if( ! $str ) { echo 111; }`
115. 請寫出常見的排序算法,并用PHP實現冒泡排序,將數組$a = array()按照從小到大的方式進行排序。常見的排序算法: 冒泡排序法、快速排序法、簡單選擇排序法、堆排序法、直接插入排序法、希爾排序法、合并排序法。
116. 使用PHP描述快速排序算法,對象可以是一個數組?
117. 使用PHP描述順序查找和二分查找(也叫做折半查找)算法,順序查找必須考慮效率,對象可以是一個有序數組
118. 寫一個二維數組排序算法函數,能夠具有通用性,可以調用php內置函數
119. 請以空格作為間隔,拆分字符串’Apple Orange Banana Strawberry’,組成數組$fruit, 數組中所有元素都用小寫字母,并按照字母先后次序排序
120. 對于用戶輸入一串字符串$string,要求$string中只能包含大于0的數字和英文逗號,請用正則 表達式驗證,對于不符合要求的$string返回出錯信息
121. 請寫一段程序,在服務器創建一個文件fruit.dat,將試題3中得到的數組寫入到改文件中,然后寫一段程序從文件中讀取并還原數組@author zhuwenqiong
122. 單例模式,創建mysqli數據庫鏈接的單例對象
123. js中網頁前進和后退的代碼
124. 簡述如何得到當前執行腳本路徑,包括所得到參數。
125. JS表單彈出對話框函數是?獲得輸入焦點函數是?
126. JS的轉向函數是?怎么引入一個外部JS文件?
127. 用javascript取得一個input的值?取得一個input的屬性?
128. 用Jquery取得一個input的值?取得一個input的屬性?
129. 寫一個簡單的jquery顯示隱藏代碼?
130. 假設a.html和b.html在同一個文件夾下面,用javascript實現當打開a.html五秒鐘后,自動跳轉到b.html。
131. 請您寫一段ajax提交的js代碼,或者寫出ajax提交的過程邏輯。
132. SQL: 增加一個字段性別sex,寫出修改語句; 查詢出年齡介于20歲到30歲之間的用戶
133. 寫一個函數,算出兩個文件的相對路徑
134. 寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。
135. Linux的目錄進行遍歷,編寫shell腳本
136. 寫一個函數,盡可能高效的,從一個標準 url 里取出文件的擴展名。例如: http://www.sina.com.cn/abc/de/fg.php?id=1 需要取出 php 或 .php
137. 有一個網頁地址, 比如PHP開發資源網主頁: http://www.phpres.com/index.html,如何得到它的內容?
138. 請寫一個函數,實現以下功能:字符串“open_door” 轉換成 “OpenDoor”、”make_by_id” 轉換成 ”MakeById”。
139. 有一個一維數組,里面存儲整形數據,請寫一個函數,將他們按從大到小的順序排列。要求執行效率高。并說明如何改善執行效率。(該函數必須自己實現,不能使用php函數)
140. 使用php寫一段簡單查詢,查出所有姓名為“張三”的內容并打印出來(PDO實現)
141. 寫出發貼數最多的十個人名字的SQL,利用下表:members(id,username,posts,pass,email)