求職故事之程序員
為大家推薦的是一位程序員的求職故事,歡迎閱讀參考。
我曾經(jīng)也參加過一些大大小小的公司筆試、面試,牛掰如阿里百度騰訊,犀利如Google,Mircosoft,盛大研究院,無一例外,均將我秒殺。讓我一度懷疑自己是否是程序員的料,幼小的心靈從那時起,留下了巨大的陰影。當(dāng)然,N次大公司的面試失敗以后,歸結(jié)成兩條經(jīng)驗教訓(xùn):缺乏筆試面試的技巧,非科班出身(實質(zhì)是計算機知識不成體系)。
關(guān)于面試筆試,就六個字:技巧+實力+運氣。
本文只涉及四個字:技巧+實力。當(dāng)然,本文的技巧,不同于一般意義的“技巧”。
面試筆試是需要技巧的
面試是需要技巧的,這一點沒有人否認(rèn)。筆試、面試時有相當(dāng)比例的題目的是跟程序員相關(guān),但又沒那么緊密相關(guān)的東西。比如考察邏輯思維能力、抽象思維能力的題目,大公司尤其注重這一點,感覺有點測試智商的味道。好吧,我承認(rèn),我的智商有時候不夠用。不可否認(rèn)有極個別的聰明人存在,這些天才,思維活躍,面對一些極品難題,他們都能佛擋殺佛。但事實上大部分人的邏輯思維能力,都是通過平時有意識的鍛煉出來的,而不是與生俱來的。
我想說的是:只要你不笨,只要你有意識去鍛煉自己這方面的能力,這個東西其實跟你的知識體系的建立是一樣的,得靠積累。如果你沒事只知道刷微博,刷朋友圈,你的“智商”也永遠是停留在那個水平。
曾遇到一個面試官問了這么個題目,至今印象深刻,分享給大家,看看自己的腦袋還夠用不。
題目:
給你兩個一模一樣的玻璃球,已知這種玻璃球,從一棟總共有一百層樓的高樓的某一層樓X扔下來,剛好破碎(即在X層以下不會摔碎,在X層以上均會摔碎)。讓你用最少的次數(shù)找出這個臨界樓層。(注意:你只有兩個玻璃球,所以只有兩次蛋碎的機會。并假設(shè),每扔一次球,如果球沒碎,它的堅硬程度不發(fā)生改變)。
最差答案:
一種最差的解法如下:從第一百層樓開始扔玻璃球,如果沒有摔碎,則跑到第99層樓扔,以此類推,最壞的情況是,在第一層樓扔的時候球才摔碎。因此最大需要扔100次才能找出臨界樓層。(這種解法,我們只用了一個玻璃球,另外一個玻璃球還沒用上啊!)
面試筆試是需要實力的
程序員面試筆試,考察的技術(shù)相關(guān)的東西主要有:編程語言、算法、設(shè)計模式、操作系統(tǒng)、項目經(jīng)驗等等;竟υ鷮嵙,面試筆試就有底氣了,如果再多點實際工程經(jīng)驗,那么面試對你來說,就是五個字:那都不是事
廢話說了這么多,進入本文主題,如何用一個月的時間去準(zhǔn)備google的技術(shù)面試??
這個問題已經(jīng)被問過無數(shù)多遍,也被無數(shù)人回答過。我結(jié)合自身的經(jīng)驗教訓(xùn),來梳理總結(jié)一下。
一
1.1過一遍常用的數(shù)據(jù)結(jié)構(gòu):鏈表、二叉樹、堆樹 (Tree+Heap)、(紅黑樹、AVL)(可選)。隊列、堆、棧、hash表。
1.2 研究一下上述數(shù)據(jù)結(jié)構(gòu)在你熟悉的編程語言中是如何實現(xiàn)的。例如,如果你熟悉Java,可以學(xué)習(xí)下HashMap、LinkedHashMap、TreeSet、HashSet等等這些常用數(shù)據(jù)結(jié)構(gòu)的實現(xiàn)。
1.3自己動手編碼實現(xiàn)這些數(shù)據(jù)結(jié)構(gòu),而不是僅僅寫出偽代碼就完事了。
二
2.1過一遍你課堂上學(xué)過的經(jīng)典算法:各種排序算法、圖的`遍歷算法、最短路徑算法等等。
2.2 知道怎么求一個算法的時間復(fù)雜度。
2.3 寫代碼時,有意識的關(guān)注程序的空間復(fù)雜度,這點在實際工作中很有用。因為內(nèi)存很多時候會不夠用。
三
3.1 用你熟悉的編程語言實現(xiàn)第一、第二兩部分。在編碼實現(xiàn)的過程中,試著不借助任何參考資料來完成。
3.2 在完成3.1所說的編碼后,試著從時間、空間兩個維度去優(yōu)化你所寫的程序。
四
練習(xí)面試問題。選擇一本面試相關(guān)的書,例如《Cracking the coding interview》,親手練習(xí)一下書中的題目,在紙上書寫或在IDE中編寫都行。(PS:很多面試官都喜歡讓你在紙上寫程序,所以,有意識的練習(xí)練習(xí)吧,不要太依賴IDE了)。在解答相關(guān)面試題時,注意不斷改進、優(yōu)化你的解法。例如,將時間復(fù)雜度從n*n優(yōu)化到nlogn。
五
練習(xí)在白板上分析、解決問題,并能夠?qū)⒛憬鉀Q問題的思路清晰的表達出來。(這一點要求比較高,尤其對一些“羞射”的程序員們)。在解決某一個給定問題時,對于你給出的解決方案,你得有充分的理由。你為什么選用這種數(shù)據(jù)結(jié)構(gòu),這種算法來解決這個問題。
上述五大點是真的很重要,我自己曾經(jīng)在這上面就犯了眼高手低的錯誤,只親手實現(xiàn)了其中的一部分。在只有一個月時間的情況下,時間安排如下:
1)最多用1.5周的時間完成第一點和第二點。
2 )至少花一周的時間徹底搞懂你尚未明白的問題。
3 )然后剩下的時間,在白板上編碼實現(xiàn)吧
【求職故事之程序員】相關(guān)文章:
求職禮儀故事之電話求職技巧12-15
程序員求職簡歷11-01
程序員求職簡歷范文03-08
程序員求職個人簡歷08-07
程序員求職簡歷表格02-16
程序員求職信封面06-06
求職經(jīng)驗之求職信08-02
求職故事:我的求職故事06-23
程序員求職信英語范文08-03