解決面試問題的最佳方法就是按照一定的方法來解決它。
(1)確保你理解這個問題。你對問題最初的假設可能是錯誤的,或者面試官的解釋可能太簡短或很難完全理解。如果你不理解問題,你就不能證明你的技能。在理解問題前,不要開始解決這個問題。面試官可能會故意模糊一些東西,以判斷你是否可以找到並理解真正的問題。在這種情況下,要求澄清問題是正確的解決方案的重要組成部分。
(2)當你理解了問題之後,嘗試乙個簡單的例子。乙個特殊的例子可能引導出如何解決一般情況下的問題,或將消去任何剩餘的誤解。用乙個例子來開始同樣會展示乙個有條不紊的邏輯思維過程。如果你沒有馬上找到解決方案,例子是特別有用的。
『注意』確保在你開始解決問題前理解它,並從乙個例子開始加深理解。
(3)專注於解決問題的演算法和資料結構。這可能需要很長的時間,需要更多的例子。這是可以預料的。互動在此過程中是很重要的。如果你站在那兒靜靜地盯著白板,面試官沒有辦法知道你是否取得一些進展或根本一無所知。與你的面試官交談,並告訴他你在做什麼。例如,你可能會這樣說:「我不知道我是否可以將資料儲存在乙個陣列中,然後對它們進行排序,但我不認為這樣可以,因為我不能快速查詢陣列中的元素的值。」這能展示你的技能,這是面試中的要點,也可能引發面試官給你提供暗示:「你離問題的答案已經不遠了。你真的需要查詢的元素的值嗎?或者你可以……」
這樣做可能需要很長的時間來解決問題。在找出乙個完整的解決方案前,你可能會忍不住開始編碼。抵制這樣的做法。想想你更願意與哪一類人共事:是那些花很長時間思考然後一次就寫出正確的**,還是那些匆忙地開始解決問題,在編碼時接連地犯錯,並且不知道原因的人。這並不是乙個艱難的決定,是吧?
(4)在找出演算法和實現方案後,向面試官說明你的解決方案。這會在開始編碼前給面試乙個機會以評估你的解決方案。你的面試官可能會說:「聽起來不錯,繼續編寫**吧。」或類似這樣:「這不完全正確,因為在雜湊表中你無法以這種方式查詢元素。」另一種常見的反應是:「這聽起來像是可以解決問題,但有乙個更有效的解決方案。」無論是哪種情況,你都獲得了是繼續編碼還是拐回去修改演算法的有用資訊。
(5)當你在編碼時,解釋你在做什麼。例如,你可以說:「在這裡,我把陣列元素全部初始化為零。」讓面試官更容易理解你的**。
『注意』在開始編碼之前和編碼過程中,都要向你的面試官解釋你在做什麼。要多說話!
(6)如果有需要就提問。如果你問的問題是通過查詢參考手冊就可以找到答案,一般不會因此失分。你顯然不能問這樣的問題,例如,「我該如何解決這個問題?」但是如果問這樣的問題,「我不記得了——我該使用怎樣的格式化字串,才能列印出本地化的日期。」雖然知道這些東西會更好,但是問這類問題也無傷大雅。
(7)在你寫出解決問題的**之後,立即用乙個例子來跟蹤**的執行過程,以驗證**的工作原理。這一步清楚地表明你的**是正確的,至少這個例子是這樣的。這也說明了乙個合乎邏輯的思維過程和你檢查**和尋找錯誤的意圖。這個示例也可以幫助你找到解決方案中的小錯誤。
(8)請一定要用各種出錯情況和特殊情況來檢查你的**,特別是邊界條件。程式設計師可能會忽略許多出錯情況和特殊情況。在面試中忘記這些情況預示著你在工作中也可能會忘記。如果時間不允許進行廣泛檢查,至少要說明,你應該檢查此類錯誤。包含出錯情況和特殊情況可以給面試官留下深刻印象,並幫助你正確地解決問題。
『注意』嘗試乙個例子,並且檢查所有的出錯情況和特殊情況。
當您嘗試了乙個例子,並對**的正確感到滿意之後,面試官會問你一些關於你寫下的**的問題。這些問題往往側重於執行時間、不同的實現和複雜度。如果你的面試官沒有問你這些問題,你應該主動提出這些資訊,表明你認識到了這些問題。例如,你可以說:「這個實現具有線性執行時間,這可能是最好的,因為我需要檢查所有的輸入值。動態記憶體分配會略微影響它的執行速度,使用遞迴也會有一些開銷。」
以上內容摘自《程式設計師面試攻略(原書第3版)》
原文書名
:programminginterviews exposed: secrets to landing your next job, third edition
作者:(美) johnmongan eric giguère noah kindler 著
譯者:李秉義 譯
書號:978-7-111-44434-3
定價:59.00元
出版社:機械工業出版社
一本影響了全球數百萬程式設計師的求職面試寶典,amazon超級暢銷書,持續銷售近10年
授人以魚,全面講解程式設計師面試時需要掌握的各種程式設計必備知識和技巧;授人以漁,針對來自全球頂尖it企業的極具代表性的面試題給出了解答思路,並揭示了這些企業的面試過程
面試遇到的問題
1.mysql的乙個表,以a.b.c三個字段作為聯合索引,如果以其中的乙個字段作為查詢條件,會不會用到索引 如果以a 也就是聯合索引的第乙個索引 作為查詢條件 則會用到索引 如果以b或者c作為查詢條件 則不會用到索引 2.玩家登陸的具體流程 客戶端首先連線loginserver 從loginserv...
面試遇到的問題
1.grep 如何遞迴地在乙個目錄裡面搜尋所需的字串。2.判斷二叉樹是否對稱。3.c 虛表 4.epoll 和 select 的區別 5.mysql 索引,事務,隔離級別 6.c 多重繼承如果兩個基類有相同名字的成員函式 變數如何處理二義性。c 裡面是否可以把全部的成員函式都設定成virtual,會...
windows程式設計中遇到的問題及解決
在qt的學習過程中我們總是離不開演算法的思想,我這次在解決用qt編寫專案時就遇到了自己已知思想無法迅速解決的問題,於是我上網查詢了關於最短路徑的問題,以下就是我對最短路徑演算法的總結。傑斯特爾拉演算法是典型的最短路徑演算法,用於計算乙個節點到其他所有節點的最短路徑。主要特點是以起始點為中心向外層層擴...