1. 程式人生 > >《PHP程式設計師面試筆試寶典》——如何回答技術性的問題?

《PHP程式設計師面試筆試寶典》——如何回答技術性的問題?

如何巧妙地回答面試官的問題?

本文摘自《PHP程式設計師面試筆試寶典》

程式設計師面試中,面試官會經常詢問一些技術性的問題,有的問題可能比較簡單,都是歷年的面試、筆試真題,求職者在平時的複習中會經常遇到。但有的題目可能比較難,來源於Google、Microsoft等大企業的題庫或是企業自己為了招聘需要設計的題庫,求職者可能從來沒見過或者不能完整地、獨立地想到解決方案,而這些題目往往又是企業比較關注的。

如何能夠回答好這些技術性的問題呢?編者建議:會做的一定要拿滿分,不會做的一定要拿部分分。即對於簡單的題目,求職者要努力做到完全正確,畢竟這些題目,只要複習得當,完全回答正確一點問題都沒有(編者認識的一個朋友曾把《程式設計之美》《程式設計珠璣》《程式設計師面試筆試寶典》上面的技術性題目與答案全都背熟,找工作時遇到該類問題解決得非常輕鬆);對於難度比較大的題目,不要驚慌,也不要害怕,即使無法完全做出來,也要努力思考問題,哪怕是半成品也要寫出來,至少要把自己的思路表達給面試官,讓面試官知道你的想法,而不是完全回答不會或者放棄,因為面試官很多時候除了關注求職者的獨立思考問題的能力以外,還會關注求職者技術能力的可塑性,觀察求職者是否能夠在別人的引導下去正確地解決問題。所以,對於不會的問題,面試官很有可能會循序漸進地啟發求職者去思考,通過這個過程,讓面試官更加了解求職者。

一般而言,在回答技術性問題時,求職者大可不必膽戰心驚,除非是沒學過的新知識,否則,一般都可以採用以下六個步驟來分析解決。

(1)勇於提問

面試官提出的問題,有時候可能過於抽象,讓求職者不知所措,或者無從下手,因此,對於面試中的疑惑,求職者要勇敢地提出來,多向面試官提問,把不明確或二義性的情況都問清楚。不用擔心你的問題會讓面試官煩惱,影響面試成績,相反還對面試結果產生積極的影響:一方面,提問可以讓面試官知道求職者在思考,也可以給面試官一個心思縝密的好印象;另一方面,方便後續自己對問題的解答。

例如,面試官提出一個問題:設計一個高效的排序演算法。求職者可能沒有頭緒,排序物件是連結串列還是陣列?資料型別是整型、浮點型、字元型還是結構體型別?資料基本有序還是雜亂無序?資料量有多大,1000以內還是百萬以上?此時,求職者大可以將自己的疑問提出來,問題清楚了,解決方案也自然就出來了。

(2)高效設計

對於技術性問題,如何才能打動面試官?完成基本功能是必需的,僅此而已嗎?顯然不是,完成基本功能最多隻能算及格水平,要想達到優秀水平,至少還應該考慮更多的內容,以排序演算法為例:時間是否高效?空間是否高效?資料量不大時也許沒有問題,如果是海量資料呢?是否考慮了相關環節,如資料的“增刪改查”?是否考慮了程式碼的可擴充套件性、安全性、完整性以及魯棒性。如果是網站設計,是否考慮了大規模資料訪問的情況?是否需要考慮分散式系統架構?是否考慮了開源框架的使用?

(3)虛擬碼先行

有時候實際程式碼會比較複雜,上手就寫很有可能會漏洞百出、條理混亂,所以求職者可以首先徵求面試官的同意,在編寫實際程式碼前,寫一個虛擬碼或者畫好流程圖,這樣做往往會讓思路更加清晰明瞭。

(4)控制節奏

如果是演算法設計題,面試官都會給求職者一個時間限制用以完成設計,一般為20min。完成得太慢,會給面試官留下能力不行的印象,但完成得太快,如果不能保證百分百正確,也會給面試官留下毛手毛腳的印象。速度快當然是好事情,但只有速度,沒有質量,速度快根本不會給面試加分。所以,編者建議,回答問題的節奏最好不要太慢,也不要太快,如果實在是完成得比較快,也不要急於提交給面試官,最好能夠利用剩餘的時間,認真檢查一些邊界情況、異常情況及極性情況等,看是否也能滿足要求。

(5)規範編碼

回答技術性問題時,多數都是紙上寫程式碼,離開了編譯器的幫助,求職者要想讓面試官對自己的程式碼一看即懂,除了字跡要工整外,最好是能夠嚴格遵循編碼規範:函式變數命名、換行縮排、語句巢狀和程式碼佈局等。同時,程式碼設計應該具有完整性,保證程式碼能夠完成基本功能、輸入邊界值能夠得到正確的輸出、對各種不合規範的非法輸入能夠做出合理的錯誤處理,否則寫出的程式碼即使無比高效,面試官也不一定看得懂或者看起來非常費勁,這些對面試成功都是非常不利的。

(6)精心測試

任何軟體都有bug,但不能因為如此就縱容自己的程式碼,允許錯誤百出。尤其是在面試過程中,實現功能也許並不十分困難,困難的是在有限的時間內設計出的演算法,各種異常是否都得到了有效的處理,各種邊界值是否都在演算法設計的範圍內。

測試程式碼是讓程式碼變得完備的高效方式之一,也是一名優秀程式設計師必備的素質之一。所以,在編寫程式碼前,求職者最好能夠了解一些基本的測試知識,做一些基本的單元測試、功能測試、邊界測試以及異常測試。

在回答技術性問題時,千萬別一句話都不說,面試官面試的時間是有限的,他們希望在有限的時間內儘可能地多瞭解求職者,如果求職者坐在那裡一句話不說,不僅會讓面試官覺得求職者技術水平不行,思考問題能力以及溝通能力可能都存在問題。

其實,在面試時,求職者往往會存在一種思想誤區,把技術性面試的結果看得太重要了。面試過程中的技術性問題,結果固然重要,但也並非最重要的內容,因為面試官看重的不僅僅是最終的結果,還包括求職者在解決問題的過程中體現出來的邏輯思維能力以及分析問題的能力。所以,求職者在與面試官的“博弈”中,要適當地提問,通過提問獲取面試官的反饋資訊,並抓住這些有用的資訊進行輔助思考,進而提高面試的成功率。

 

更多有趣有料的PHP面試筆試資料可以關注:“琉憶程式設計庫”

或者瀏覽:www.shuaiqi100.com 獲取。

 

PHP程式設計師面試筆試寶典下載:https://pan.baidu.com/s/1-ES2ZI3z5Lhv-zTKFmJDSQ