面試php工程師出什麼考題好?


1 介紹自己過去工作中,或學習中,最能體現自己價值的成就。

-&> 等介紹完後,這個成就實現時,遇到過怎樣的困難,如何解決的。

2 解釋一下SQL注入的原理及危害,假設這裡有一個不嚴謹的登陸程序,如何利用SQL注入進入。

3 解釋一下跨站腳本的原理及危害,假設這裡有一個不嚴謹的留言板,請構造跨站腳本範例。

4 解釋一下數據索引為什麼能提高效率。

場景SQL select * from user where area="廣州『 and sex="女『 order by lastlogin desc limit 30;

如何設計索引?

現在有10萬條 IP地址對應區間表,格式為 startip, endip, area

要求每個用戶訪問時都能快速分析出對方地區,請設計實現。資料庫或不用資料庫,要求每秒鐘實現超過千次的查詢。

基本上到這些對我而言就已經足夠了,如果上面題目特別滿意的,再附加

5 現在有一個屏蔽詞列表,大約幾千個詞;假設有一個繁忙的論壇社區,發帖量巨大,要求用戶每發一篇文章就要快速分析是否包含屏蔽詞,請給出程序設計。

6 一個遊戲網站,有數千個小遊戲,每個遊戲要做積分排行,數據結構如下

gameid,userid,gamescore

每天數百萬積分提交,數據量巨大,目前要求分庫處理。

要求,可以基於每個遊戲id可以查詢積分排行榜。 可以基於用戶id查詢,比如自己或好友的歷史遊戲積分記錄。請問如何處理分庫。

最後,你有什麼要問的?


我諮詢了一下我身邊的一位很牛PHP程序員,他也是我的面試官,他的回答如下(非原話):

1.PHP基本功,字元串與數組

2.網路功能,發起curl,socket編程等

3.對網路開發的理解,tcp/udp, http 協議的討論

PS:對具體函數的掌握要求不高,反正可以查手冊。

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

以上


上面匿名用戶整理的挺全的,值得參考。

工程師能否勝任某個崗位很大程度上受專業程度、周邊知識、溝通能力、主動工作的意願等多方面因素影響,對每個Team來說需要考核的重點是有區別的,一般會在面試過程中根據實際情況組合考察。

專業程度體現在對PHP的基本功的掌握和一些進階知識的了解,比如對常見性能點、不同版本特性等,session的實現機制、include/require的差異,進一步的主流框架掌握程度、常見的性能優化策略、其作為腳本語言所具備的一些特性、如何規避PHP的性能劣勢打造高並發的系統、如何保證高並發下的可用性和數據完整性等等。

周邊知識主要會包括MySQL性能優化、Memcache使用、Nginx/Apache的配合、對於PV/Click等數據收集和觀察的方法等。 同樣的,利用curl/socket操作http/tcp/udp,進一步的RPC調用(Web Service/JSONP/Thrift等)的前後端實現,進一步的包括更多的Cache策略(遠近、一致性哈希、數據一致性)、對Sharding即分庫分表之類操作的了解、更多NoSQL產品知識、各類常見協議細節、安全性(注入和旁註、跨站和CC)等。

溝通能力從「簡單介紹下自己」、「說說你在最近參與的項目中所做的事情」開始,根據其回答,進一步細化到考察是否能和業務部門、產品經理、運營人員自如溝通的「需求總是變更怎麼辦」、「怎麼看待業務人員或產品經理提出的似乎並不合理的需求」、「作為一個開發人員,如何知道自己參與的某個項目在用戶眼裡做得好不好」等;考察團隊領導能力的「作為一個小團隊的Leader,你覺得帶好團隊最重要的點有哪些」、「團隊里的工程師總是晚來早走/開小差,做為主管怎麼處理這些問題」、「被分派到一個重要項目,如何激勵團隊儘快完成項目」等;考察其作為工程師個體,是否具備更全面的視角(從產品、設計、業務等角度看待問題的能力)的「讓你運營一個論壇系統/企業微博賬號,你會怎麼做」、「作為一個XX產品的工程師,如何從技術的角度幫助運營人員提高ROI」等;考察發現和總結問題能力的「我暫時沒有其他問題了,你有什麼問題需要問我嗎」。

主動工作的意願則往往是通過了解其對加班的看法、對代碼質量的態度、如何提高團隊工作效率、對其參與的項目的一些細節的追問、如何提高參與的項目的代碼質量或運營產出、個人興趣愛好、以往的得意之作等側面的了解。


不太認可目前排名第一的答案,有些問雖然面試的時候不知道,但是可以Google的啊.難道考歷史的時候,問:曹操出生於哪個時辰? 能夠知道的算是歷史了解得多嗎?不一定吧.

我覺得,一個程序員的能力,是如果把具體的問題抽象出模型來.


0.簡單做一下自我介紹,? 然後談一下近三年來你的得意之作?

1.看看簡歷,會問一些過去做的項目的用戶量、pv、吞吐量、相關難點和解決方法等

2.資料庫設計經驗,為什麼進行分表? 分庫?

一般多少數據量開始分表? 分庫? 分庫分表的目的? 什麼是資料庫垂直拆分? 水平拆分? 分區等等?可以舉例說明

3.資料庫優化有哪些? 分別需要注意什麼?

4.web開發方面會遇到哪些緩存? 分別如何優化?

5.給你256M的內存,對10G的文件進行排序(文件每行1個數字),如何實現?

對10G的文件進行查找如何實現?

統計10G文件每個關鍵字出現的次數如何實現?

6.假如你現在是12306火車訂票的設計師,你該如何設計滿足全國人民訂票?

7.假如有1億用戶的訪問量,你的伺服器架構是怎樣的? 用戶信息的存儲方案如何設計?

8.如果你是技術組長,所帶團隊任務進度無法完成你該如何解決?

如果在進度排滿的前提下插入任務,你該如何保證總進度不延期?

如果有的工程師今天預定任務沒有完成,你該如何解決?

9.從你的經驗方面談一下如何構建高性能web站點? 需要哪些環節? 步驟? 每個步驟需要注意什麼如何優化等?

10. 為什麼要對資料庫進行主從分離?

11. 如何處理多伺服器共享session?

12. 一個10G的表,你用php程序統計某個欄位出現的次數,思路是?

13. 會告訴你一個nginx日誌例子,用你認為最佳的編程語言統計一下http響應時間超過1秒的前10個url?

14. 給你一個mysql配置文件,用你認為最佳的編程語言解析該文件?

15. 給你兩個路徑a和b,寫一個演算法或思路計算a和b差距幾層並顯示a和b的交集?

16. 給你一個url,在nginx配置一下rewrite指定到某個具體路徑?

17. 一個php文件的解釋過程是? 一般加速php有哪些? 提高php整體性能會用到哪些技術?

18. session和cookie生存周期區別? 存儲位置區別?

19. require、include、require_once、include_once區別? 載入區別? 如果程序按需載入某個php文件你如何實現?

20. chrome號稱為多線程的,所以多線程和多進程的區別為?

21. php在2011年底出現hash碰撞,hash碰撞原理為? 如何進行修復?

22. web不安全因素有哪些? 分別如何防範?

23. 假如兩個單鏈表相交,寫一個最優演算法計算交點位置,說思路也可以?

24. 假如你是技術組長? 如何提高團隊效率?

25. nginx負載均衡有哪些? 如果其中一台伺服器掛掉,報警機制如何實現?

26. 不優化前提下,apache一般最大連接數為? nginx一般最大連接數為? mysql 每秒insert ? select ? update ? delete?

27. mysql 數據類型有哪些 ? 分別佔用多少存儲空間 ?

28. nginx設置緩存js、css、圖片等信息,緩存的實現原理是?

29. 如何提高緩存命中率? 如何對緩存進行顆粒化?

30. php的內存回收機制是?

31. 我的所有問題都問完了,你有什麼問題問我沒有?


謝邀,在公司作為面試官只面試過初中級水平的PHP程序員,對他們的要求基本上是能夠幹活,高級的PHPer的面試需要面哪些知識點我並不是很有經驗,在這裡只談一下面試初中級別的PHPer。

先做一套面試題,題目基本上是基礎的PHP語法,資料庫設計和資料庫優化,Linux基礎,會在最後涉及一些深一點的內容。

根據簡歷和面試題的答題情況,針對他熟悉的項目進行深入。比如他做過用戶相關,那我就問問session、cookie區別;實際用戶登錄時客戶端和伺服器端發生了哪些事情;改寫過session 的存儲嗎;資料庫設計是什麼樣的;密碼怎麼處理;怎麼實現一個定時退出的系統等等。如果用過框架,那就問問對於mvc模式有自己的考慮嗎;路由的原理是什麼。。。

基本上根據答題情況,能夠篩選一些還可以的PHPer,但是實際效果還是有一些不足之處。我以前招進來一個同事,面試的時候面的頭頭是道,但進入具體的項目中,對業務邏輯的理解讓人抓狂,出東西慢並且代碼寫的很不好。後來就增加了一些針對業務邏輯的面試題,並且要求面試人員手寫一些代碼。

感覺我的答案可能不對題啊,更像是對如何面試PHPer的答案。


面試php工程師取決於面試官的角色

1,面試官是業務面試官還是hr。兩個角色的思路和方向是不同的。

2,業務面試官的考題應該是針對專業技能方面。通常是由同崗位專業技能較強的同事來放任或是業務主管。但注意麵試是為了了解對方的技能結構而不是要考倒他

3,hr方面則是從求職動機,期望的工作環境薪資待遇是否和公司匹配,注意用工風險方面。


出一些和日誌相關的題目。

很多網路上的php源代碼,極少會在項目中使用日誌框架或者自己構建一個簡單的日誌系統。導致項目規模變大之後,測試,在線運行情況檢查和修改BUG都變的困難無比。

有不少自學php的同學很自然的也就沒有日誌的概念。

日誌是系統工業化設計的一個重要的部分。考察這個,准沒錯。


正則表達式和輸入轉義別忘了


面試一些基礎的php,在這要讓年是這禽獸橋一百年代碼


把公司遇到過的問題或業務由易到難各抽一些,讓面試者提出解決方案或思路。


感覺不要面試什麼過於理論的東西

而是解決實際問題的能力!


推薦閱讀:

Web後台語言的選擇?
什麼開發語言可以替代PHP?
微軟.Net架構現在被不少人吐槽「老掉牙」,相比其它技術(如php)它是否真的失去優勢?
大部分已經幹了兩三年的程序員水平是怎樣的?
如何對程序員績效考核?

TAG:面試 | PHP | 程序員面試 | PHP程序員 |