程序員的面試小技巧總結
總結是把一定階段內的有關(guān)情況分析研究,做出有指導性結論的書(shū)面材料,它有助于我們尋找工作和事物發(fā)展的規律,從而掌握并運用這些規律,因此好好準備一份總結吧?偨Y怎么寫(xiě)才不會(huì )流于形式呢?以下是小編收集整理的程序員的面試小技巧總結,歡迎閱讀與收藏。
在深入代碼之前,大多數面試官喜歡聊聊你的背景。他們想知道:
1、你對編碼認知。你是否知道如何編寫(xiě)好代碼?
2、個(gè)人能力/領(lǐng)導力。你是否經(jīng)歷過(guò)整個(gè)工作流程?你是否修復過(guò)并不怎么正確的東西,即使你并不需要這么去做?
3、溝通。和你交流技術(shù)問(wèn)題是有用的還是痛苦的?
你應該至少說(shuō)明以下中的一個(gè):
1、你曾解決的一個(gè)有趣的技術(shù)問(wèn)題
2、你曾克服的一個(gè)人際沖突
3、顯示領(lǐng)導力或個(gè)人能力的例子
4、你曾在以往項目中做出的貢獻
5、最喜歡的語(yǔ)言的一些瑣事,對這種語(yǔ)言你做了什么,以及你不喜歡它哪里
6、有關(guān)公司產(chǎn)品/業(yè)務(wù)的問(wèn)題
7、關(guān)于該公司的工程策略(測試,Scrum,等等)
熱愛(ài)技術(shù)。表達你對你所做的一切感到驕傲,你對自己的選擇充滿(mǎn)自信,你對語(yǔ)言和工作流有著(zhù)自己的看法。
溝通
涉及到編碼問(wèn)題的時(shí)候,溝通是關(guān)鍵。一個(gè)在工作時(shí)需要幫助卻能和人正確溝通的求職者比那些能輕松解決問(wèn)題的求職者甚至更好。
了解這是哪種問(wèn)題。有兩種類(lèi)型的問(wèn)題:
1、編碼。面試官希望你能針對問(wèn)題寫(xiě)出簡(jiǎn)潔高效的代碼。
2、閑聊。面試官希望能和你聊一聊。話(huà)題通常是(1)高水平的系統設計(“如何克隆Twitter?”)或(2)瑣事(“Javascript中的hoisting是什么意思?”)。有時(shí)候這些瑣事中也會(huì )引入“實(shí)際”問(wèn)題,例如,“如何迅速排序整數列?好的,如果不是整數,是其他類(lèi)型的呢…… ”。
如果你開(kāi)始編寫(xiě)代碼,并且面試官并不想多說(shuō)廢話(huà),只想盡快過(guò)渡到“實(shí)際”問(wèn)題,那么如果你羅哩叭嗦太多的話(huà),她可能會(huì )覺(jué)得厭煩。不妨直接問(wèn),“是不是為這個(gè)問(wèn)題寫(xiě)代碼?”
讓人感覺(jué)你有團隊精神。面試官想知道和你一起工作是什么感覺(jué),會(huì )有什么問(wèn)題,所以要讓他們看到你的團隊合作性。使用“我們”來(lái)代替“我”,例如,“如果那個(gè)時(shí)候我們做廣度優(yōu)先搜索的話(huà),就能及時(shí)/準時(shí)得到解決方案!比绻屇氵x擇在紙上還是在白板上編碼的話(huà),選白板。這樣,你就可以接近面試官,直接面對他提出的問(wèn)題(而不是和她在桌子兩邊遙遙相望)。
把自己的想法大聲說(shuō)出來(lái)。不是開(kāi)玩笑,比如說(shuō):“我不知道這樣做是否有效——但請讓我試一試!比绻悴恢涝趺崔k,不知道這個(gè)問(wèn)題該如何解決,那么就說(shuō)一說(shuō)你現在的想法。說(shuō)一說(shuō)你認為怎么做可能會(huì )有效。說(shuō)一說(shuō)你認為哪些會(huì )有用,以及為什么沒(méi)用的原因。這同樣適用于瑣碎的閑聊問(wèn)題。當面試官要求你解釋Javascript閉包的時(shí)候,“這與范圍有關(guān),不妨把它放到一個(gè)函數中”可能會(huì )讓你得到90%的分數。
不知為不知。如果正在談?wù)摰脑?huà)題(例如,具體的語(yǔ)言事務(wù),具體的瑣事,運行時(shí)分析)的確是你不曾涉獵的內容,那么不要不懂裝懂。相反,你可以直接說(shuō):“我不知道,但我猜$thing,因為……”,因為后面可以通過(guò)分析排除其他選項,還可以拿其他語(yǔ)言或問(wèn)題做例子。
說(shuō)話(huà)不要不經(jīng)大腦。不要自信地將答案脫口而出。如果是正確的,那么你還是需要時(shí)間來(lái)考慮如何解釋?zhuān)绻清e的,那會(huì )顯得你沖動(dòng)魯莽。你不是在和人比速度,而且你這么做更有可能因為打斷她的話(huà)或者妄下結論而惹惱她。
擺脫困境
有時(shí)候你會(huì )陷入僵局。放松。這并不意味著(zhù)你已經(jīng)失敗了。請記住,面試官通常更在乎的,是你能否巧妙地從幾個(gè)不同的角度去揭示問(wèn)題,而不是一根筋走到底地堅持正確答案。
畫(huà)圖。不要浪費時(shí)間在腦袋里思考,可以畫(huà)到板上。畫(huà)出幾個(gè)不同的測試輸入。畫(huà)出你如何手動(dòng)如愿得到所需的輸出。然后想想將你的方法轉換成代碼。
解決問(wèn)題的簡(jiǎn)單版本。不知道如何找到集合中的第4大條目?那么想想如何找到第1大條目,然后試試能否沿用這種方法。
寫(xiě)一個(gè)簡(jiǎn)潔低效的解決方案,然后對其進(jìn)行優(yōu)化。竭盡全力。盡一切可能的方法得到某種答案。
講講自己的思路。講一講你知道什么。講一講你認為什么可能工作以及為什么無(wú)效的原因。你可能突然會(huì )意識到它實(shí)際上是可以工作的,或修改版本是有效的。也有可能,你會(huì )得到提示。
等待提示。不要用期待的眼光盯著(zhù)面試官,但可以有短暫的.“思考”時(shí)間——面試官或許已經(jīng)決定給你個(gè)提示也說(shuō)不定呢,等待她的提示以免打斷她。
考慮空間和運行時(shí)的界限。如果你不知道你是否可以?xún)?yōu)化解決方案,那么就說(shuō)出來(lái)。例如:
“我必須至少看看所有的條目,我做不到時(shí)間復雜度比O(n)還好的了!
“蠻力方法才能檢驗所有的可能性!
“答案將包含n^2數據項,所以我必須至少花費N^2的時(shí)間!
寫(xiě)下你的思路想法
憑空地想很容易自我矛盾。把你的想法寫(xiě)下來(lái),然后再去考慮細節。
調用幫助函數,繼續前進(jìn)。如果你不能或多或少地馬上想出如何實(shí)現算法,那就跳過(guò)它。寫(xiě)一個(gè)命名合理的調用函數,例如:“this will do X”,然后繼續下一步驟。如果幫助函數非常微不足道,你甚至可以將它忽略。
不要擔心語(yǔ)法。不妨一笑而過(guò)。如果你非要考慮語(yǔ)法,那就還原到英語(yǔ)。只要向面試官說(shuō)明稍后會(huì )回來(lái)整理即可。
預備足夠的空間。你可能后面會(huì )想要在代碼行之間添加代碼或筆記。從白板的頂部開(kāi)始寫(xiě),并在每一行之間留一條空白。
最后寫(xiě)一個(gè)重頭檢查的標志。不要擔心你寫(xiě)的for循環(huán)是否應該有“”或“=”。在代碼的最后畫(huà)個(gè)勾選提醒自己最后再檢查一遍。先按自己的思路走。
使用描述性的變量名。想名字需要時(shí)間,但可以防止你忘記自己寫(xiě)某段代碼的目的。使用names_to_phone_nums_map而不是nums。在名稱(chēng)中說(shuō)明類(lèi)型。返回布爾值的函數應該以“is_ *”,保存列表的Vars應該以“s”結尾。標準化很有意義。
完成之后的整理
瀏覽解決方案,大聲地講,輸入一個(gè)例子。當程序運行時(shí)記錄下變量保存的值——如果你只是記在腦子里,不會(huì )讓你贏(yíng)得任何加分。這有助于你發(fā)現bug和消除面試官的困惑。
尋找差一錯誤。你的for循環(huán)是不是應該使用“=”來(lái)代替“”?
測試邊緣情況。措施包括空集合,單項目集合或負數。加分點(diǎn):提一提單元測試!
不要惹人厭煩。有的面試官可能并不在意這些整理步驟。如果你不確定,可以這樣說(shuō),“我通常會(huì )檢測一些邊緣情況——那么我們接下來(lái)是不是做這個(gè)呢?“
實(shí)踐
最后,運行實(shí)踐問(wèn)題是沒(méi)有捷徑的。
好記性不如爛筆頭。對自己誠實(shí)。用筆寫(xiě)可能一開(kāi)始會(huì )讓你覺(jué)得別扭。但是如果你現在就能克服這個(gè)難題,那么當面試的時(shí)候,你就不會(huì )覺(jué)得笨拙和不順手了。
本文中的實(shí)踐問(wèn)題只是提供了每個(gè)面試過(guò)程的線(xiàn)索要點(diǎn),沒(méi)有真正的金科玉律,在真正面試時(shí)還需實(shí)際問(wèn)題實(shí)際解決。最后,祝大家面試成功。
【程序員的面試小技巧總結】相關(guān)文章:
程序員的年底總結11-12
文秘面試技巧09-18
面試題如何回答的面試技巧10-12
英語(yǔ)寫(xiě)作小技巧07-19
程序員年度個(gè)人總結01-06
英文寫(xiě)作實(shí)用小技巧07-19
辦公室文秘面試的技巧09-19
提前招生文秘面試技巧09-18
幼兒教師面試技巧09-09
餐館點(diǎn)菜的四個(gè)小技巧08-08