珍藏BAT php編程面試100題匯總(一)

分享PHP之父的趣事:在家附近的意大利飯館用餐時,Rasmus Lerdorf意識到他吃的那盤意麵正好是一個用來理解WWW萬維網的極好模型,而所有的Web應用都應該仿照它們的媒介那樣去做。在他的餐巾的背後,他 設計出了著名的“可編程超鏈接Pasta(Programmable Hyperlinked Pasta,PHP)”語言。PHP的文檔至今仍然保留在那片餐巾上。

珍藏BAT php編程面試100題彙總(一)

LOOK! LOOK !這就是別人家的孩子呀!連吃飯都在思考問題。(吹捧完大神,我們還是踏踏實實來掌握面試題吧!)

1,Http 和Https的區別

第一:http是超文本傳輸協議,信息是明文傳輸,https是具有安全性的ssl加密傳輸協議

第二:http和https使用的是完全不同的連接方式,端口也不一樣,前者80 或者443

第三:http連接很簡單,是無狀態的。https協議是由ssl+http協議構建的可進行加密傳輸,身份認證的網絡協議。

2.什麼方法來加快頁面的加載速度

1,用到服務器資源時在打開,不用時,立即關閉服務器資源。

2,數據庫添加索引

3,頁面可生成靜態

4,圖片等大文件單獨放在一個服務器

5,能不查詢數據庫的儘量不去數據取數據,可以放在緩存中。

3.表單中 get與post提交方法的區別?

答:get是發送請求HTTP協議通過url參數傳遞進行接收,而post是實體數據,可以通過表單提交大量信息.

4.echo ,print,print_r 的區別?

echo 是php語句,無返回值。

print,print_r是函數,有返回值。

print() 只能打印出簡單類型變量的值(如int,string)

print_r() 可以打印出複雜類型變量的值(如數組,對象)

echo 輸出一個或者多個字符串

5.session與cookie區別?

session與cookie相同:跨頁面、不跨用戶

session與cookie不相同:

1、session可以存儲任意類型的數據,但cookie只能存儲字符串

2、cookie產生在服務器端、存儲在客戶端

session產生在服務器端、存儲在服務器端

6.魔術常量

__LINE__文件中的當前行號。

__FILE__文件的完整路徑和文件名。

__FUNCTION__函數名稱

__CLASS__類的名稱

__METHOD__類的方法名

7.數據庫中的事務是什麼?

答:事務(transaction)是作為一個單元的一組有序的數據庫操作。如果組中的所有操作都成功,則認為事務成功,即使只有一個操作失敗,事務也不成功。如果所有操作完成,事務則提交,其修改將作用於所有其他數據庫進程。如果一個操作失敗,則事務將回滾,該事務所有操作的影響都將取消。

8.1、優化MYSQL數據庫的方法。

1、選擇合適的字段的數據類型

1)能用數字不用字符串

2)char、varchar、text 能用varchar不用char

3)給字段加not null 避免在表中出現NULL關鍵字(default 值)

2、選擇合適的字段充當主鍵

1)建議每張表必須有主鍵

2)用數字類型的字段充當主鍵

拆分表

拆分字段,將文章的標題與內容分開

2)拆分記錄,將今年的記錄與往年的記錄分開

給字段合理添加索引

a.格式:

(普通索引)->

創建:CREATE INDEX ON tablename (索引字段)

修改:ALTER TABLE tablename ADD INDEX [索引名] (索引字段)

創表指定索引:CREATE TABLE tablename([...],INDEX[索引名](索引字段))

(唯一索引)->

創建:CREATE UNIQUE ON tablename (索引字段)

修改:ALTER TABLE tablename ADD UNIQUE [索引名] (索引字段)

創表指定索引:CREATE TABLE tablename([...],UNIQUE[索引名](索引字段))

(主鍵)->

它是唯一索引,一般在創建表是建立,格式為:

CREATA TABLE tablename ([...],PRIMARY KEY[索引字段])

5、事務處理:

a.保證數據完整性,例如添加和修改同時,兩者成立則都執行,一者失敗都失敗

mysql_query("BEGIN");

mysql_query("INSERT INTO customerinfo (name) VALUES ('$name1')";

mysql_query("SELECT * FROM `orderinfo` where customerid=".$id");

mysql_query("COMMIT");

6、鎖定表,優化事務處理:

a.我們用一個 SELECT 語句取出初始數據,通過一些計算,用 UPDATE 語句將新值更新到表中。

包含有 WRITE 關鍵字的 LOCK TABLE 語句可以保證在 UNLOCK TABLES 命令被執行之前,

不會有其它的訪問來對 inventory 進行插入、更新或者刪除的操作

mysql_query("LOCK TABLE customerinfo READ, orderinfo WRITE");

mysql_query("SELECT customerid FROM `customerinfo` where id=".$id);

mysql_query("UPDATE `orderinfo` SET ordertitle='$title' where

customerid=".$id);

mysql_query("UNLOCK TABLES");

7、使用外鍵,優化鎖定表

a.把customerinfo裡的customerid映射到orderinfo裡的customerid,

任何一條沒有合法的customerid的記錄不會寫到orderinfo裡

CREATE TABLE customerinfo(

customerid INT NOT NULL,

PRIMARY KEY(customerid)

)TYPE = INNODB;

CREATE TABLE orderinfo(

orderid INT NOT NULL,

customerid INT NOT NULL,

PRIMARY KEY(customerid,orderid),

FOREIGN KEY (customerid) REFERENCES customerinfo

(customerid) ON DELETE CASCADE

)TYPE = INNODB;

注意:'ON DELETE CASCADE',該參數保證當customerinfo表中的一條記錄刪除的話同時也會刪除order

表中的該用戶的所有記錄,注意使用外鍵要定義事務安全類型為INNODB;

8、優化查詢語句

a用內連接代替子查詢代替子查詢,用sphinx代替like模糊查詢

b最好在相同字段進行比較操作,在建立好的索引字段上儘量減少函數操作

例子1:

SELECT * FROM order WHERE YEAR(orderDate)<2008;(慢)

SELECT * FROM order WHERE orderDate

例子2:

SELECT * FROM order WHERE addtime/7<24;(慢)

SELECT * FROM order WHERE addtime<24*7;(快)

例子3:

SELECT * FROM order WHERE title like "%good%";

SELECT * FROM order WHERE title>="good" and name

緩存,靜態化

選擇合適存儲引擎用Innodb增刪改,用myisam查詢

主從數據庫

負載均衡

最好拿數字類型的字段充當where條件

最好拿相同類型的字段進行比對(避免發生數據類型的轉換)

不要在具有索引的字段上添加數據庫函數(索引失效)

8.2、請簡述項目中優化sql語句執行效率的方法,從哪些方面,sql語句性能如何分析?

答:(1)選擇最有效率的表名順序

(2)WHERE子句中的連接順序

(3)SELECT子句中避免使用‘*’

(4)用Where子句替換HAVING子句

(5)通過內部函數提高SQL效率

(6)避免在索引列上使用計算。

(7)提高GROUP BY 語句的效率, 可以通過將不需要的記錄在GROUP BY 之前過濾掉。

9.對於大流量網站,採用什麼方法解決訪問量問題?

1,確認服務器的硬件是否足夠支持當前的流量

2,優化數據庫的訪問

3,禁止外部的盜鏈

4,控制大文件的下載

5,使用不同主機分流主要流量

6,使用流量分析統計軟件

10、一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾

珍藏BAT php編程面試100題彙總(一)

寫一個函數,能夠遍歷一個文件夾下的所有文件和子文件夾。

珍藏BAT php編程面試100題彙總(一)

11、能夠使HTML和PHP分離開使用的模板(1分)

答:Smarty,Dwoo,TinyButStrong,Template Lite,Savant,phemplate,XTemplate

12、使用哪些工具進行版本控制?(1分)

答:cvs,svn,vss;

13、如何實現字符串翻轉?(3分)

英文:

strrev($a)

中文或其他文字:

中文:GB2312, 代碼是使用GB2312編碼

珍藏BAT php編程面試100題彙總(一)

14、PHP的意思

PHP是一個基於服務端來創建動態網站的腳本語言,您可以用PHP和HTML生成網站主頁

15、MYSQL取得當前時間的函數是?,格式化日期的函數是

答:now(),date()

16、用PHP寫出顯示客戶端IP與服務器IP的代碼

答:打印客戶端IP:echo $_SERVER[‘REMOTE_ADDR’]; 或者: getenv('REMOTE_ADDR');

打印服務器IP:echo gethostbyname("www.bolaiwu.com")

17、語句include和require的區別是什麼?為避免多次包含同一文件,可用(?)語句代替它們?

答:require->require是無條件包含也就是如果一個流程里加入require,無論條件成立與否 都會先執行require

include->include有返回值,而require沒有(可能因為如此require的速度比include快)

注意:包含文件不存在或者語法錯誤的時候require是致命的,include不是

18、http請求返回狀態碼

400 請求無效

403 請求被禁止

404 請求資源不存在

405 請求資源被禁止

406 無法接受

407 要求代理身份驗證

500 Internal Server Error 服務端源代碼錯誤

600 源站沒有返回響應頭部,只返回實現內容

600 屬主有讀寫權限

644 屬主有讀寫權限,屬性組有讀權限

700 屬主有讀寫執行權限

755 屬主有讀寫執行權限,屬性組有讀,執行權限

711 屬主有讀寫執行權限,屬性組有執行權限

666 所有用戶都有文件的讀寫權限

777 所有用戶都有文件的讀寫執行權限

20.有一個網頁地址, 比如PHP開發資源網主頁:

http://www.phpres.com/index.html,如何得到它的內容?

答:方法1(對於PHP5及更高版本):

珍藏BAT php編程面試100題彙總(一)

方法2:

珍藏BAT php編程面試100題彙總(一)

珍藏BAT php編程面試100題彙總(一)

更多面試題持續更新中~


分享到:


相關文章: