1. 程式人生 > >一位資深php程序員在北京的面試30個題目

一位資深php程序員在北京的面試30個題目

sta nod nbsp 大致 機制 管理 mysql- 授權 根據

1、SESSION 保存在服務器的哪裏?
2、服務端是如何獲取客戶端的cookie?
3、如何實現SESSION共享,共享的原理是什麽?
4、請大致說出LVS搭建的過程,文件共享原理是什麽?
5、網絡共享服務器上傳數據是向一臺服務器上傳?還是多臺?如何實現同步?
6、說出你所知道的數據庫設計範式?常用的建模工具是什麽?(mysql建模工具)
7、如果你是項目經理,你如何管理你的項目團隊的日常事宜?
8、主從數據庫的配置,都需要哪些基本的條件,需要配置什麽內容?
9、說出你常用的版本控制器,SVN中需要配置哪幾個配置文件
10、LVS 在項目運行之前需要註意哪些事項,或者說會出現什麽問題?
11、ecshop為何出現字段冗余違犯設計模式,請說出為何這麽做?
12、常用mysql優化方式,盡可能多的說?
13、memcache原理是什麽?是否能存入2M的value?
14、什麽是隊列?排它鎖,Myisam 死鎖如何解決?
15、請說出mysql常用存儲引擎?memory存儲引擎的特點?
16、如何最快速的插入5000條以上的數據?
17、你用過多少開源框架?
18、ecshop 購物車信息存放在哪裏?
19、PHP生成頁面緩存的原理

20、你所知道的緩存技術有哪些,分別做下簡單介紹

------------------------------------------------------------------------------------------------

1、SESSION 保存在服務器的哪裏?
答:通過php.ini指定,可存在指定目錄的文件中或內存中,或數據庫中!

2、服務端是如何獲取客戶端的cookie?
答:服務器每次處理請求的進候都可以抓取頭信息的cookie並設置返回,

3、如何實現SESSION共享,共享的原理是什麽?
答:配置主從數據庫,將SESSION存入主數據庫中,常見的做法還有在各服務器端安裝MEMCAHCE,將SESSION存入各MEMCACHE中,

4、請大致說出LVS搭建的過程,文件共享原理是什麽?
5、網絡共享服務器上傳數據是向一臺服務器上傳?還是多臺?如何實現同步?

6、說出你所知道的數據庫設計範式?常用的建模工具是什麽?(mysql建模工具)
答:1NF:每一條滿足原子性,不可以分割;2NF:每一條記錄要滿足唯一性,3NF:字段不冗余,有時我們還需要反三範式,常用的建模工具:phpMyAdmin,navicat for mysql,DOS命令行;

7、如果你是項目經理,你如何管理你的項目團隊的日常事宜?

8、主從數據庫的配置,都需要哪些基本的條件,需要配置什麽內容?
答:基本條件:二臺以上數據庫服務器,
配置流程:1.分別打開主從服務器的bin-log;從服務器+relaylog
2.在主服務器根據需求建立相應的帳號並授權;
3.從服務器使用己創建好的帳號連接主服務器讀取二進制文件並分析後同步
配置項:主:log-bin=mysql-bin;server-id=num(int);binlog-format=mixd/statement/row/
從:log_bin=mysql-bin;server-id=num(int)//唯一;relay_log=mysql-relay-bin;log_slave_updates=1;relay_only=1;

9、說出你常用的版本控制器,SVN中需要配置哪幾個配置文件
答:SVN,GIT,CVS;配置文件:mod_authz_svn.so mod_dav_svn.so移至服務器模塊中並加載,配置權限,分配用戶;

10、LVS 在項目運行之前需要註意哪些事項,或者說會出現什麽問題?

11、ecshop為何出現字段冗余違犯設計模式,請說出為何這麽做?
答:在某些環境下反三範式反而增加了效率,因此這麽做!

12、常用mysql優化方式,盡可能多的說?
答:SQL語句優化;存儲優化;數據庫配置;服務器配置

13、memcache原理是什麽?是否能存入2M的value?
答:采用C/S模式,協義是普通文本,基於libevent機制處理數據放在內存中;memcache最大只能存入1MB數據,memcache並非為存儲大數據而生,但可以考慮在存儲前將值先壓縮或拆分成多值分配到多個key中!

14、什麽是隊列?排它鎖,Myisam 死鎖如何解決?
答:在默認情況下MYisam是表級鎖,所以同時操作單張表的多個動作只能以隊列的方式進行;
排它鎖又名寫鎖,在SQL執行過程中為排除其它請求而寫鎖,在執行完畢後會自動釋放;
死鎖解決:先找到死鎖的線程號,然後殺掉線程ID

15、請說出mysql常用存儲引擎?memory存儲引擎的特點?
答:Myisam、InnoDB、memory,memory的特點是將表存到內存中,數度快,重啟後數據丟失!


16、如何最快速的插入5000條以上的數據?

答:先生成數據文件,在用sql語句導入


17、你用過多少開源框架?
答:TP/CI/ZF/YII


18、ecshop 購物車信息存放在哪裏?
答:order_info;order_goods;order_action;

19、PHP生成頁面緩存的原理
答:將緩存內容放入OB緩存中,在OB緩存結束或腳本執行完畢後放入到程序緩存未尾並返回!

20、你所知道的緩存技術有哪些,分別做下簡單介紹
答:ob緩存,通過模板技術寫入文件類緩存;memcache;redis;redis和memcache最顯著的區別在於數據不僅並於內存中,同時還會在磁盤中生成文件,即使重啟,數據亦可被加載;

21、HTTP 協議的原理,什麽是全雙工,什麽是半雙工?
答:HTTP協議是一種無狀態的協義,直白的講就是請求和響應,全雙工是指請求和響應同時進行,半雙工指單個執行;

22、ucenter通信原理?

答:就是某個應用登陸後,然後後臺輪詢發送給同步登陸的應用的回調文件 ,回調文件接收到用戶ID之後,生成cookie或者session然後進入登陸模式。

23、Memcached的原理

答:memcached 是以守護程序方式運行於一個或多個服務器中,等待接收客戶端的連接操作,客戶端可以由各種語言編寫(例如PHP)。PHP 等客戶端在與 memcached 服務建立連接之後,接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內存中的,並不是保存在 cache 文件中的,這也是為什麽 memcached 能夠如此高效快速的原因。

24、你用過多少種JS框架?舉例說明優缺點
答:jQuery、prototype、dojo、ext、YUI;
jQuery:強大的DOM節點查詢無人能出其左右,動畫操方便; DOM封裝的很好!高低版本兼容非常好
prototype:較早的jS庫,對ajax支持較好,基於原型鏈面向對象很強大
dojo:更容易俁WEB頁面具有動態能力;
ext:強大的UI操作高居榜首;
YUI:強大的類庫,提供很多方法;

25、如何衡量AJAX的使用(何時使用AJAX)
答:AJAX既稱無刷新技術,常用見的使用場景:表單驗證,用戶評分、點擊;只要需要實時的與服務器交互時即可使用;
26、什麽是推技術,實現原理是什麽?
答:推技術又稱COMET,即在客戶請求時在服務器掛起長連接,一旦服務器有了新數據,它降立即反回給客戶端,實時性好;

27、什麽是垂直搜索,斯芬克斯中分詞原理?
答:垂直搜索是指在特定的範圍內搜索的上下文,搜索面只會越來越精細,而非越來越廣泛;sphinx分詞的原理:將文本拆分為多個單詞從數據源的各個文檔對像創建索引並將索引表存儲於內存中!

28、sphinx中無法ha_sphinx.so是用來做什麽的?
答:一個sphinx的存儲模塊;

29、PHP常用的合並數組的方式?
答:array_mergn;array_mergn_recursive;

30、回答PHP讀取文件速度快,還是讀取mysql的數據快?為何?
答:一般情況下讀文件》讀數據庫;不同情況速度也會反向,如:數據庫數據量很小,而同目錄文件又非常多的情況下,讀數據庫大於讀文件;

一位資深php程序員在北京的面試30個題目