程序員在面試中,面試官常常會提出一些技術性的問題。有的面試題是歷年的筆試面試真題,求職者在平時的復習中可能會經常遇到,自然能夠應付自如。而有的題目來源于Google、Microsoft等大企業的題庫,或是企業自己為了招聘需要設計的題庫,這些對于求職者來說相對難些,可能從來沒見過或是從來都不能完整地、獨立地想到解決方案,而這些題目往往又是企業比較關注的。
如何能夠回答好這些技術性的問題呢?對于簡單的題目,求職者要努力做到完全正確,畢竟這些題目,只要復習得當,完全回答正確一點問題都沒有。而對于難度比較大的題目,不要驚慌,也不要害怕,即使無法完全做出來,也要學會思考問題,哪怕是半成品也要寫出來,至少要把自己的思路表達給面試官,讓面試官知道你的想法,而不是完全回答不會或是放棄。很多時候,面試官除了關注你的獨立思考問題的能力以外,還會關注你技術能力的可塑性,觀察求職者是否能夠在別人的引導下去正確地解決問題,所以,對于你不會的問題,他們很有可能會循序漸進地啟發你去思考,通過這個過程,讓他們加了解你。
一般而言,在回答技術性問題時,求職者大可不必膽戰心驚,除非是沒學過的新知識,否則,一般都可以采用以下六個步驟來分析解決。
(1)勇于提問
面試官提出的問題,有時候可能過于抽象,讓求職者不知所措,或是無從下手,所以,對于面試中的疑惑,求職者要勇敢的提出來,多向面試官提問,把不明確或是二義性的情況都問清楚。不用擔心你的問題會讓面試官煩惱,影響你的面試成績,相反還對面試結果產生積極影響:一方面,可以給面試官一個心思縝密的好印象;另一方面,方便后續自己對問題的解答。
例如,面試官提出一個問題:設計一個的排序算法。求職者可能丈二的和尚摸不到頭腦,排序對象時鏈表還是數組?數據類型是整型、浮點型、字符型還是結構體類型?數據基本有序還是雜亂無序?數據量,有多大,1000以內還是百萬以上個數?此時,求職者大可以將自己的疑問提出來,問題清楚了,解決方案也自然就出來了。
(2)設計
對于技術性問題,如何才能打動面試官?完成基本功能肯定是必須的,僅此而已嗎?顯然不是,完成基本功能頂多只能算及格水平,要想達到水平,至少還應該考慮多的內容,以排序算法為例:時間是否?空間是否?數據量不大時也許沒有問題,如果是海量數據呢?是否考慮了相關環節,例如數據的“增刪改查”?是否考慮了代碼的可擴展性、安全性、完整性以及魯棒性?如果是網站設計,是否考慮了大規模數據訪問的情況?是否需要考慮了分布式系統架構?是否考慮了開源框架的使用?
(3)偽代碼先行
有時候實際代碼會比較復雜,上手就寫很有可能會漏洞百出、條理混亂,所以,求職者可以首先征求面試官的同意,在編寫實際代碼前,寫一個偽代碼或是畫好流程圖,這樣做往往會讓思路加清晰明了。
切記在寫偽代碼前要告訴面試官,他們很有可能對你產生誤解,認為你只會紙上談兵,實際編碼能力卻不行。只有征得了他們的允許,方可先寫偽代碼。
(4)控制節奏
如果是算法設計題,面試官都會給求職者一個時間限制用以完成設計,一般為20分鐘左右。完成的太慢,會給面試官留下能力不行的印象,但完成的太快,如果不能正確,也會給面試官留下毛手毛腳的印象,速度快當然是好事情,但只有速度,沒有質量,速度快根本就不會面試中加分。所以,編者建議,回答問題的節奏好不要太慢,也不要太快,如果實在是完成的比較快,也不要急于提交給面試官,好能夠利用剩余的時間,認真仔細地去檢查一些邊界情況、異常情況、極性情況等是否也能滿足要求。
(5)規范編碼
回答技術性問題時,多數都是紙上寫代碼,離開了編譯器的幫助,求職者要想讓面試官對自己的代碼一看即懂,除了字跡要工整,不能眉飛色舞以外,好是能夠嚴格遵循編碼規范:函數變量命名、換行縮進、語句嵌套、代碼布局等,同時,代碼設計應該具有完整性,代碼能夠完成基本功能、輸入邊界值能夠得到正確的輸出、對各種不合規范的非法輸入能夠做出合理的錯誤處理,否則,寫出的代碼即使無比,面試官也不一定看得懂或是看起來非常費勁,這些對面試成功都是非常不利的。
(6)精心測試
在軟件界,有一句真理:任何軟件都有bug。但不能因為如此,就縱容自己的代碼,允許錯誤百出。尤其是在面試過程中,實現功能也許并不十分困難,困難的是在有限的時間內設計出的算法是否各種異常都得到了有效的處理,是否各種邊界值都在算法設計的范圍內,等等。
測試代碼是讓代碼變得完備的方式之一,也是一名程序員的素質之一。所以,在編寫代碼前,求職者好能夠了解一些基本的測試只是,做一些基本的單元測試,功能測試,邊界測試以及異常測試。
其實,在面試時,求職者往往會存在一種思想誤區,把技術性面試的結果看得太重要了。面試過程中的技術性問題,結果固然重要,但也并非重要的內容,因為面試官看重的不僅僅是終的結果,還包括求職者在解決問題的過程中體現出來的邏輯思維能力以及分析問題的能力。所以,求職者在與面試官的博弈中,要適當地提問,通過提問獲取面試官的反饋信息,并抓住這些有用信息進行輔助思考,從而博得面試官的歡心,進而提高面試的成功率。
上一篇:面試iOS開發,你需要注意什么?
下一篇:企業到底需要什么樣的iOS培訓人才
掃碼匿名提建議
直達CEO信箱