【轉】2012年6月26 – 盛大PHP工程師最新面試題

來源:互聯網
上載者:User

標籤:

無筆試。

口試:(前半部分平淡無奇,沒什麼太難的問題,都是求職崗位基本要會的東西,局限於php。下面是真正進入狀態的題。)

談談觀察者模式是什嗎?主要應用。

答:類似會有一些server對象時刻偵聽某個對象的一些動作。被監聽的對象也會有這個server列表,或者提供添加列表的介面。促發條件根據需 求。觸發的時候這個object對象會發送本身給這些server列表中的一個方法裡,這樣server也就會取得傳過來的對象實現偵聽。主要應用在外掛程式 上的。

什麼是索引?建立索引有什麼規則?注意點?

答:類似一種目錄表吧,dbms會實現讀寫,mysql在查詢的時候,可以直接去尋找這個目錄表,就不會去掃描整個表了。有什麼注意點嘛?首先我會 看這個表,如果他生來就註定寫多讀少,盡量避免建立很多索引,因為他也會佔用時間,對吧!另外在建立的時候我也會盡量建立在數字欄位上,或者類似使用者名稱 上,這樣做可能,在需求上作select時候不會有like或者其他計算在裡面。也不要有!有的話,不要放在左值上。。。被打斷!

其實我想問是放在查詢語句,select什麼什麼where什麼什麼的什麼地方?

答:哦,放在where後欄位上。

Mysql有幾種引擎?或者你經常使用哪幾個?

答:innodB,myisam,temporary(當時愣是沒讀上來這個單詞,就拼字了)

innodB和myisam有什麼區別?temporary你經常用在什麼地方。

答:一個是行鎖,一個是表鎖,這樣並發程度也就不一樣了。innodB有日誌,然後就能現實事務保證,他也能實現外鍵功能。Myisam在查詢上快 點。檔案方面。Myisam放有三個檔案,在同一的目錄中,資料也會放在其中一個上。而innodB的資料是放在目錄外的idata檔案中。innodB 也能實現這個idata檔案大小的配置,比如可以配置最大為1G,到了這個大小,mysql會自動產生另一個idata檔案。Temporary我會用在 類似使用者登入的session表上。

你有沒有想過為什麼innodB要把資料提到一個檔案中了?而不是想myisam放在自己的檔案中?

答:這個嘛。。。可能是為了什麼查詢方便吧?或者好做日誌,事務吧?瞎扯中。。。

HTTP報文格式是什麼樣的?能大概敘述下嗎?

答:源地址ip與連接埠號碼,目標ip與連接埠號碼,協議類型。(只記得這三個。然後開始瞎扯!)額。。。還有什麼了?請求資料,請求頁面。。。。(面試官愕然!)被打斷!

Tcp三向交握大概是怎麼樣的?

答:先Client發送串連請求報文給Server。Server收到後發送ack確認報文給Client。Client收到確認報文後再發送確認報文給Server。完成三向交握。

這三向交握報文大概是什麼樣的?

答:額。這個嘛。。。client自己產生一個請求序號吧,然後在隨機綁定一個連接埠號碼,發送。對方加一後ack過來。。。。此處省略n字!其實不太懂!扯著玩。被打斷!

HTTP協議中傳輸報文可能被hacker竊取了,並且解密了。你該怎麼做?

答:(日!二進位都給解密了!地球已經不能阻止他了!反正我個小菜是沒辦法了!)額,這個嘛,,,,沒太考慮!我想在傳輸的時候就該把主要的資料加密了再傳輸吧,比如使用者密碼,使用者名稱什麼的,這樣解密了也不要緊吧!至於怎麼加密,用MD5就好了。

瞭解https協議嗎?說說看。

答:怎麼說了,停留在書本知識,從來沒實踐過。是443對吧?額,,,是http的加密連線協定。安全,可靠。然後開始瞎扯。其實不太懂!被打斷!

session和cookie有什麼不同?

答:一個是client-server保持機制,一個是client保持機制。存放的地方也不同。。。被打斷!

恩,好。這些基本的我想你都知道。說說看你對cookie安全方面有什麼考慮?比如他在client端會被篡改,你怎麼做?

答:這個嘛。。。首先密碼和一些重要資料一定不能存。還有就是,把要存放的資料都加密了。比如使用者id,使用者名稱,角色什麼的。。。被打斷!

MD5是無法復原的,你把使用者id加密了,怎麼比配啊?

答:(其實我還真沒吧id加密過!沒辦法硬著頭皮往下說!)額,就匹配吧,在比對的時候,server也進行一次MD5加密,看是否相等就行了!

你對加密有什麼心得?我們都知道MD5解密網站很多了?

答:額,重要資料,不要用簡單的一次MD5加密就行了。比如說,使用者密碼,我們可以給每個使用者一個隨即6位的加密因子。做位處理後再做MD5運算,比如說相與相或什麼的。

你說的密碼因子就是類似密鑰嗎?放在什麼地方?

答:恩,差不多吧。放在使用者表裡,隨機的6為字元,使用者每次登陸完後系統會更新這個欄位與實際的密碼欄位。我現在做系統就是這麼做的。你想啊,在這中間,別人最可能拿到的就是我們加密後的密碼字元。這時候其實很可能已經失效了!

那別人拿到了真正使用者密碼了?

答:這個問題我有想過,後來想想我感覺好像沒辦法了吧!(面試官和我一樣犯過這樣的傻啊,呵呵)

對nosql熟悉嗎?有用過嗎?

答:還行吧。大部分沒太用過。不過memcache用過,很常見,也很容易使用。主要在DB類層做判斷就行了,如果記憶體中已經有了這個索引值對,直接 memcache_connect,然後get資料。不然就去尋找mysql。你想啊,最終我們互動的資料肯定都要到這個DB類抽象層。其他的nosql 如果有需要,我會去看這方面的書!

你對memcache的命中率有跟蹤過嗎?效率怎麼樣?

答:這個嘛。。。這個自己沒有跟蹤過哦,只看過一些大神的部落格比較過他和redis。貌似redis效率更高些(答非所問!)

你接觸過最大的資料量有多少?最多有伺服器?

答:大幾百萬吧。是個社區。有11太伺服器。

對於大資料訪問效率你怎麼處理?

答:首先看是否能搭建分布式環境,做主從資料庫,讀寫分離。讓replication進程實現master-slave同步。

然後再考慮分表。水平、垂直分表都行。用什麼演算法分表看具體業務。比如比較簡單主鍵的奇偶性。還有分表上,我建議用mysql5.1版本以上的邏輯 分表功能模組,先安裝partition,簡單配置下,做不同磁碟的儲存,減少I/O的讀寫(在一次日資企業面試中學到的,然後回來看看,果真牛逼)。

其實這個也沒減少I/O讀寫的。(沒敢反駁!以後要真成了同事,咱們在慢慢討論也不遲。)一般我們做master與slave同步很好處理,假如你發現你的應用中master寫壓力很大,你需要做多個master來分解壓力。你怎麼實現他們之間的同步?

答:這個。。。我還真沒做過多個master。沒考慮過哦。。。

對於分表演算法,你有什麼心得?

答:最簡單的主鍵奇偶性,主要還是看需求,甚至按年份,月份都可以。

這些演算法你怎麼實現查詢定位到具體表?

答:恩,這個因為你所有的資料互動,都要交給類似DB類得抽象層,這裡面我會寫類似find,select的方法,對其傳過來的表參數實現具體演算法 規則上的變換。盡量不要讓運行原生的sql語句。即使運行我也會提供類似可以完成替換資料表的特殊字元串,讓DB類能夠實現替換。比如很多架構會在sql 裡面建議使用者用類似大寫的__TABLE__字串。

接觸過cdn嗎?

答:接觸過,是買的人家cdn,前一家公司是個社區,pv很大。這個是必須要有。

你能大概畫一個web架構圖嗎?比如你們之前11太伺服器怎麼架構的。

答:(一邊畫一邊講)最前面的這個是cdn,接下來這個是負載平衡器。後面有多個web server,每個都用的是nginx接受請求,後端用代理apache做處理。其中有一個當掉,其他伺服器也會正常服務。然後這幾個是主mysql服務 器,後面這幾個是slave。這個是圖片伺服器。

你web頁面上怎麼請求你的圖片伺服器資源。

答:我們這個是單獨的圖片伺服器,使用者上傳圖片的時候時候,資料表裡的欄位會放完整的路徑名,這樣就能請求這個圖片伺服器了。

你們怎麼實現這個圖片伺服器的安全?比如這個伺服器掛掉了。有備份伺服器的話,你怎麼實現同步?

答:淩晨2點。呵呵。

那隻能實現時間段得備份吧!比如在某天淩晨2點之前伺服器掛了,當天的圖片除了cdn上會有臨時儲存,其他就沒了?

答:這個嘛。。。恩,肯定的。那我也不能在每個請求做一次同步吧。這個嘛。。。省略n個字,又到扯著玩時候了。。。

對web server熟悉嗎?對linux熟悉嗎?對shell熟悉嗎?

答:(實踐表明,對這個面試官,不懂不要瞎扯,會帶你到溝裡去!)apache還行吧,能配置。Nginx,弱一點,有需要我可以學習。Linux的話,不太在行,缺少實踐經驗,理論知識還行。shell命令都還記得。

 

然後這個面試官走了。又來了一個面試官!

你說你們現在的平台要做java到php轉換。你們要接觸java嗎?為什麼要轉換了?

答:不會接觸java。兩個系統是平行使用的,目前也不會取代這個系統。聽說是ceo不滿意目前的這個java外包系統。所以要改的。

CEO不滿意?這個理由不充分哦?

答:這個嘛。。。這個我也不知道哦。就聽說ceo不滿意的。

你在這個系統中做什嗎?

答:省略n個字。

你對linux c熟悉嗎?linux shell指令碼了?

答:linux c一點不會!linux shell指令碼還行,不過缺少實踐。

面試結束。2多個小時!!!!最後HR過來說,今天的面試就到這裡了,這邊請。尼瑪,還有幾輪了啊!!!果真巨頭就要耍大牌嗎!

 

 

摘自:http://www.lnmper.net/?p=25

 

 

【轉】2012年6月26 – 盛大PHP工程師最新面試題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.